将pdfreader转换为pdfdocument

时间:2013-02-12 10:14:44

标签: c# itextsharp

有谁能告诉我如何将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);

1 个答案:

答案 0 :(得分: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并将其输出到您的文档。