上传 一些资料给入境事务处,官网只支持两类文件的上传,JPG,TIF。 大致的规定是DPI > =200, Size < 1M .
结果多次失败,使用Adobe Acrobat Reader DC, Foxit Reader, 以及花钱买的PDFelement都搞不定。只得回到老办法,CLI工具集。
三个工具:1, pdftk,大名鼎鼎, 2, convert, 也是imagick的小命令,是不是也大名鼎鼎?3, 还需要额外 用一个工具 exiftool, 本来是没考虑它的。
先说pdftk. pdftk的功能太強大,我們在此只是使用它的簡單分割功能:
pdftk in_pdf burst output outdir/pg_%04d.pdf
pg%04d.pdf, 批分割後的pdf文件命名是pg_0001.pdf, pg_0002.pdf等。。。
convert 把pdf轉成圖像jpg。-density 300x300指定dpi,然沒什麼卵用好象,所以後面再使用exiftool修改一下meta值, 重新指定DPI
convert -colorspace RGB -interlace none -density 300x300 -quality 100 infile.pdf outfile.jpg
運行exiftool,修改meta值:
exiftool -jfif:Xresolution=300 -jfif:Yresolution=300 filename.jpg
上腳本,把上面的過程打包:
#!/bin/bash
# Script to convert PDF file to JPG images
#
# Dependencies:
# * pdftk
# * imagemagick
PDF=$1
echo "Processing $PDF"
DIR=`basename "$1" .pdf`
mkdir "$DIR"
echo ' Splitting PDF file to pages...'
pdftk "$PDF" burst output "$DIR"/%04d.pdf
pdftk "$PDF" dump_data output "$DIR"/metadata.txt
echo ' Converting pages to JPEG files...'
for i in "$DIR"/*.pdf; do
convert -colorspace RGB -interlace none -density 300x300 -quality 100 "$i" "$DIR"/`basename "$i" .pdf`.jpg
exiftool -jfif:Xresolution=300 -jfif:Yresolution=300 "$DIR"/`basename "$i" .pdf`.jpg
done
echo 'All done'