【问题标题】:How to open an existing PDF file with Migradoc PDF library如何使用 Migradoc PDF 库打开现有的 PDF 文件
【发布时间】:2015-04-06 20:34:54
【问题描述】:

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

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

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

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

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);

}

【问题讨论】:

    标签: c# pdf printing pdfsharp migradoc


    【解决方案1】:

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

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

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

    【讨论】:

    • 为什么不保存更改?看起来它应该可以工作:将页面渲染到新文档中,然后保存文档。
    • @AndreasReiff 参数filePath 用于打开 PDF 文件并在内存中修改该文件而不保存它。参数outFilePath 用于保存一个新创建的文档,该文档不包含输入文件中的任何内容。 inPdfDoc and outFilePath`之间没有“联系”。
    猜你喜欢
    • 1970-01-01
    • 2015-07-12
    • 1970-01-01
    • 1970-01-01
    • 2015-01-09
    • 2019-09-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多