2015-02-06 170 views
3

我想使用PDFSharp的Migradoc库(http://www.pdfsharp.net/)打印PDF文件。到目前为止,我发现Migradoc确实支持通过MigraDoc.Rendering.Printing.MigraDocPrintDocument类打印。但是,我还没有找到一种方法来实际使用MigraDoc打开现有的PDF文件。如何使用Migradoc PDF库打开现有的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); 

} 

回答

1

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

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

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

+0

为什么不保存更改?它看起来应该起作用:将页面呈现到新文档中,然后保存文档。 – 2017-09-20 06:04:11

+1

@AndreasReiff参数'filePath'用于打开一个PDF文件并在内存中修改该文件而不保存。参数'outFilePath'用于保存新创建的文档,该文档不包含输入文件中的任何内容。 'inPdfDoc和'outFilePath'之间没有“连接”。 – 2017-09-20 17:56:52