打印时盖上序列号/贝茨编号

打印时盖上序列号/贝茨编号

我想打印 50 份相同的 16 页文档,但每份上都印有序列号。我正在使用 Ricoh/Lanier 多功能打印机进行打印。现在我打印并装订lpr如下一行:

lpr -P <printer> -# 50 -o StapleLocation=UpperLeft file.pdf

所以我希望结合其他选项可以实现这一目标。

我研究并发现了各种加水印的选项相同的每个文档上的文本,例如“草稿”或“机密”。但我希望每个副本的顶部都有不同的数字水印或印章。

我可以使用 PyPDF 编写一个程序来创建多个文件,每个文件都从源文件开始,并在其上标记自定义文本。但打印 50 个 16 页的文件比打印一个文件 50 次所需的时间要长得多。任何建议表示赞赏。

答案1

在理想的情况下,您应该能够编写一小段由打印机中的解释器执行的 PostScript 来执行此操作,因为该语言中存在实现此目的的所有概念。

PostScript 操作员currentsystemparams可以从打印机检索信息,其中可以包括PageCount,一个整数,即:“自制造以来已成功处理的页数”。它可以用作唯一的序列号,PostScript 代码可以将其添加到页面输出中。

或者,代码可以通过使用startjob操作员“对虚拟机中的对象进行持久更改”,这需要打印机管理员密码。可以将小型非打印作业发送到打印机,以使用此技术初始化全局计数器。然后,稍后的作业就可以访问该信息以进行检索、使用和更新。

不过,当设置多个副本时,这两种技术可能都不起作用,因为 PostScript 将只执行一次以光栅化每个页面,然后将为每个副本打印相同的页面。

引用来自旧的 PostScript 语言参考pdf

答案2

某些打印机具有水印打印选项,您可以将其作为驱动程序选项启用,而无需生成新文档(即打印机中的光栅器仅在页面顶部添加附加水印),但这似乎不是您想要的想要这里。

因此,无论我们在这里做什么(使用 cups 过滤器和 PPD 进行大量修改,或生成文档),您的打印机都必须对 800 页进行光栅化;真的没办法。所以,你的 PyPDF 方法对我来说听起来不错。

(我将 LaTeX 与pdfpages包一起使用\includepdf,类似于

\newcounter{serialnr}{10000}%
\includepdf[pagecommand={\thispagestyle{empty}\arabic{serialnr}]{pdffile.pdf}%
\stepcounter{serialnr}%
\includepdf[pagecommand={\thispagestyle{empty}\arabic{serialnr}]{pdffile.pdf}%

\pgffor使这更容易)

答案3

如果您愿意只在扉页上打印序列号,

  1. 将您的文档拆分为p01.pdfp02-16.pdf
  2. 打印 50 份 p02-16.pdf
  3. 编写一个程序来制作 50 种具有p01.pdf 不同序列号的变体,并打印它们。
  4. 手动洗牌。

如果手动洗牌太耗时,一种变体是编写循环脚本:

do 50 times:
begin
        make a copy of p01.pdf with a unique serial number, and print it
        print p02-16.pdf
end

这可能并不比您的“打印 50 个 16 页文件”解决方案更快。

当然,如果您要双面打印,则需要将文档拆分为p01-02.pdfp03-16.pdf

相关内容