odt2pdf.sh 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687
  1. #!/bin/bash
  2. # @copyright GPL License 2010 - Vikas Mahajan - http://vikasmahajan.wordpress.com
  3. # @copyright GPL License 2013 - Florian HEnry - florian.henry@open-concept.pro
  4. # @copyright GPL License 2017 - Laurent Destailleur - eldy@users.sourceforge.net
  5. #
  6. # Convert an ODT into a PDF using "jodconverter" or "pyodconverter" or "unoconv" tool.
  7. # Dolibarr variable MAIN_ODT_AS_PDF must be defined
  8. # to value "unoconv" to call unoconv CLI tool after ODT generation.
  9. # or value "pyodconverter" to call DocumentConverter.py after ODT generation.
  10. # or value "jodconverter" to call jodconverter wrapper after ODT generation
  11. # or value "/pathto/jodconverter-cli-file.jar" to call jodconverter java tool without wrapper after ODT generation.
  12. # Dolibarr variable MAIN_DOL_SCRIPTS_ROOT must be defined to path of script directories (otherwise dolibarr will try to guess).
  13. if [ "x$1" == "x" ]
  14. then
  15. echo "Usage: odt2pdf.sh fullfilename [unoconv|jodconverter|pyodconverter|pathtojodconverterjar]"
  16. echo "Example: odt2pdf.sh myfile unoconv"
  17. echo "Example: odt2pdf.sh myfile ~/jodconverter/jodconverter-cli-2.2.2.jar"
  18. exit
  19. fi
  20. # Full patch where soffice is installed
  21. soffice="/usr/bin/soffice"
  22. # Temporary directory (web user must have permission to read/write). You can set here path to your DOL_DATA_ROOT/admin/temp directory for example.
  23. home_java="/tmp"
  24. # Main program
  25. if [ -f "$1.odt" ]
  26. then
  27. if [ "x$2" == "xunoconv" ]
  28. then
  29. # See issue https://github.com/dagwieers/unoconv/issues/87
  30. /usr/bin/unoconv -vvv "$1.odt"
  31. retcode=$?
  32. if [ $retcode -ne 0 ]
  33. then
  34. echo "Error while converting odt to pdf: $retcode"
  35. exit 1
  36. fi
  37. exit 0
  38. fi
  39. nbprocess=$(pgrep -c soffice)
  40. if [ $nbprocess -ne 1 ] # If there is some soffice process running
  41. then
  42. cmd="$soffice --invisible --accept=socket,host=127.0.0.1,port=8100;urp; --nofirststartwizard --headless -env:UserInstallation=file:///$home_java/"
  43. export HOME=$home_java && cd $home_java && $cmd&
  44. retcode=$?
  45. if [ $retcode -ne 0 ]
  46. then
  47. echo "Error running soffice: $retcode"
  48. exit 1
  49. fi
  50. sleep 2
  51. fi
  52. if [ "x$2" == "xjodconverter" ]
  53. then
  54. jodconverter "$1.odt" "$1.pdf"
  55. else
  56. if [ "x$2" == "xpyodconverter" ]
  57. then
  58. python DocumentConverter.py "$1.odt" "$1.pdf"
  59. else
  60. java -jar $2 "$1.odt" "$1.pdf"
  61. fi
  62. fi
  63. retcode=$?
  64. if [ $retcode -ne 0 ]
  65. then
  66. echo "Error while converting odt to pdf: $retcode"
  67. exit 1
  68. fi
  69. sleep 1
  70. else
  71. echo "Error: Odt file $1.odt does not exist"
  72. exit 1
  73. fi