我们正在使用PDFsharp从文件夹中收集图像集并将其放入PDF文件,每页一张图像。对于这组特定的图像,在某些查看器中打开时,生成的PDF文档似乎已损坏... Chrome损坏,Adobe Reader损坏,Edge完全放弃,但是Firefox实际上正确呈现。 >
这里是相关代码:
public static List<string> ImageExtensions() { return new List<string>() { ".tif", ".tiff", ".png", ".jpg", ".jpeg", ".gif" }; } public void Convert() { PdfDocument doc = new PdfDocument(); foreach(string fPath in FilePaths) { string ext = Path.GetExtension(fPath); if (ImageExtensions().Contains(ext)) AddImageToPDF(fPath, ref doc); } try { doc.Save(OutputFilePath); } catch (Exception e) { Console.WriteLine(e.Message); } doc.Close(); doc.Dispose(); } private void AddImageToPDF(string imagePath, ref PdfDocument doc) { Image MyImage = Image.FromFile(imagePath); AddImageToPDF(MyImage, ref doc); } private void AddImageToPDF(Image image, ref PdfDocument doc) { try { int numPages = doc.Pages.Count; using (Image MyImage = image) { for (int _pageIndex = 0; _pageIndex < MyImage.GetFrameCount(FrameDimension.Page); _pageIndex++) { MyImage.SelectActiveFrame(FrameDimension.Page, _pageIndex); XImage img = XImage.FromGdiPlusImage(MyImage); img.Interpolate = true; var page = new PdfPage() { Orientation = img.PixelWidth > img.PixelHeight ? PageOrientation.Landscape : PageOrientation.Portrait }; doc.Pages.Add(page); using (var xg = XGraphics.FromPdfPage(doc.Pages[_pageIndex + numPages])) { xg.DrawImage(img, 0, 0); } } } } catch (Exception ex) { Console.WriteLine(ex.Message); } }
File set A(在大多数查看器中为残破)。 File set B(适用于所有查看器)。两组都是使用完全相同的机制(Irfanview)从PNG转换的JPEG。
为什么除Firefox之外的所有查看器都呈现不正确的A,我该如何解决?
我们正在使用PDFsharp从一个文件夹中收集图像集,并将它们放入PDF文件中,每页一张图像。对于这组特定的图像,打开时生成的PDF文档似乎已损坏...
对于只有一帧的图像,应该使用XImage.FromFile
而不是XImage.FromGdiPlusImage
来解决Windows框架最新版本中的某个错误。