Я пытаюсь использовать библиотеку 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);
}