繁体   English   中英

PDFsharp,在PDF中显示JPG时出错

[英]PDFsharp, error displaying a JPG in PDF

我正在尝试执行一个简单的操作:使用.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文件时,图像显示错误,损坏,破碎......我不知道如何解释它,你可以下载原始照片和在下一个公共Dropbox文件夹中生成的PDF来查看结果。

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

任何帮助将不胜感激。

编辑:我注意到的是,根据我可视化PDF的程序,错误的图像看起来不同。 例如,如果您使用Dropbox的可视化工具(使用我提供的链接)看到PDF,则图像看起来很好; 如果我使用Chrome PDF Viewer,则图像错误,但只显示黑白,带条纹但仍然可见; 如果我使用Adobe Acrobat Reader DC,图像仍然是错误的,但完全无法识别。

编辑2:我改为PDFSharp v1.50.4000(beta 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中管理)。

使用PDFsharp 1.50或更高版本并使用XImage.FromStream而不是Image.FromStream加上XImage.FromGdiPlusImage时,JPEG图像的处理效果更好。

PDFsharp需要JPEG文件的副本。 使用XImage.FromStream可确保PDFsharp获取原始数据。

如果您坚持使用Windows XP,您的代码将适用于PDFsharp 1.32。 以后的Windows版本有你看到的问题,但是使用PDFsharp 1.50它应该再次工作。

您的图像是CMYK JPEG。 当它嵌入PDF文件时,其颜色空间设置为RGB,这会导致错误的解码。
我不知道您是否可以将代码中的图像颜色空间设置为CMYK,或者是否需要在PDFsharp中修复。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM