使用latex等生成pdf格式的文件时,若其中包含过多的高清图片,会导致PDF文件过大,不便于传输和存储。特别是论文投稿时候会对pdf大小有一定要求,这里介绍几种在linux平台下压缩PDF文件的工具。linux下pdf编辑工具convert等命令能够实现图片转pdf,pdf压缩、合并、拆分、旋转、加密,等

ImageMagick安装

sudo apt-get install imagemagick

修改分辨率

可强制修改分辨率,注意数字之间是个小写的字母x,不是乘号

convert -resize 720x1280! in.jpg out720x1280.jpg

调整图像大小

缩减图像为原来的50%x50%,

convert -sample 50%x50% in.jpg out.jpg

压缩图像

压缩图像大小

convert antialias -quality 80 压缩质量为80%

裁剪

convert in.jpg -crop wxh+dx+dy out.jpg

格式转换

  • 通用格式之间转换
convert in.jpg  out.png
convert in.gif  out.bmp
convert -quality100-antialias -density96-transparent white -trim in.pdf out.png

当图片转pdf出错时候参考最后一条

vim /etc/ImageMagick-6/policy.xml
<policy domain="coder" rights="none" pattern="PDF" />

change none to write

  • 将彩色图像 RGB 转换为灰度图像 Gray
convert color1.png -colorspace Gray gray1.png

批量格式转换与合并

for i in *.jpeg; do convert $i $i.pdf; done

pdfunite *.pdf merged.pdf

旋转图像

顺时针旋转270度

convert -rotate 270 in.jpg out.jpg

插入文字

convert -pointsize 28 -draw 'text 700,550 "1986" ' 1996.jpg bb.jpg

  • convert 可使用字体,查看

convert -list font | grep "Italic"

  • 然后,在图像的10,80 位置采用24磅的全黑Helvetica字体写上 Hello, World!

convert -fill black -pointsize 24 -font helvetica -draw 'text 10,80 "Hello, World!"' hello.png helloworld.png

  • 给图片添加标注

convert -font Ubuntu-Bold-Italic -pointsize 20 -draw "text 110 210 '(a)'" 2.png new2.png

拼接图像

多张图片拼图在一起

montage 1.png -geometry +0+20 new1.png

背景透明

convert 杨老师电子签名.jpg y.png
convert y.png -fuzz 10% -transparent white test.png

查看图片信息

identify 2.png

Ref

制作gif动画

convert -delay 80 *.jpg -loop 0 test.gif

  1. -delay 120 : The GIF animation speed (Ref
  2. -loop 0 : Infinite loops of the animation.

pdf 操作

压缩 pdf

使用latex等生成pdf格式的文件时,若其中包含过多的高清图片,会导致PDF文件过大,不便于传输和存储。特别是论文投稿时候会对pdf大小有一定要求,这里介绍几种在linux平台下压缩PDF文件的工具.

Install on Debian/Ubuntu

sudo apt install ghostscript

Install on Archlinux

sudo pacman -S ghostscript

压缩命令

gs -sDEVICE=pdfwrite -dCompatibilityLevel=1.4 -dPDFSETTINGS=/prepress -dNOPAUSE -dQUIET -dBATCH -sOutputFile=compressed_PDF_file.pdf input_PDF_file.pdf

在上面的命令中,您需要设置源文件和压缩后文件的正确路径。

  • /prepress(默认) 高质量 (300 dpi) 但文件较大
  • /ebook 中质量 (150 dpi) 适中的文件大小
  • /screen 低质量 (72 dpi) 但输出文件较小
    参考文献:insidentally

合并PDF

pdfunite

pdfunitePoppler 提供的一个工具,一般系统都已经安装了 Poppler,所以这个工具在 Linux 下是很常见的。

pdfunite input1.pdf input2.pdf input3.pdf output.pdf

cpdf命令行工具

cpdf 全称是 Coherent PDF Command Line Tools,是一个强大的 PDF 处理工具。PDF 合并只是它的一个功能之一。

cpdf input1.pdf input2.pdf -o output.pdf

pdfjam

如果你安装了 TeXLive,并且安装了 pdfpage 包,则其中包含了 pdfjam 工具。

pdfjam input1.pdf input2.pdf input3.pdf -o output.pdf

该命令的选项很多,可以通过 pdfjam --help 查看。

pdfjoinpdfjam 的一个封装,也可以直接使用: pdfjoin a.pdf b.pdf

拆分pdf

pdftk工具

  • 合并 PDF;
  • 分割 PDF 页面;
  • 旋转 PDF 页面;
  • PDF 带密码访问;
  • PDF 填加密码;
  • 用 X/FDF 填写 PDF 表格;
  • 从 PDF 表格中生成 PDF Data Stencils;
  • 加背景水印或前景印章;
  • 报告 PDF Metrics,书签和元数据;
  • 增加 / 更新 PDF 书签或元数据;
  • 给 PDF 页面或文档加附件;
  • 解压 PDF 附件;
  • 分解 PDF 文档为多个单页;
  • 解压缩和重压缩页面流;
  • 修复受损的 PDF 文档;

pdftk 是专门用于处理 PDF 文档的一套工具。在大多数发行版中都可以直接安装使用。

提取页面

提取1-15页为一个文件

pdftk input.pdf cat 1-15 output new.pdf

提取第1至3,第5,第6至10页,并合并为一个pdf文件

pdftk input.pdf cat 1-3 5 6-10 output combined.pdf

写成工具

#!/bin/bash
# 提取指定页码pdf
#
if [ $# -lt 2 ]; then
  echo "Usage: sh $0 para1 para2 para3" 
  echo "e.g. : sh $0 ori.pdf 4-12 out.pdf"
  exit 1
fi
pdftk $1 cat $2 output $3

合并页面

合并多个pdf为一个文件

pdftk input1.pdf input2.pdf input3.pdf cat output comined.pdf

按照通配符,合并大量PDF文件

pdftk *.pdf cat output combined.pdf

拆分页面

拆分PDF的每一页为一个新文件 并按照指定格式设定文件名

pdftk input.pdf burst output new_%d.pdf

将一个 PDF 文档分割成一页一个文档:

pdftk in.pdf burst

旋转pdf

按180°旋转所有页面

pdftk input.pdf cat 1-endsouth output output.pdf

顺时针90°旋转第三页,其他页不变

pdftk input.pdf cat 1-2 3east 4-end output output.pdf

加密pdf

pdftk secured.pdf input_pw foopass output unsecured.pdf

压缩 PDF

pdftk mydoc.pdf output mydoc.clear.pdf compress

参考文献:

  1. linux合并pdf
  2. pdftk 的选项很多,用法复杂,可以参考 PDF 合并和分割工具—PDFtk
  3. blog.kelu.org
  4. pdf工具pdftk主页 REF
  5. 中文使用1 REF
  6. 中文链接2 REF

压缩 pdf

使用latex等生成pdf格式的文件时,若其中包含过多的高清图片,会导致PDF文件过大,不便于传输和存储。特别是论文投稿时候会对pdf大小有一定要求,这里介绍几种在linux平台下压缩PDF文件的工具.

Ghostscript

Install on Debian/Ubuntu

sudo apt install ghostscript

Install on Archlinux

sudo pacman -S ghostscript

压缩命令

gs -sDEVICE=pdfwrite -dCompatibilityLevel=1.4 -dPDFSETTINGS=/prepress -dNOPAUSE -dQUIET -dBATCH -sOutputFile=compressed_PDF_file.pdf input_PDF_file.pdf

在上面的命令中,您需要设置源文件和压缩后文件的正确路径。

  • /prepress(默认) 高质量 (300 dpi) 但文件较大
  • /ebook 中质量 (150 dpi) 适中的文件大小
  • /screen 低质量 (72 dpi) 但输出文件较小
    参考文献:insidentally
#!/bin/bash
if [ $# -lt 2 ]; then
  echo "Usage: sh $0 para1 para2"
  echo " "
  echo "e.g. : "
  echo "m.split.compress.pdf.sh out.pdf input.pdf"
  exit 1
fi

gs -sDEVICE=pdfwrite -dCompatibilityLevel=1.4 -dPDFSETTINGS=/screen -dNOPAUSE -dQUIET -dBATCH -sOutputFile=$1 "$2"
echo " "
echo "finish compressed as $1.pdf"

合并PDF

pdfunite

pdfunitePoppler 提供的一个工具,一般系统都已经安装了 Poppler,所以这个工具在 Linux 下是很常见的。

pdfunite input1.pdf input2.pdf input3.pdf output.pdf

cpdf命令行工具

cpdf 全称是 Coherent PDF Command Line Tools,是一个强大的 PDF 处理工具。PDF 合并只是它的一个功能之一。

cpdf input1.pdf input2.pdf -o output.pdf

pdfjam

如果你安装了 TeXLive,并且安装了 pdfpage 包,则其中包含了 pdfjam 工具。

pdfjam input1.pdf input2.pdf input3.pdf -o output.pdf

该命令的选项很多,可以通过 pdfjam --help 查看。

pdfjoinpdfjam 的一个封装,也可以直接使用: pdfjoin a.pdf b.pdf

拆分pdf

pdftk工具

  • 合并 PDF;
  • 分割 PDF 页面;
  • 旋转 PDF 页面;
  • PDF 带密码访问;
  • PDF 填加密码;
  • 用 X/FDF 填写 PDF 表格;
  • 从 PDF 表格中生成 PDF Data Stencils;
  • 加背景水印或前景印章;
  • 报告 PDF Metrics,书签和元数据;
  • 增加 / 更新 PDF 书签或元数据;
  • 给 PDF 页面或文档加附件;
  • 解压 PDF 附件;
  • 分解 PDF 文档为多个单页;
  • 解压缩和重压缩页面流;
  • 修复受损的 PDF 文档;

pdftk 是专门用于处理 PDF 文档的一套工具。在大多数发行版中都可以直接安装使用。

提取页面

提取1-15页为一个文件

pdftk input.pdf cat 1-15 output new.pdf

提取第1至3,第5,第6至10页,并合并为一个pdf文件

pdftk input.pdf cat 1-3 5 6-10 output combined.pdf

写成工具

#!/bin/bash
# 提取指定页码pdf
#
if [ $# -lt 2 ]; then
  echo "Usage: sh $0 para1 para2 para3" 
  echo "e.g. : sh $0 ori.pdf 4-12 out.pdf"
  exit 1
fi
pdftk $1 cat $2 output $3

合并页面

合并多个pdf为一个文件

pdftk input1.pdf input2.pdf input3.pdf cat output comined.pdf

按照通配符,合并大量PDF文件

pdftk *.pdf cat output combined.pdf

拆分页面

拆分PDF的每一页为一个新文件 并按照指定格式设定文件名

pdftk input.pdf burst output new_%d.pdf

将一个 PDF 文档分割成一页一个文档:

pdftk in.pdf burst

旋转pdf

按180°旋转所有页面

pdftk input.pdf cat 1-endsouth output output.pdf

顺时针90°旋转第三页,其他页不变

pdftk input.pdf cat 1-2 3east 4-end output output.pdf

加密pdf

pdftk secured.pdf input_pw foopass output unsecured.pdf

压缩 PDF

pdftk mydoc.pdf output mydoc.clear.pdf compress

参考文献:

  1. linux合并pdf
  2. pdftk 的选项很多,用法复杂,可以参考 PDF 合并和分割工具—PDFtk
  3. blog.kelu.org

pdf转图片

Pdftoppm是一个命令行工具,它可以将PDF文档页面转换为PNG等格式的图片。还可以指定图片的分辨率、比例和裁剪图片。

安装

sudo apt install poppler-utils 

将pdf转换为图片

pdftoppm -<image_format> <pdf_filename> <image_name>

pdftoppm -png La.pdf La

指定范围页面转图片

将文件 a.pdf 的第10页到第15页转换为PNG

pdftoppm -png -f 10 -l 15 a.pdf a

调整转换图片的DPI质量

Pdftoppm默认将PDF页面转换为DPI为150的图片。

如需要调整,使用参数选项 -rx-ry

pdftoppm -png -rx 300 -ry 300 file.pdf file

参考文献: ZHIHU

foxitreader

Downlaod from homepage

安装与卸载

mkdir tmp && mv FoxitReader.enu.setup.2.4.4.0911.x64.run.tar.gz tmp && cd tmp && tar -zxvf FoxitReader.enu.setup.2.4.4.0911.x64.run.tar.gz 
./FoxitReader.enu.setup.2.4.4.0911\(r057d814\).x64.run
# 卸载 foxitreader
% Double click the Uninstaller file in the Foxit Reader installation directory.
cd /home/u/opt/foxitsoftware/foxitreader
Thunar
% ./maintenancetool.sh 

修改

If you want to read all PDF files using adobe acrobat do the following changes,Edit the /etc/gnome/defaults.list file

sudo gedit /etc/gnome/defaults.list

Change the following line

application/pdf=evince.desktop

application/pdf=acroread.desktop

Also add the following lines in the end

application/fdf=acroread.desktop
application/xdp=acroread.desktop
application/xfdf=acroread.desktop
application/pdx=acroread.desktop