2013-10-07 217 views
3

說,我現在有一個5頁的PDF,名爲'a.pdf',頁面2和頁面4是空的。另有2頁的PDF文件稱爲「b.pdf」。現在我想要將'b.pdf'的第一頁複製到'a.pdf'的第2頁和'b.pdf'的第2頁複製到'a.pdf'的第4頁。C#iTextsharp替換多頁PDF的頁面

我發現它很難找到任何的例子,我發現這裏提供給他人, http://itextsharp.10939.n7.nabble.com/Replace-Pages-with-ItextSharp-td2956.html 叫「PdfStamper.ReplacePage()」,我想這就是我要找的,但我做了一個簡單的演示,但沒有解決。有人可以爲我檢查嗎?

string _outMergeFile = Server.MapPath("~/11/a.pdf"); 

string file2 = Server.MapPath("~/11/b.pdf"); 
PdfReader readerA = new PdfReader(_outMergeFile); 
PdfReader readerB = new PdfReader(file2); 

PdfStamper cc = new PdfStamper(readerA,new MemoryStream()); 

cc.ReplacePage(readerB, 1, 2); 
cc.ReplacePage(readerB, 2, 4); 
cc.Close(); 

在此先感謝。

============================================== =================================== 感謝Jose的建議。代碼現在可用。我現在提供一個簡單的示例供其他人蔘考。

public void MyFunction() 
{ 
    string _outMergeFile = Server.MapPath("~/11/a.pdf"); 

    string file2 = Server.MapPath("~/11/b.pdf"); 
    PdfReader readerA = new PdfReader(_outMergeFile); 
    PdfReader readerB = new PdfReader(file2); 

    PdfStamper cc = new PdfStamper(readerA, new FileStream(Server.MapPath("~/11/result.pdf"), FileMode.Append)); 

    cc.ReplacePage(readerB, 1, 2); 
    cc.Close(); 
} 
+0

究竟發生了什麼?你是否遇到錯誤或者它不工作? – jose

+0

沒有錯誤彈出,只是不工作,文件沒有改變。我想你是對的,但你能提供一些示例代碼嗎?我只是找不到任何有用的API或示例代碼 – JunglerSens

+0

我已經編輯我的答案,應該做的竅門 – jose

回答

2

好的,我想我已經找到了你的問題。 cc是在內存中創建的,在關閉它之前我沒有看到任何代碼來保存文件的實際更改,因此對內存文件所做的更改將丟失。一種選擇是使用new FileStream()而不是內存流創建它

+0

非常感謝何塞,它適用於我。我也提供了代碼;) – JunglerSens