Advertisement
cipricus

Ubuntu script to resize pdf in any file manager

Apr 12th, 2013
859
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 10.14 KB | None | 0 0
  1. #! /bin/bash
  2.  
  3. # AUTHOR: (c) Ricardo Ferreira
  4. # NAME: Compress PDF 1.4
  5. # DESCRIPTION: A nice Nautilus script with a GUI to compress and optimize PDF files (adjusted to work outside Nautilus according to instructions provided by danjjl here: http://askubuntu.com/a/280623/47206)
  6. # REQUIRES: ghostscript, poppler-utils, zenity
  7. # LICENSE: GNU GPL v3 (http://www.gnu.org/licenses/gpl.html)
  8. # WEBSITE: https://launchpad.net/compress-pdf
  9.  
  10. # Messages
  11. # English (en-US)
  12. error_nofiles="No file selected."
  13. error_noquality="No optimization level selected."
  14. error_ghostscript="PDF Compress requires the ghostscript package, which is not installed. Please install it and try again."
  15. error_nopdf="The selected file is not a valid PDF archive."
  16. label_filename="Save PDF as..."
  17. label_level="Please choose an optimization level below."
  18. optimization_level="Optimization Level"
  19. level_default="Default"
  20. level_screen="Screen-view only"
  21. level_low="Low Quality"
  22. level_high="High Quality"
  23. level_color="High Quality (Color Preserving)"
  24. job_done="has been successfully compressed"
  25.  
  26. case $LANG in
  27.  
  28. pt* )
  29. # Portuguese (pt-PT)
  30. error_nofiles="Nenhum ficheiro seleccionado."
  31. error_noquality="Nenhum nível de optimização escolhido."
  32. error_ghostscript="O PDF Compress necessita do pacote ghostscript, que não está instalado. Por favor instale-o e tente novamente."
  33. error_nopdf="O ficheiro seleccionado não é um ficheiro PDF válido."
  34. label_filename="Guardar PDF como..."
  35. label_level="Por favor escolha um nível de optimização abaixo."
  36. optimization_level="Nível de Optimização"
  37. level_default="Normal"
  38. level_screen="Visualização no Ecrã"
  39. level_low="Baixa Qualidade"
  40. level_high="Alta Qualidade"
  41. level_color="Alta Qualidade (Preservação de Cores)"
  42. job_done="foi comprimido com sucesso";;
  43.  
  44.  
  45. es* )
  46. # Spanish (es-AR) by Eduardo Battaglia
  47. error_nofiles="Ningún archivo seleccionado."
  48. error_noquality="Ningún nivel de optimización escogido."
  49. error_ghostscript="Compress PDF necesita el paquete ghostscript, que no está instalado. Por favor instálelo e intente nuevamente."
  50. label_filename="Guardar PDF como..."
  51. label_level="Por favor escoja un nivel de optimización debajo."
  52. optimization_level="Nivel de Optimización"
  53. level_default="Normal"
  54. level_screen="Sólo visualización"
  55. level_low="Baja calidad"
  56. level_high="Alta calidad"
  57. level_color="Alta calidad (Preservación de Colores)";;
  58.  
  59.  
  60. cs*)
  61. # Czech (cz-CZ) by Martin Pavlík
  62. error_nofiles="Nebyl vybrán žádný soubor."
  63. error_noquality="Nebyla zvolena úroveň optimalizace."
  64. error_ghostscript="PDF Compress vyžaduje balíček ghostscript, který není nainstalován. Nainstalujte jej prosím a opakujte akci."
  65. label_filename="Uložit PDF jako..."
  66. label_level="Prosím vyberte úroveň optimalizace z níže uvedených."
  67. optimization_level="Úroveň optimalizace"
  68. level_default="Výchozí"
  69. level_screen="Pouze pro čtení na obrazovce"
  70. level_low="Nízká kvalita"
  71. level_high="Vysoká kvalita"
  72. level_color="Vysoká kvalita (se zachováním barev)";;
  73.  
  74.  
  75. fr*)
  76. # French (fr-FR) by Astromb
  77. error_nofiles="Aucun fichier sélectionné"
  78. error_noquality="Aucun niveau d'optimisation sélectionné"
  79. error_ghostscript="PDF Compress a besoin du paquet ghostscript, mais il n'est pas installé. Merci de l'installer et d'essayer à nouveau."
  80. error_nopdf="Le fichier que vous avez sélectionné n'est pas un PDF valide."
  81. label_filename="Sauvegarder le PDF sous..."
  82. label_level="Merci de choisir, ci-dessous, un niveau d'optimisation."
  83. optimization_level="Niveau d'optimisation"
  84. level_default="Défaut"
  85. level_screen="Affichage à l'écran"
  86. level_low="Basse qualité"
  87. level_high="Haute qualité"
  88. level_color="Haute qualité (Couleurs préservées)";;
  89.  
  90. zh_CN*)
  91. # Simplified Chinese (zh_CN) by TualatriX Chou
  92. error_nofiles="没有选择文件。"
  93. error_noquality="没有优化优化等级。"
  94. error_ghostscript="PDF压缩需要ghostscript软件包,但是它没有安装。请先安装然后再重试。"
  95. error_nopdf="选择的文件不是一个有效的PDF文件"
  96. label_filename="另存为PDF..."
  97. label_level="请在下面选择优化等级"
  98. optimization_level="优化等级"
  99. level_default="默认"
  100. level_screen="仅在屏幕上浏览"
  101. level_low="低品质"
  102. level_high="高品质"
  103. level_color="高品质(护色) ";;
  104.  
  105. ar*)
  106. # Arabic (ar) by Mohammed hasan Taha
  107. error_nofiles="لم يتم اختيار ملف"
  108. error_noquality="لم يتم اختيار درجة الضغط"
  109. error_ghostscript="هذا السكربت يحتاج حزمة ghostscript package لذا يرجى تنصيبها ثم اعادة المحاولة"
  110. error_nopdf="الملف الذي تم اختياره ليس ملف pdf صالح"
  111. label_filename="حفظ الملف باسم"
  112. label_level="الرجاء اختيار درجة الضغط"
  113. optimization_level="درجة الضغط"
  114. level_default="افتراضي"
  115. level_screen="عرض للشاشة فقط(الدرجة الأكثر انخفاضا)"
  116. level_low="جودة منخفضة"
  117. level_high="جودة مرتفعة"
  118. level_color="جودة عالية جدا";;
  119.  
  120. ml_IN*)
  121. # Malayalam (ml_IN) by Hrishikesh K B
  122. error_nofiles="ഒരു ഫയലും തിരഞ്ഞെടുത്തിട്ടില്ല."
  123. error_noquality="യാതൊരു ഒപ്റ്റിമൈസേഷന്‍ ലെവലും തിരഞ്ഞെടുത്തിട്ടില്ല."
  124. error_ghostscript="പി ഡി എഫ് കംപ്രസ്സറിന് ഗോസ്റ്റ് സ്ക്രിപ്റ്റ് പാക്കേജ് ആവശ്യമാണ്. ആ പാക്കേജ് ഇന്‍സ്റ്റാള്‍ ചെയ്‌‌ത ശേഷം ദയവായി വീണ്ടും ശ്രമിക്കുക."
  125. error_nopdf="തിരഞ്ഞെടുത്ത ഫയല്‍ സാധുവായ ഒരു പിഡിഎഫ് ആര്‍ച്ചീവ് അല്ല."
  126. label_filename="പിഡിഎഫ് ഇങ്ങിനെ സംരക്ഷിക്കുക..."
  127. label_level="ദയവായി താഴെ നിന്നും ഒരു ഒപ്റ്റിമൈസേഷന്‍ ലെവല്‍ തിരഞ്ഞെടുക്കുക."
  128. optimization_level="ഒപ്റ്റിമൈസേഷന്‍ ലെവല്‍ "
  129. level_default="ഡീഫാള്‍ട്ട്"
  130. level_screen="സ്ക്രീനില്‍ കാണാന്‍ മാത്രം "
  131. level_low="കുറഞ്ഞ നിലവാരം"
  132. level_high="കൂടിയ നിലവാരം "
  133. level_color="കൂടിയ നിലവാരം (നിറം സംരക്ഷിച്ചിട്ടുള്ളത്)"
  134.  
  135. esac
  136.  
  137. VERSION="1.4"
  138. ZENITY=$(which zenity)
  139.  
  140. pdf_file=$(basename "$1")
  141.  
  142. # Check if Ghostscript is installed
  143. GS="/usr/bin/ghostscript"
  144. if [ ! -x $GS ]; then
  145. $ZENITY --error --title="Compress PDF "$VERSION"" --text="$error_ghostscript"
  146. exit 0;
  147. fi
  148.  
  149. # Check if the user has selected any files
  150. if [ -z "$pdf_file" ]; then
  151. $ZENITY --error --title="Compress PDF "$VERSION"" --text="$error_nofiles"
  152. exit 0;
  153. fi
  154.  
  155. # Check if the selected file is a PDF
  156. mimetype=$(file -b -i "$1")
  157. if [ -z "`echo $mimetype | grep -i 'pdf' `" ]; then
  158. $ZENITY --error --title="Compress PDF "$VERSION"" --text="$error_nopdf"
  159. exit 0;
  160. fi
  161.  
  162. # Ask the user to select a compressing format
  163. selected_level=$($ZENITY --list --title="Compress PDF "$VERSION"" --text "$label_level" --radiolist --column "" --column "$optimization_level" TRUE "$level_default" FALSE "$level_screen" FALSE "$level_low" FALSE "$level_high" FALSE "$level_color")
  164. if [ -z "$selected_level" ]; then
  165. $ZENITY --error --title="Compress PDF "$VERSION"" --text="$error_noquality"
  166. exit 0;
  167. fi
  168.  
  169. # Select the optimization level to use
  170. case $selected_level in
  171. "$level_default")
  172. COMP_COMMAND="/default"
  173. ;;
  174. "$level_screen")
  175. COMP_COMMAND="/screen"
  176. ;;
  177. "$level_low")
  178. COMP_COMMAND="/ebook"
  179. ;;
  180. "$level_high")
  181. COMP_COMMAND="/printer"
  182. ;;
  183. "$level_color")
  184. COMP_COMMAND="/prepress"
  185. ;;
  186. esac
  187.  
  188. # Choose output file name
  189. temp_filename=.temp-"$pdf_file"
  190. suggested_filename=compressed-"$pdf_file"
  191. output_filename=$($ZENITY --file-selection --save --confirm-overwrite --filename="$suggested_filename" --title="$label_filename")
  192.  
  193. if [ "$?" = 1 ] ; then
  194. exit 0;
  195. fi
  196.  
  197. # Extract metadata from the original PDF
  198. pdfinfo "$1" | sed -e 's/^ *//;s/ *$//;s/ \{1,\}/ /g' -e 's/^/ \//' -e '/CreationDate/,$d' -e 's/$/)/' -e 's/: / (/' > .pdfmarks
  199. sed -i '1s/^ /[/' .pdfmarks
  200. sed -i '/:)$/d' .pdfmarks
  201. echo " /DOCINFO pdfmark" >> .pdfmarks
  202.  
  203. # Execute ghostscript while showing a progress bar
  204. (echo "0" ;
  205. gs -sDEVICE=pdfwrite -dCompatibilityLevel=1.4 -dPDFSETTINGS=$COMP_COMMAND -dNOPAUSE -dQUIET -dBATCH -sOutputFile="$temp_filename" "$1" .pdfmarks
  206. rm .pdfmarks
  207. echo "100") | (if `$ZENITY --progress --pulsate --auto-close --title="Compress PDF "$VERSION""`;
  208. then
  209. mv -f "$temp_filename" "$output_filename" &
  210. notify-send "Compress PDF" "$pdf_file $job_done"
  211. else
  212. killall gs
  213. rm "$temp_filename"
  214. exit
  215. fi)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement