使用 imagemagick 无损旋转 PDF 文件

Lossless rotation of PDF files with imagemagick

我想使用 CLI 工具旋转名为 08-file.pdf 的 351K PDF。我试过了 imagemagick:

convert 08-file.pdf -rotate 90 08-file-rotated.pdf

但原画质:

严重退化:

I've tried adding the -density 300x300 argument,结果是一个2.5M的文件,比原来大了将近一个数量级,浪费很大。

知道如何使用 imagemagick 无损旋转 PDF 文件吗?

请使用-compress lossless选项:

convert -rotate 90 -compress lossless 08-file.pdf 08-file-rotated.pdf

来自文档: https://www.imagemagick.org/script/command-line-options.php#compress

Lossless refers to lossless JPEG, which is only available if the JPEG library has been patched to support it.

另一种选择是使用以下命令:

jhead -cmd "jpegtran -progressive -perfect -rotate 270 &i > &o" Image-0001.jpeg

它会将输出写入临时文件,成功后会覆盖原始文件:

Cmd:jpegtran -progressive -perfect -rotate 270 "Image-0001.jpeg" > "h1xQ6q"

Modified: Image-0001.jpeg

我总是在 converting/altering pdf 文件 imagemagik/convert 中得到不好的结果(分辨率不好,或者文件很大)。使用选项 -compress -density -quality 总是令人沮丧和浪费时间(但我不是专家)。

提案 1:pdftk

所以我推荐pdftk(您可能需要通过apt-get install安装)

尝试:

pdftk  08-file.pdf cat 1-endright output 08-file-rotated.pdf

对于旧版本的 pdftk (v<3) 旋转仅由一个字母表示: N:0,E:90,S:180,W:270,L:-90,R:+90,D:+180。同样的命令是:

pdftk  08-file.pdf cat 1-endR output 08-file-rotated.pdf

来自本站的另一个post,我对语法有一个简短的解释

pdftk input.pdf cat 1-endsouth output output.pdf
#     \_______/     \___/\___/        \________/
#     input file    range  |          output file
#                         direction

你也可以看到https://linux.die.net/man/1/pdftk

编辑 2020:

提案 2:qpdf

我找到了另一个等效的替代方案:qpdf,更容易记住,更强大

QPDF manual

#Syntax (you can rotate only some pages of the document -- see the manual --
qpdf --rotate=[+|-]angle[:page-range]

# Example
qpdf in.pdf out.pdf --rotate=+180

其他值得考虑的选项

pdfjam

PDF 操作工具 (CLI) 如果 pdftk 在您的系统上不可用,请考虑。

pdfjam 看起来很像 pdftk

pdfsam

这是一个使用 GUI(图形用户界面)修改 pdf 文件的工具箱。

代码是开源和多平台的。