2012-10-05 48 views
1

我已到處尋找這個,但無法找到有效的答案。我有2個輸入PDF(只有2)。如何在iTextSharp中添加PDF到另一個PDF?

我想將PDF2添加到PDF1(新頁面)的底部,然後輸出爲PDF3。

任何人都可以提供幫助,如果你提交任何代碼,如果它在vb.net將是偉大的。

回答

2

我會建議使用PdfWriter.GetImportedPage ...

例如:

'' Create your blank PDF 
Dim pdfDoc As Document = New Document(New Rectangle(0, 0, width, height)) 
Dim pdfWriter As PdfWriter = pdfWriter.GetInstance(pdfDoc, New FileStream("yourPDF.pdf", FileMode.OpenOrCreate)) 
pdfDoc.Open() 

'' Create a reader to read in your PDF 2 
Dim bgReader As PdfReader = New PdfReader("pdf2.pdf")) 
Dim bg As PdfImportedPage = pdfWriter.GetImportedPage(bgReader, 1) 


'' add the template beneath content 
pdfWriter.DirectContentUnder.AddTemplate(bg, 0, 0) 

'' now do the same for PDF1 
bgReader = new PdfReader("pdf1.pdf") 
bg = pdfWriter.GetImportedPage(bgReader,1) 
pdfWriter.DirectContentUnder.AddTemplate(bg,0,0) 

'' don't forget to close the doc which will save it 
pdfDoc.Close() 

這幾方面做一個..沒有測試過合作德,但應該不會太遠了:)

編輯:

見,據我所知,你不能真正改變PDF1。您必須創建由PDF1和PDF2組成的PDF3。因此,上面這是我們實際做的。

你可以做的另一件事是加載在形成你的主文檔的基礎的文檔中,然後創建一個你將寫入的PDFStamper。所以假設PDF1是你的主要。現在

Dim reader as PdfReader = New PdfReader("pathToPDF1") 
Dim stamper as new PdfStamper(reader, New FileStream("PathToSaveYourNewPdfTo.pdf"), IO.FileMode.Create) 

,如果你想添加這個模板下,然後調用GetUnderContent閱讀內容PDF2

Dim bgReader As PdfReader = New PdfReader("pdf2.pdf")) 
Dim bg As PdfImportedPage = pdfWriter.GetImportedPage(bgReader, 1) 

。在我的代碼示例中,可以通過提供X和Y座標爲'0,0'來定位你想要的位置。記住這些座標來自PDF上的左下角。

'' add the template beneath content, 1 indicates pagenumber of the doc you loaded in 
stamper.GetUnderContent(1).AddTemplate(bg, 0, 0) 

如果你想添加到您的模板的頂部,那麼你打電話GetOverContent並且可以使用相同的定位屬性

stamper.GetOverContent(1).AddTemplate(bg, 0, 0) 

不知道我缺少在您的意見別的東西..? ...

+0

你好,謝謝你,它的作品,但它只是增加了新的文件到當前的頂部,所以它實際上重疊的第一個文件,我遇到的問題是獲取新的頁面,apped第一個,你知道如何做到這一點? – connersz

+0

好吧,提到的文件似乎是腐敗的,並解釋了這個問題。現在的問題是,我似乎只是添加了第一個以上的新PDF,即使交換後它們:-S – connersz

+0

好吧,我將編輯這個答案,其中有一些不同的代碼... – Darren

相關問題