如何使用 Migradoc PDF 库打开现有的 PDF 文件

Bri*_*ian 5 c# printing pdf pdfsharp migradoc

我正在尝试使用 PDFSharp ( http://www.pdfsharp.net/ ) 中的 Migradoc 库来打印 pdf 文件。到目前为止,我发现 Migradoc 确实支持通过其MigraDoc.Rendering.Printing.MigraDocPrintDocument类进行打印。但是,我还没有找到使用 MigraDoc 打开现有 PDF 文件的方法。

我确实找到了一种使用 PDFSharp 打开现有 PDF 文件的方法,但我无法成功将 aPDFSharp.Pdf.PdfDocument转换为MigraDoc.DocumentObjectModel.Document对象。到目前为止,我还没有发现 MigraDoc 和 PDFSharp 文档很有帮助。

有没有人有使用这些库来处理现有 PDF 文件的经验?

我在示例的帮助下编写了以下代码,但是当我的输入 PDF 为 2 页时,结果是一个带有 2 个空白页的输出 PDF。

using MigraDoc.DocumentObjectModel;
using MigraDoc.Rendering;
using PdfSharp.Drawing;
using PdfSharp.Pdf;
using PdfSharp.Pdf.IO;

...

public void PrintPDF(string filePath, string outFilePath)
{

    var document = new Document();

    var docRenderer = new DocumentRenderer(document);
    docRenderer.PrepareDocument();

    var inPdfDoc = PdfReader.Open(filePath, PdfDocumentOpenMode.Modify);

    for (var i = 0; i < inPdfDoc.PageCount; i++)
    {
        document.AddSection();
        docRenderer.PrepareDocument();

        var page = inPdfDoc.Pages[i];

        var gfx = XGraphics.FromPdfPage(page);

        docRenderer.RenderPage(gfx, i+1);
    }

    var renderer = new PdfDocumentRenderer();

    renderer.Document = document;

    renderer.RenderDocument();

    renderer.PdfDocument.Save(outFilePath);

}
Run Code Online (Sandbox Code Playgroud)

Je *_*not 2

您的代码修改内存中的 inPdfDoc 而不保存更改。代码复杂,没有任何视觉效果。

MigraDoc 无法打开 PDF 文件,MigraDoc 无法打印 PDF 文件,PDFsharp 无法打印 PDF 文件。

http://www.pdfsharp.net/wiki/PDFsharpFAQ.ashx