2009-02-01 85 views
40

我有兩個pdf或postscript文件(我可以使用任何一個)。我想要做的是將每個頁面合併到另一個頁面上,以便文檔A的page1將與文檔B的頁面1結合,以生成輸出文檔的頁面1。這不是我想要編程的需要,但這會有所幫助。覆蓋另一個pdf或ps文件

任何想法?

+0

看到一個[類似的問題](http://stackoverflow.com/questions/310441/create-two-pdfs-from-one-ps-file)這裏在Stackoverflow和爲什麼這是困難的。 – 2009-02-02 19:39:51

+1

這與這個問題沒有真正的關係。 OP表示他們可以直接使用PDF。無論如何這並不困難。 – danio 2009-02-04 11:28:46

回答

60

您可以使用命令行工具pdftk使用stampbackground選項對pdf文件執行此操作。

例如

$ pdftk file1.pdf background file2.pdf output combinedfile.pdf 

這隻適用於單頁背景文件。如果您有多個頁面,則可以使用multibackground命令。

18

我通過使用pyPdf,特別是mergePage操作成功地解決了這個問題(僅PDF和Python)。

從文檔:

# add page 4 from input1, but first add a watermark from another pdf: 
page4 = input1.getPage(3) 
watermark = PdfFileReader(file("watermark.pdf", "rb")) 
page4.mergePage(watermark.getPage(0)) 

應該足以讓這個想法。

+0

watermark.mergePage(page4)如果你想在文本後面添加水印。 – Ale 2012-08-02 15:32:25

+0

這就是我開始的 - 我沒有被PyPDF2去合併頁面的長度感到好笑。 PDF頁面內容可以是一個數組:確保它適用於您想要先渲染的頁面,追加您希望渲染的頁面的所有內容流。處理「盒子」是蠕蟲的另一個有趣的... – greybeard 2018-01-25 21:39:38

1

您可以將兩個pdf轉換爲圖像並將其疊加在另一個圖層的頂部。

一個合適的圖形庫,你可以使用這個工作。

上面的水印建議也有很大的潛力,只要你沒有遇到你選擇的語言或圖形/ pdf庫的問題。

+2

這絕對是一種可能的解決方法,但是你會失去文件中任何矢量圖形的可伸縮性。保持圖像模型的更高級內容的過程通常是優選的。 – 2014-04-01 07:46:07

2

如果你只處理postscript,機會是唯一的'pagebreaks'是'showpage'操作符。
在這種情況下,您可以簡單地從第一個文件的開頭抓取postscript數據到'showpage'的第一個實例,對另一個文件執行相同操作,然後連接這兩個postscript文件以創建新頁面。

如果2個文件只有一個頁面,那麼您可能只需加入2個文件即可。

0

我使用了Mac OS工具PDFClerk Pro。我導入了PDF頁面,然後將它們與「合併頁面(堆疊)」選項合併。「它給我留下了深刻的印象。

1

PDFBOX的Java支持覆蓋類,允許合併的PDF文件這種方式。看到這個答案:Watermarking with PDFBox

但是,根據我的經驗,PyPDF2和PDFbox都不可靠,但也許這對別人有幫助。