将装订线(装订边距)添加到现有 PDF 文件

将装订线(装订边距)添加到现有 PDF 文件

如何为 PDF 文档添加装订线边距(奇数页和偶数页不同),以便在打印后有空间打孔?我熟悉 Ghostscript 和 Linux 终端,但无法找到满足此特定需求的命令。

目前,有些内容太靠近边缘。我可以在打印对话框中使用缩放功能来为装订留出空间,但这会使尺寸缩小到不必要的程度,并在页面的两侧留下间隙。

只需在页面的两侧(奇数页在左侧,偶数页在右侧)添加一厘米的解决方案就足够了,因为我可以在打印时选择“缩放以适应”功能。

我的问题最初被标记为,但这两个答案都不能解决我的问题。我尝试使用 Briss 和 PDF Scissors,但它们是 PDF 裁剪工具,只能缩小页面,而不能放大。我的问题也不同,因为我需要在奇数页和偶数页上以不同的方式调整大小。原始问题的提问者没有这个要求。

答案1

我打算在有时间的时候将其扩展为正确的答案,但这是我找到的解决方案,以防有人在此期间需要它。这个想法是使用 Ghostscript 并选择-c使用自定义 PostScript 修改 PDF 文件。

首先,您需要知道原始 PDF 的高度和宽度(单位为点)(一英寸有 72 点)。您可以使用工具“pdfinfo”查找此信息:

pdfinfo "inputFile.pdf"

假设您有一份 A4 文档 - A4 为 595pts × 842pts(210mm × 297mm)。

如果您想在 A4 文档中添加 10mm(= 1cm = 28pts)的装订线,则需要向 Ghostscript 提供以下信息:

-dDEVICEHEIGHTPOINTS=842 (A4 高度)
 -dDEVICEWIDTHPOINTS=623 (=595+28,即A4的宽度+要添加的装订线)
   {28 0 translate} {}     ({将奇数页向右移动 28pts 并向上移动 0pts} {对偶数页不执行任何操作})

注意:指定增加的宽度会在页面的右侧增加空间,因此只需要翻译奇数页 - 偶数页已经正确布局。

以下是 Linux 的完整命令:

gs -q -sDEVICE=pdfwrite -dBATCH -dNOPAUSE -sOutputFile=outputFile.pdf \
  -dDEVICEWIDTHPOINTS=623 -dDEVICEHEIGHTPOINTS=842 -dFIXEDMEDIA \
  -c "<< /CurrPageNum 1 def /Install { /CurrPageNum CurrPageNum 1 add def
   CurrPageNum 2 mod 1 eq {28 0 translate} {} ifelse } bind  >> setpagedevice" \
  -f "inputFile.pdf"

注意:此命令使 PDF 比 A4 宽 1 厘米。如果您随后在 A4 上打印,所有内容都会缩小以适应,并且装订线实际上会略小于 1 厘米(它将是 9.5 毫米)。如果这还不够好,那么您将不得不做一些代数运算来获得正确的偏移量。在这种情况下,它将是 29.8pts,而不是 28pts,以获得 10.0 毫米的打印装订线(您还需要设置-dDEVICEWIDTHPOINTS=624.8)。但是,如果装订线小于 ~2 厘米,那么可能不值得进行计算,尤其是考虑到打印和纸张尺寸的公差。

答案2

我想保持文本的大小不变,只将其移到一边。HullCityFan 的回答实现这一点,假设你的边距足够大,以使文本不会溢出:

$cmd = "<< /CurrPageNum 1 def /Install { /CurrPageNum CurrPageNum 1 add def CurrPageNum 2 mod 0 eq {-20 0 translate} {20 0 translate} ifelse } bind  >> setpagedevice"
    
gs -q -sDEVICE=pdfwrite -dBATCH -dNOPAUSE "-sOutputFile=$output" `
    -dDEVICEWIDTHPOINTS='594.96' -dDEVICEHEIGHTPOINTS='841.92' `
    -dFIXEDMEDIA -c $cmd -f ./path_to_file

页面大小为 A4 – 如果您的 PDF 大小不同,请相应修改尺寸。要改变边距大小,请更改PostScript 代码片段中的20和值。-20

相关内容