PDFsharp PdfDocument.Save 在任何额外保存时导致空白页
PDFsharp PdfDocument.Save causing blank pages on any additional saves
虽然我有解决此问题的方法,但我更愿意按照 运行 处理此问题的方式来解决。在解决问题之前,让我解释一下上下文:
我正在使用扫描仪获取虚拟图像,我想用它来创建 PDF,每个页面都是一个图像。我使用 PDFsharp 创建 PDF 时工作得很好。
但是;如果我尝试重新保存 PDFsharp 文档,它最终会清空所有以前的页面,然后添加新图像。
关于更多上下文,我正在使用 ASP.NET Windows 表单,NTwain 用于扫描软件,PDFsharp 用于创建 PDF,PdfiumViewer 用于在 Windows表格。
我有一个 class 级别的文档变量
PdfDocument document = new PdfDocument();
关于图片保存,我只是将图片保存到新页面
var img = pictureBox1.Image;
PdfPage page = document.AddPage();
XGraphics gfx = XGraphics.FromPdfPage(page);
XImage image = XImage.FromGdiPlusImage(img);
gfx.DrawImage(image, 0, 0);
为了呈现文档,我将文档(认为这可能会解决问题)复制到一个新文档,将内容保存到一个新的内存流,然后简单地查看 PDF
var viewDocument = (PdfDocument)document.Clone();
MemoryStream ms = new MemoryStream();
viewDocument.Save(ms, false);
ms.Position = 0;
var pdf = PdfiumViewer.PdfDocument.Load(ms);
pdfRenderer1.Load(pdf);
我通过将图像保存到列表而不是作为新页面来让它工作,并且每次我想显示它时都重新制作文档。然而,这个问题确实是 st运行ge。
如果能帮助理解它为什么这样做,我们将不胜感激。
AFAIK 这是实施状态:推荐的方法是创建 PdfDocument
或从文件中打开它,进行所需的更改,然后保存一次 .
这就是您在适合您的实施中所做的事情。
保存文档,打开它,添加更多页面,再次保存也可以。这样您就不需要所有图像的列表。但是恕我直言,每次保存时使用列表并创建一个新的 PdfDocument
是最干净的方法。
进一步更改后再次保存时出现意外结果。这是一个已知的问题。请随时调查并修复此问题。也许只是一个简单的改变,也许是复杂的。
虽然我有解决此问题的方法,但我更愿意按照 运行 处理此问题的方式来解决。在解决问题之前,让我解释一下上下文:
我正在使用扫描仪获取虚拟图像,我想用它来创建 PDF,每个页面都是一个图像。我使用 PDFsharp 创建 PDF 时工作得很好。
但是;如果我尝试重新保存 PDFsharp 文档,它最终会清空所有以前的页面,然后添加新图像。
关于更多上下文,我正在使用 ASP.NET Windows 表单,NTwain 用于扫描软件,PDFsharp 用于创建 PDF,PdfiumViewer 用于在 Windows表格。
我有一个 class 级别的文档变量
PdfDocument document = new PdfDocument();
关于图片保存,我只是将图片保存到新页面
var img = pictureBox1.Image;
PdfPage page = document.AddPage();
XGraphics gfx = XGraphics.FromPdfPage(page);
XImage image = XImage.FromGdiPlusImage(img);
gfx.DrawImage(image, 0, 0);
为了呈现文档,我将文档(认为这可能会解决问题)复制到一个新文档,将内容保存到一个新的内存流,然后简单地查看 PDF
var viewDocument = (PdfDocument)document.Clone();
MemoryStream ms = new MemoryStream();
viewDocument.Save(ms, false);
ms.Position = 0;
var pdf = PdfiumViewer.PdfDocument.Load(ms);
pdfRenderer1.Load(pdf);
我通过将图像保存到列表而不是作为新页面来让它工作,并且每次我想显示它时都重新制作文档。然而,这个问题确实是 st运行ge。
如果能帮助理解它为什么这样做,我们将不胜感激。
AFAIK 这是实施状态:推荐的方法是创建 PdfDocument
或从文件中打开它,进行所需的更改,然后保存一次 .
这就是您在适合您的实施中所做的事情。
保存文档,打开它,添加更多页面,再次保存也可以。这样您就不需要所有图像的列表。但是恕我直言,每次保存时使用列表并创建一个新的 PdfDocument
是最干净的方法。
进一步更改后再次保存时出现意外结果。这是一个已知的问题。请随时调查并修复此问题。也许只是一个简单的改变,也许是复杂的。