你想要的是Form XObjects
裏面的PDF文件。從PDF參考:
甲形式x對象是圖形對象(包括路徑 對象,文本對象,並且採樣的圖像)的任何序列的自包含 描述一個PDF內容流。一個表單XObject可能被多次繪製(在多個頁面上或在同一頁面上的多個位置 上繪製),並且每次都會產生相同的結果,在調用時只會將 圖形狀態調整。這個 共享定義不僅在PDF文件中是經濟的,而且在 合適的情況下,PDF消費者應用程序可以優化 的執行方式,通過緩存渲染表單XObject的結果來重複使用 。
許多應用程序添加例如水印到PDF頁面,自動將它們添加爲Form XObjects
。舉個例子,你可以添加背景模板內容到現有的已經具有特定頁面的內容多頁PDF,使用PDFTK:
pdftk multipage.pdf background template.pdf output multipage+.pdf
使用Ghostscript,你應該有模板EPS,然後創建多頁PDF添加了Form XObjects
,然後使用其他方法添加頁面特定的內容。但是,也許可以實現一些聰明的功能,通過使用「僅限Ghostscript」將特定頁面強加給PDF。要創建「準備填充」與模板Form XObject
每一頁上多頁PDF,做這樣的事情:
gs -sDEVICE=pdfwrite -o 100_pages_template.pdf \
-c '[/_objdef {background} /BBox [0 0 595 841] /BP pdfmark
save /showpage {} def
0 0 translate % adjust according to EPS BBox
(template.eps) run
restore
[/EP pdfmark
1 1 100 {
[{background} /SP pdfmark
showpage
} for'
不知道Python的,我認爲這是因爲使用Perl下面的例子一樣簡單。在這裏,我也在每頁上創建100頁PDF和模板:
use strict;
use warnings;
use PDF::API2;
my $pdf = PDF::API2->new();
my $tmpl = PDF::API2->open('template.pdf');
my $xo = $pdf->importPageIntoForm($tmpl, 1);
for (1..100) {
my $page = $pdf->page();
my $gfx = $page->gfx();
$gfx->formimage($xo, 0, 0);
# add page specific content
}
$pdf->saveas('out.pdf');
太棒了!謝謝。 –