Как открыть существующий файл PDF с помощью библиотеки Migradoc PDF

Я пытаюсь использовать библиотеку Migradoc из PDFSharp (http://www.pdfsharp.net/) для печати pdf файлы. До сих пор я обнаружил, что Migradoc поддерживает печать через свой класс MigraDoc.Rendering.Printing.MigraDocPrintDocument. Однако я не нашел способа открыть существующий PDF-файл с помощью MigraDoc.

Я нашел способ открыть существующий файл PDF с помощью PDFSharp, но не могу успешно преобразовать объект PDFSharp.Pdf.PdfDocument в объект MigraDoc.DocumentObjectModel.Document. До сих пор я не нашел документацию MigraDoc и PDFSharp очень полезной.

Есть ли у кого-нибудь опыт использования этих библиотек для работы с существующими файлами PDF?

Я написал следующий код с помощью этого примера, но результат, когда мой ввод 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);

}

person Brian    schedule 06.02.2015    source источник


Ответы (1)


Ваш код изменяет inPdfDoc в памяти без сохранения изменений. Сложный код без какого-либо визуального эффекта.

MigraDoc не может открывать файлы PDF, MigraDoc не может печатать файлы PDF, PDFsharp не может печатать файлы PDF.

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

person I liked the old Stack Overflow    schedule 07.02.2015
comment
Почему не сохраняет изменения? Похоже, это должно работать: визуализировать страницы в новый документ, а затем сохранить документ. - person Andreas Reiff; 20.09.2017
comment
@AndreasReiff Параметр filePath используется для открытия файла PDF и изменения этого файла в памяти без его сохранения. Параметр outFilePath используется для сохранения только что созданного документа, не содержащего ничего из входного файла. Между inPdfDoc and outFilePath` нет связи. - person I liked the old Stack Overflow; 20.09.2017