2017-01-19 75 views
0

我正在嘗試合併PDF文檔併爲其中一些頁面添加額外的頁面。合併部分工作正常,現在我正試圖弄清楚如何通過將鏈接傳遞給預先存在的PDF頁面來添加額外的頁面。如何將鏈接傳遞到PDF頁面以targetDoc.AddPage(LINK)?使用PDFsharp庫向PDF文檔添加額外頁面

public static void MergePDFs(string targetPath, DataTable pdfs) 
    { 
     try 
     { 
      using (PdfSharp.Pdf.PdfDocument targetDoc = new PdfSharp.Pdf.PdfDocument()) 
      { 
       foreach (DataRow pdf in pdfs.Rows) 
       { 
        using (PdfSharp.Pdf.PdfDocument pdfDoc = PdfSharp.Pdf.IO.PdfReader.Open(pdf["link"].ToString(), PdfDocumentOpenMode.Import)) 
        { 
         for (int i = 0; i < pdfDoc.PageCount; i++) 
         { 
          targetDoc.AddPage(pdfDoc.Pages[i]); 
         } 
        } 
       } 
       targetDoc.Save(targetPath); 
      } 
     } 
     catch(Exception ex) 
     { 
      Console.Write(ex); 
     } 
    } 

衝壓方法

using (Stream pdfStream = new FileStream(sourceFileName, FileMode.Open)) 
{ 
using (Stream newpdfStream = new FileStream(newFileNameWithPath, FileMode.Create, FileAccess.ReadWrite)) 
{ 
    iTextSharp.text.pdf.PdfReader pdfReader = new iTextSharp.text.pdf.PdfReader(pdfStream); 
    PdfStamper pdfStamper = new PdfStamper(pdfReader, newpdfStream); 
    PdfContentByte pdfContentByte = pdfStamper.GetOverContent(pageNumber); 
    BaseFont baseFont = BaseFont.CreateFont(BaseFont.TIMES_ROMAN, BaseFont.CP1250, BaseFont.NOT_EMBEDDED); 
    pdfContentByte.SetColorFill(BaseColor.RED); 
    pdfContentByte.SetFontAndSize(baseFont, 12); 
    pdfContentByte.BeginText(); 
    pdfContentByte.ShowTextAligned(PdfContentByte.ALIGN_CENTER, inputText, Convert.ToInt32(xCoordinate), Convert.ToInt32(yCoordinate), 0); 
    pdfContentByte.EndText(); 
    pdfStamper.Close(); 
} 

}

+0

我不知道如果我的回答是,你在找什麼。如果你想解釋「通過一個鏈接到預先存在的pdf頁面」意味着我可能不得不更新我的答案。 –

+0

謝謝。我正在嘗試將PDF頁面傳遞給我的打印方法,並在加蓋後將其添加回來。我在 – user6934713

+0

之上加了我的衝壓方法沖模使用iTextSharp。您可以使用iTextSharp將加蓋的頁面保存到流中,使用PDFsharp打開該頁面並像使用其他頁面一樣使用加蓋的頁面。看起來你的代碼已經將加蓋的PDF保存在'newpdfStream'流中,你只需要打開PdfReader.Open() - 可以處理文件和流。 –

回答

2

要創建一個新的空白頁面調用AddPage()沒有參數。

targetDoc.AddPage(); 

您可能需要Clone()創建現有導入的頁面(也添加(PdfPage))的多個副本:

targetDoc.AddPage((PdfPage)pdfDoc.Pages[i].Clone()); 
相關問題