gpt4 book ai didi

c# - PDFsharp,在 PDF 中显示 JPG 时出错

转载 作者:太空狗 更新时间:2023-10-29 21:26:52 24 4
gpt4 key购买 nike

我正在尝试执行一个简单的操作:在使用 .NET Framework 4.0 和 MVC.NET 使用 PDFsharp v1.32.2608.0 从头生成的 PDF 文件中添加照片(JPG 文件)

我正在使用下一个代码来执行此操作:

PdfDocument doc = new PdfDocument();
PdfPage pag = doc.AddPage();
XGraphics gfx = XGraphics.FromPdfPage(pag);

Image foto = Image.FromStream([stream]);
XImage xfoto = XImage.FromGdiPlusImage(foto);
gfx.DrawImage(xfoto, 30, 130, 380, 250);

MemoryStream stream = new MemoryStream();
doc.Save(stream, false);

问题是当我打开PDF文件时,图像出现错误,损坏,损坏......我不知道如何解释,你可以下载原始照片和下一个public Dropbox folder生成的PDF到查看结果。

这个错误并不一致,有些照片有这个确切的问题,有些照片没有,我不知道为什么。也许是文件中的格式或类似的格式?如果这是问题所在,哪些格式有效?

我们将不胜感激。

编辑:我注意到错误的图像看起来会有所不同,具体取决于我使用哪个程序可视化 PDF。例如,如果您使用 Dropbox 的可视化工具(使用我提供的链接)查看 PDF,图像看起来不错;如果我使用 Chrome PDF 查看器,图像是错误的,但只显示为黑白条纹,但仍然可见;如果我使用 Adob​​e Acrobat Reader DC,图像仍然是错误的,但完全无法识别。

编辑 2:我更改为 PDFSharp v1.50.4000(测试版 3)以查看是否可能是库的问题,但问题仍然存在。新版本的代码如下:

PdfDocument doc = new PdfDocument();
PdfPage pag = doc.AddPage();
XGraphics gfx = XGraphics.FromPdfPage(pag);

XImage xfoto = XImage.FromStream([stream]);
gfx.DrawImage(xfoto, 30, 130, 380, 250);

MemoryStream stream = new MemoryStream();
doc.Save(stream, false);

最佳答案

这是我得到的解决方案,感谢来自 PDFsharp 论坛的 TH-Soft 向我展示了路径:

PdfDocument doc = new PdfDocument();
PdfPage pag = doc.AddPage();
XGraphics gfx = XGraphics.FromPdfPage(pag);

MemoryStream strm = new MemoryStream();
Image img = Image.FromStream([stream]);
img.Save(strm, System.Drawing.Imaging.ImageFormat.Png);

XImage xfoto = XImage.FromStream(strm);
gfx.DrawImage(xfoto, 30, 130, 380, 250);

MemoryStream stream = new MemoryStream();
doc.Save(stream, false);

在我将图像添加到 PDF 之前,我将图像转换为 PNG 所以格式图像所具有的“问题”已被删除。

当然,这不是最好的解决方案,PDFsharp 应该管理这个格式问题,但它不会很快发生(至少在 PDFsharp 1.5 beta3 中没有管理)。

关于c# - PDFsharp,在 PDF 中显示 JPG 时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35660744/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com