使用PDFsharp库将额外页面添加到PDF文档

时间:2017-01-19 12:48:40

标签: c# pdfsharp

我正在尝试合并PDF文档并为其中一些添加额外的页面。合并部分工作正常,现在我试图找出如何通过传递链接到预先存在的PDF页面来添加额外的页面。如何将指向PDF页面的链接传递给targetDoc.AddPage(LINK)?

    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();
}

}

1 个答案:

答案 0 :(得分:2)

创建一个没有参数的新的空页面调用AddPage()

targetDoc.AddPage();

您可能需要Clone()来创建现有导入页面的多个副本(同时添加(PdfPage)):

targetDoc.AddPage((PdfPage)pdfDoc.Pages[i].Clone());