我正在尝试使用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页时的结果是包含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);
}
答案 0 :(得分:1)
您的代码会修改内存中的inPdfDoc而不保存更改。复杂的代码没有任何视觉效果。
MigraDoc无法打开PDF文件,MigraDoc无法打印PDF文件,PDFsharp无法打印PDF文件。