
我想列印 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
如果您願意只在扉頁上列印序號,
- 將您的文檔拆分為
p01.pdf
和p02-16.pdf
。 - 列印 50 份
p02-16.pdf
。 - 編寫一個程式來製作 50 種具有
p01.pdf
不同序號的變體,並列印它們。 - 手動洗牌。
如果手動洗牌太耗時,一種變體是編寫循環腳本:
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.pdf
和p03-16.pdf
。