在不改变方向的情况下旋转 PDF
Posted
技术标签:
【中文标题】在不改变方向的情况下旋转 PDF【英文标题】:Rotate a PDF without changing orientation 【发布时间】:2013-10-25 13:27:54 【问题描述】:虽然我的问题主题似乎是许多 PDF 操作包和工具的良好支持功能,但我需要明确表示我不想旋转 PDF。
我有一个 PDF,它显示纵向 (A4),尺寸为 WxH 297x210(A4 旋转)。
现在,我需要实现的是,此 PDF 在保留尺寸的同时具有横向。
我不确定这需要我做什么。
如果我使用 Adobe Illustrator 将文档格式更改为所需位置,我还需要旋转内容。如果我将此页面放入设计不佳的 PDF 中,则此页面上的表单域和所有注释仍然是纵向的。
如何旋转它们以匹配新的页面方向?这种任务似乎没有工具支持。
感谢您的支持!
托马斯
【问题讨论】:
我真的不明白你想要什么 :) 还有其他人吗? @maf-soft 在 PDF 中,页面的尺寸由矩形和旋转角度给出。如果您想要 A4 横向,您可以使用 297x210 矩形且不旋转(或 180°)或 210x297 矩形和 90° 或 270° 旋转。 OP 似乎有一种方式,需要另一种方式。我还没有具体方式的要求。因此,不幸的是,我不知道任何工具可以提供帮助。 此问题仅在打印时出现。使用包括 ghostscript 的工具链将 PDF 创建为 PS 文件。生成的 PS 文件直接发送到打印机。在这种情况下,打印机无法识别文件应旋转以适合页面大小,并像纵向一样打印 A4 横向格式并切断右侧三分之一。 【参考方案1】:尚不完全清楚您想要什么,但我认为您可能想要更改查看旋转,反向旋转内容和页面尺寸以进行补偿。
在这种情况下,CPDF command line tools 可以这样做:
cpdf -upright in.pdf -o out.pdf
这将使查看旋转为 0,旋转内容并更改页面尺寸以进行补偿。然后,您可以根据需要更改查看旋转
cpdf -rotate <angle> in.pdf -o out.pdf
(绝对)或
cpdf -rotate-by <angle> in.pdf -o out.pdf
(相对)其中<angle>
是0, 90, 180, 270, 360
。
如果这还不够,你还有
cpdf -rotate-contents <angle> in.pdf -o out.pdf
其中是顺时针旋转的度数,并且
cpdf -mediabox "minx miny width height" in.pdf -o out.pdf
【讨论】:
您好,我不知道您的提议是否能达到同样的目的。我将发布我为解决它所做的工作,但如果这也能解决它,我愿意给你点赞:首先,我在 Adobe Illustrator 中创建了新页面,带有方向横向而不旋转。然后,我将原始 PDF 的内容复制到了横向文件中。为了适应页面,必须旋转内容。然后我在 Adobe Acrobat Pro 中加载了损坏的 PDF,用新创建的页面替换了所有页面。现在所有字段仍然旋转。我使用 javascript 来修复它。 好的,我用你提到的方法尝试了 cpdf。 “直立”似乎可以解决我在下面用 Illustrator 所做的事情!我明天需要对此进行测试,这似乎是使 PDF 达到预期方向的最快方法。这些字段没有被修复,我的 JavaScript 仍然是必需的。【参考方案2】:您可以使用FoxitReader。它是免费的吗?它有一个功能 HOME -> ROTATE VIEW,可以做你想要的。
【讨论】:
正如我所说,旋转 PDF 没有帮助。旋转时,它可以正确打印,但生成的图像现在是纵向的。我只需要改变方向。但是,页面中的所有元素仍然保持旋转并与布局成 90° 角。【参考方案3】:首先我修复了 PDF。
看来, cpdf -upright 也可以解决这个问题。如果由于商业用途而无法使用 cpdf,您可以使用 Adobe Illustrator 所示的手动方法。
cpdf 没有更正 Acrofields 方向,也没有更正 pdf 中的注释。我不得不重新创建注释。可以使用 JavaScript 修复 Acrofields,如下所示。
-
在 Adobe Illustrator 中打开 PDF
对文档的每一页重复 1..n,在以下步骤中当前页为“x”:
在 A4 横向模式下创建一个新文档,确保大小正好是 297x210 (WxH)!
-
在 Illustrator 中打开 PDF 页面 x
使用复制/粘贴功能将第 x 页的所有元素复制到新文档中
使用Object/Transform/Rotate旋转到直角,通常需要-90°或+90°
将旋转的对象放置在页面上以符合您的期望
将文档另存为“page-x.pdf”
关闭 PDF 页面 x
重复下一页直到完成...
然后我在 Acrobat Pro 中使用 PDF JavaScript 修复了 Acrofields。
-
打开 Javascript 控制台。
输入以下脚本:
var box = getPageBox();
var w = box[2] - box[0];
var h = box[1] - box[3];
// left,top right,bottom
// bottom, h-left top, h-right
for(i=0; i<numFields; i++)
var f = getField(getNthFieldName(i));
var orig = f.rect;
f.rect = [orig[3], h-orig[0], orig[1], h-orig[2]];
f.rotation = 0;
要执行,请突出显示脚本并按 ENTER 键,而不是 RETURN。 ENTER 键是键盘上的输入键。这将执行突出显示的 JavaScript。表单域将旋转 +90°,并且应该放置在几乎正确的位置,但至少靠近它们应该在的位置。
浏览所有页面,选择页面上的所有字段,然后将所有字段一起移动到正确的位置。【讨论】:
以上是关于在不改变方向的情况下旋转 PDF的主要内容,如果未能解决你的问题,请参考以下文章