I'm trying to perform a simple action: adding a photo (JPG file) inside a PDF file generated from scratch with PDFsharp v1.32.2608.0 using .NET Framework 4.0 and MVC.NET
I'm using the next code to perform this action:
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);
The problem is that when I open the PDF file, the image appear wrong, corrupt, broken... I don't know how to explain it, you can download the original photo and the PDF generated in the next public Dropbox folder to see the result.
This error is not consistent, some photos have this exact problem, some others don't and I don't know why. Maybe is the format in the file or something similar? If that is the problem, which formats are valid?
Any help will be appreciated.
Edit: Something I noted is that the wrong image looks different depending on with which program I visualize the PDF. For example, if you see the PDF using the visualizer of Dropbox (using the link i provided) the image looks fine; if I use the Chrome PDF Viewer, the image is wrong but only appear in black and white and with stripes but still visible; if I use Adobe Acrobat Reader DC the image is still wrong but completely unrecognized.
Edit 2: I changed to PDFSharp v1.50.4000 (beta 3) to see if maybe its a problem of the library but the problem is still the same. The code, with the new version, is as follow:
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);
This is the solution i got, thanks to TH-Soft from PDFsharp forum for show me the path:
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);
Before I add the image to the PDF, I convert the image to PNG so the format "issues" that the image have are removed.
Of course, is not the best solution and PDFsharp should manage this format issue but it wont happen soon (at least is not managed in PDFsharp 1.5 beta3).
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With