【问题标题】:How do you programmatically - or from CLI - rotate a PDF?您如何以编程方式或从 CLI 旋转 PDF?
【发布时间】:2013-08-24 12:58:48
【问题描述】:

我需要能够以编程方式或从 CLI 顺时针或逆时针旋转 PDF。

我花了相当多的时间研究并尝试使用 GhostScript 旋转 PDF(因为 GS 已因其他原因安装)但无济于事,似乎没有任何旋转结果。

我已经研究过使用 pdftk,但它需要 java 库,我宁愿不在系统上安装 java。

我们甚至研究过自己修改 PDF 文件,并在这方面取得了一些成功,但我们还没有找到适用于所有 PDF 的可靠方法。

所以我的第一选择是利用系统上的现有资源来实现这一点。 我的第二个偏好是尽可能对现有系统进行一些修改以实现这一目标。

有问题的服务器使用带有 PHP 5.2 的 Linux (OpenSuse 11),我安装了 Ghostscript 9.0。

任何建议将不胜感激。

【问题讨论】:

    标签: linux pdf ghostscript suse


    【解决方案1】:

    您可以使用pdfpages LaTeX 包

    \documentclass{article}
    \usepackage{pdfpages}
    
    \begin{document}
        \includepdf[angle=45]{document.pdf}
    \end{document}
    

    上面的 LaTeX 文档,通过 pdflatex 编译,生成一个旋转 45 度的文档。

    还有诸如 pdfjam 之类的工具(pdfpages 的包装器)可以直接从命令行使用:

    $ pdfjam --suffix rotated45 --angle 45 --fitpaper true document.pdf
    

    【讨论】:

    • 我很难让所有的依赖项都排队尝试这个。是否有一个好的存储库我可以指出来安装它?
    • 我用zypper in texlive-latex安装了latex,然后安装了pdfjam的RPM。现在正在从 CLI 轮换 PDF。谢谢!
    • 要在基于 Ubuntu/Debain 的 Linux 上安装 pdfjam,请运行 sudo apt-get install texlive-extra-utils
    【解决方案2】:

    如果您可以使用ImageMagick,可以使用此方法。

    例子:

    $ convert originalfile.pdf -rotate <cw_angle_degrees> newfile.pdf

    但请注意,由于这是基于光栅的旋转,因此(通常)会明显降低质量并增加文件大小。

    【讨论】:

    • 谢谢。是的,ImageMagick 已安装在此应用程序中。但是,我确实想避免光栅化旋转。
    • 顺便说一句,这确实有效。但不幸的是,质量根本无法使用。
    【解决方案3】:

    您还没有说您是如何尝试使用 Ghostscript 执行此操作的,但如果您想使用 pdfwrite 设备,您需要设置 /AutoRotatePages=/None 否则它将旋转最后一页,以便大多数真实文本是水平的。

    【讨论】:

    • 我不想深入探讨所有不起作用的排列,我希望真正看过 GS 旋转 PDF 的人能加入进来。但这是众多尝试之一没有取得任何成就:gs -sDEVICE=pdfwrite -sOutputFile="/tmp/output.pdf" -dNOPAUSE -dAutoRotatePages=/None -c "<</Orientation 3>> setpagedevice " -f "/tmp/input.pdf"
    • 还尝试了:gs -sDEVICE=pdfwrite -sOutputFile="/tmp/output.pdf" -dNOPAUSE -dAutoRotatePages=/None -c "90 rotate setpagedevice " -f "/tmp/input.pdf" 以及:gs -sDEVICE=pdfwrite -sOutputFile="/tmp/output.pdf" -dNOPAUSE -dAutoRotatePages=/None -c "90 rotate" -f "/tmp/input.pdf" ... 再举几个例子。
    • /方向是指媒体的方向,而不是页面上的标记。您将需要旋转当前变换矩阵。 > setpagedevice 可能会工作,虽然我还没有尝试过。显然我需要一个示例文件来测试它。
    • <</Install {90 rotate}>> setpagedevice 没有骰子。就样本而言......到处都有大量可用的PDF,它们中的任何一个都应该提供一个很好的样本来使用。只需在谷歌上搜索:filetype:PDF :) 事实上,这是一个很好的合作伙伴:http://www.atmel.com/Images/doc1607.pdf
    • 我真的想要一个你特别有问题的。我可以试试你提到的那个。
    猜你喜欢
    • 1970-01-01
    • 2012-11-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-09
    • 2015-06-21
    • 2013-03-24
    • 2020-06-26
    相关资源
    最近更新 更多