PDFsharp asking for a PDF to be opened for Import when adding pages

时间:2018-12-19 11:29:49

标签: c# pdf pdf-generation pdfsharp

I have 3 PDFs, I want to add the pages from them to an output PDF file. What I’m trying to do is: import first PDF -> create new PDF document -> add pages -> draw in certain page and finally I want to add the pages from that document to the main PDF document that will be exported. Proceed to do the same with the second PDF file if needed.

ERROR: A PDF document must be opened with PdfDocumentOpenMode.Import to import pages from it.

From the main class I call the method that processes the PDF:

        Pdftest pdftest = new Pdftest();
        PdfDocument pdf = PdfReader.Open(@"C:\Users\pdf_file.pdf", PdfDocumentOpenMode.Import);
        pdftest.CreatePages(pdf_file);

Pdftest class:

public class Pdftest
{
    PdfDocument PDFNewDoc = new PdfDocument();
    XFont fontChico = new XFont("Verdana", 8, XFontStyle.Bold);
    XFont fontGrande = new XFont("Verdana", 12, XFontStyle.Bold);
    XBrush fontBrush = XBrushes.Black;

    public void CreatePages(PdfDocument archivoPdf)
    {
        PdfDocument NuevoDoc = new PdfDocument();

        for (int Pg = 0; Pg < archivoPdf.Pages.Count; Pg++)
        {
            PdfPage pp = NuevoDoc.AddPage(archivoPdf.Pages[Pg]);
        }

        XGraphics Graficador = XGraphics.FromPdfPage(NuevoDoc.Pages[0]);

        XPoint coordinate = new XPoint();
        coordinate.X = XUnit.FromInch(1.4);
        coordinate.Y = XUnit.FromInch(1.8);

        graficador.DrawString("TEST", fontChico, fontBrush, coordinates);

        for (int Pg = 0; Pg < NuevoDoc.Pages.Count; Pg++)
        {
            PdfPage pp = PDFNewDoc.AddPage(NuevoDoc.Pages[Pg]); //Error mentioned.
        }
    }
 }

1 个答案:

答案 0 :(得分:0)

错误消息与NuevoDoc有关。您必须将NuevoDoc保存在MemoryStream中,然后在“导入”模式下将其重新打开,以使代码生效。

我不明白您为什么尝试将页面从NuevoDoc复制到PDFNewDoc-,因此最有可能在优化代码时避免使用MemoryStream。