Pro*_*aos 2 pdf printing slideshow
我有一个 PDF 文档(幻灯片),其中带有用笔进行的注释。对于讲义,我想以 4 对 1 的方式打印它们,因此当然包括注释。
StackOverflow 上有一些解决方案解释了如何实现这种 4 对 1 打印输出,但默认情况下这些解决方案不保留注释。这里的问题似乎是注释位于 PDF 的不同层上,在这些将多个页面合二为一的标准转换中忽略了这一点。
因此,问题是如何在不忽略/丢弃注释的情况下完成这种“多页打印”。
说明适用于:
Ubuntu 21.04
pdfjam 3.03
GPL Ghostscript 9.53.3 (2020-10-01)
Run Code Online (Sandbox Code Playgroud)
我在找到解决方案后创建了这个问题——为了让其他人更容易(因为我发现的一些命令已经过时等)
找到解决方案的关键是知道“保留”注释被称为“扁平化”,这实质上是将注释层放入“标准”层中。
因此,我们分为三个步骤:
pdf2ps -q -sOutputFile=- input.pdf | ps2pdf - out-flat.pdf
pdfjam --nup 2x2 out-flat.pdf --outfile out-4on1.pdf --landscape
对我来说,第 1 步生成的 PDF 比原始文件大得多,因此替代的第三步可能是压缩:
gs -sDEVICE=pdfwrite -dPDFSETTINGS=/ebook -q -o out-4on1-compressed.pdf out-4on1.pdf
请注意,对于压缩,您可以选择多种压缩率,此处选择的一种(电子书)最适合我的目的。更多详情如下。
由于我必须定期执行此操作,因此我为此创建了一个方便的脚本。希望它对其他人也有帮助!
#!/bin/sh
# argument 1: input filename
# argument 2: compression rate (optional)
# remove file ending to be able chaning the filename
filename=$(basename -- "$1")
extension="${filename##*.}"
prefix="${filename%.*}"
# compile the annotations inte the main layer(s)
pdf2ps -q -sOutputFile=- $1 | ps2pdf - $prefix-flattened.pdf
# put 4 slides into one per page, landscape mode
pdfjam --nup 2x2 $prefix-flattened.pdf --outfile $prefix-4on1-largeFile.pdf --landscape
# compress
gs -sDEVICE=pdfwrite -dPDFSETTINGS=/${2:-ebook} -q -o $prefix-4on1.pdf $prefix-4on1-largeFile.pdf
# delete intermediate files
rm ./$prefix-flattened.pdf
rm ./$prefix-4on1-largeFile.pdf
Run Code Online (Sandbox Code Playgroud)
不要忘记使脚本文件可执行(例如通过chmod +x 4on1-script.sh
)。该脚本删除所有中间文件。它还创建了一个有用的文件名,为此需要“识别”文件的前缀。它的第一个参数是输入文件名。它的第二个参数是可选的,决定了压缩质量。默认值为电子书,其他值为:
如果您喜欢此解决方案,请考虑也喜欢我基于此解决方案的解决方案:
归档时间: |
|
查看次数: |
152 次 |
最近记录: |