将pdfreader转换为pdfdocument

本文关键字:pdfdocument 转换 pdfreader | 更新日期: 2023-09-27 17:58:51

有人能告诉我如何将PdfReader对象转换为PdfDocument吗?

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

我正在将应用程序转换为使用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);

将pdfreader转换为pdfdocument

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

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并将其输出到您的文档中。