2

谁能告诉我如何将PdfReader对象转换为PdfDocument

我已经读取了一个磁盘文件并转换为内存流,但我需要它作为PdfDocument我的 C# 程序中的其他方法。

我正在将应用程序转换为使用iTextSharp而不是PdfSharp.

MemoryStream pdfstream = new MemoryStream();

/* Convert the attachment to an byte array */
byte[] pdfarray = (byte[])dr["Data"];
/* Write the attachment into the memory */
pdfstream.Write(pdfarray, 0, pdfarray.Length);
/* Set the memorystream to the beginning */
pdfstream.Seek(0, System.IO.SeekOrigin.Begin);

/* Open the pdf document */
PdfSharp.Pdf.PdfDocument document = PdfSharp.Pdf.IO.PdfReader.Open(pdfstream, PdfDocumentOpenMode.Modify);
//iTextSharp.text.Document doc1 = iTextSharp.text.pdf.PdfReader.GetStreamBytes(
//ITS.pdf.PdfReader rdr = ITS.pdf.PdfReader(

string filename = DateTime.Now.Ticks.ToString() + "_" + dr["AttachmentName"].ToString();
string path = Path.Combine(FolderName, filename);

document.Save(path);
4

1 回答 1

2

我认为你可以做这样的事情(注意代码没有运行或测试,可能需要调整):

using (MemoryStream ms = new MemoryStream())
{
    Document doc = new Document(PageSize.A4, 50, 50, 15, 15);

    PdfWriter writer = PdfWriter.GetInstance(doc, ms);

    using (var rdr = new PdfReader(filePath))
    {
        PdfImportedPage page;

        for(int i = 1; i <= rdr.PageCount; i++)
        {
            page = writer.GetImportedPage(templateReader, i)

            writer.DirectContent.AddTemplate(page, 0, 0);

            doc.NewPage();
        }
    }
}

这将逐页读取 PDF 并将其输出到您的文档中。

于 2013-02-12T12:23:32.057 回答