簡體   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