Mat*_*att 37 pdf resize ghostscript page-size
我正在尝试缩放PDF,例如A4尺寸小到A4.
这适用于纵向文档.文档正确放大,然后填充添加到顶部.
在横向文档上,不添加填充.因此,文档最终将是A4的正确高度,但不够宽,因为文档方面没有添加填充(正如我所希望的那样).
这是我用它来处理A4肖像文档:
gs \
-sOutputFile=output.pdf \
-sDEVICE=pdfwrite \
-sPAPERSIZE=a4 \
-dCompatibilityLevel=1.4 \
-dNOPAUSE \
-dBATCH \
-dPDFFitPage \
input.pdf
Run Code Online (Sandbox Code Playgroud)
Kur*_*fle 52
你应该添加-dFIXEDMEDIA
开关:
gs \
-o output.pdf \
-sDEVICE=pdfwrite \
-sPAPERSIZE=a4 \
-dFIXEDMEDIA \
-dPDFFitPage \
-dCompatibilityLevel=1.4 \
input.pdf
Run Code Online (Sandbox Code Playgroud)
-dFIXEDMEDIA
如果您需要强制特定纸张/页面/介质尺寸并忽略文档中指定的纸张/页面/介质尺寸,则始终需要.因为PDF始终定义了纸张/页面/介质尺寸(PostScript可能具有或可能没有...).
(我-o ...
的更短并且可以节省一个添加-dBATCH -dNOPAUSE
- 但仅适用于更新版本的Ghostscript.)
首先,感谢发布在这里的每个人.
我有一个名为pdfScale的小脚本,它吸收了这里发布的部分答案.所以我决定回复我的2美分.我正在使用一些Kurt和Tim的答案.更像Tim的.我玩了几天这里,这是我对这里发布的方法的部分结论:
用名称设置纸张尺寸 -sPAPERSIZE
在PS点设置纸张尺寸-dDEVICEWIDTHPOINTS
,-dDEVICEHEIGHTPOINTS
-dDEVICEWIDTH
,-dDEVICEHEIGHT
而不是更长的点数版本,但他们似乎都做同样的事情(都获得积分).因为我的bash脚本已经能够获取源页面大小,并且我喜欢能够设置自定义页面大小的想法,所以我决定专注于以点为单位设置页面大小.我已经在我的脚本中包含了GS纸张尺寸(带有名称和尺寸).所以获得这些信息也很容易.
-dFIXEDMEDIA
如前所述,使用似乎是两种情况都必须使用的.
所以这就是我的方法(以脚本方式)
当我试图修复自动旋转问题时,我发现了另一个Kurt响应.这是关于使用-dAutoRotatePages
.只需复制他的部分答案:
-dAutoRotatePages=/None
- 保留每页的方向;-dAutoRotatePages=/All
- 根据"多数决定"的类型,旋转所有页面(或不旋转);-dAutoRotatePages=/PageByPage
- 单独自动旋转页面.我的脚本默认PageByPage
为可调整.它在我的测试中运作良好.使用-dAutoRotatePages
似乎也减少了预翻页面大小的需要,即使它不是一回事.我保留了两种选择.
我的小应用程序最初是为了缩放PDF而创建的(不改变页面大小).然后我现在添加了一个,另一个或两个的功能.我仍然无法在一次GS通话中完成所有操作.
这就是我要求调整大小,将变量更改为实际值.这适用于具有PageByPage
自动旋转的A4纵向尺寸:
gs \
-q -dNOPAUSE -dBATCH -sDEVICE=pdfwrite -dSAFER \
-dCompatibilityLevel="1.5" -dPDFSETTINGS="/printer" \
-dColorConversionStrategy=/LeaveColorUnchanged \
-dSubsetFonts=true -dEmbedAllFonts=true \
-dDEVICEWIDTHPOINTS=595 -dDEVICEHEIGHTPOINTS=842 \
-dAutoRotatePages='/PageByPage' \
-dFIXEDMEDIA -dPDFFitPage \
-sOutputFile='../myOutputFile.pdf' \
-f '../input.pdf'
Run Code Online (Sandbox Code Playgroud)
请注意,我也在使用-dFIXEDMEDIA
AND -dPDFFitPage
.因为这适合页面,我的脚本的另一部分可能很方便在调整大小后缩放PDF内的内容(特别是如果PDF的比例发生了很大变化).这是我在脚本中调整大小后(在混合模式下)总是运行缩放的原因之一.
关于使用Paper Name时的分数问题,在我将转换从mm /英寸舍入到点之前,我已经发生了这种情况.在我开始围绕它们之后,它们似乎永远是所需要的.看起来很奇怪GS会把这些价值放在一边.
所以我的结论是,困难的部分是找到一个解决方案,在不同的文档上使用不同的大小和方向.我仍然不确定我是否使用了正确的解决方案.但是,通过让用户更改翻转检测和GS自动旋转,我希望至少能够为大多数情况提供解决方案.
我还在这个过程中重建了大部分代码,现在很容易阅读.如果您想自己自动执行此类任务,可能需要检查它.当然,缩放/调整PDF大小也很有用:
https://github.com/tavinus/pdfScale
PS:pdfScale起源于这个StackOverflow线程.
您的命令根本不进行任何缩放,它只需要一个PDF文件并将其转换为PDF文件.
我建议你尝试添加-dPDFFitPage,它将缩放PDF文件中的页面以匹配当前页面大小(在这种情况下由-sPAPERSIZE指定).
这通常适用于具有已定义纸张尺寸的打印机,因此可能无法与没有固定页面大小的pdfwrite设备一起使用,但尝试一下.
小智 6
似乎通过指定点的大小而不是使用-dPDFFitPage来强制(最好)强制输出的大小.我得到了分数点大小,这很糟糕.以下是使用按需印刷服务进行A5打印."真正的"A5是420x595点.我发现使用-sPAPERSIZE = a5给出了小数点页面大小,但这可能是因为原始版本很不稳定.
gs \
-o output.pdf \
-sDEVICE=pdfwrite \
-dDEVICEWIDTHPOINTS=419 -dDEVICEHEIGHTPOINTS=595 \
-dFIXEDMEDIA \
-dCompatibilityLevel=1.4 \
input.pdf
Run Code Online (Sandbox Code Playgroud)
为了测试这一点,我发现使用PDFshuffler我能够导出单个页面,然后使用pdfinfo我能够获得这些页面的精确大小.这证实明确使用设备参数有帮助.
归档时间: |
|
查看次数: |
50333 次 |
最近记录: |