当我指定图像的路径时,我收到一条消息,指出“无法读取图像”。我想看看我是否走错了路,所以我把这条路改成了为了测试而编造的东西。在此之后,我收到一条消息,说找不到图像。
因此,看来我实际上确实有正确的路径,并且我之前在本地机器上尝试过这个没有任何问题(但是在另一个文件夹中)。当我在我的服务器上尝试它时出现了问题,它无法加载该文件夹中的所有图像。这与文件夹或类似的权限有关吗?为什么我看不到图片?
可能与权限有关。应用程序是否在完全信任的情况下运行?IIS 应用程序?服务?尝试使用本地系统用户帐户 - 如果它可以工作,那就是权限问题。
可能是图像格式的问题。PDFsharp 依靠操作系统/框架来读取图像。从 GDI+ 构建切换到 WPF 构建或反之亦然可能会有所不同。
在例程“private void CalculateImageDimensions()”中捕获了一个异常。也许您可以在消息框中显示异常或将其保存在文件中。这将有助于确定出了什么问题。
我在使用PDFSharp 1.32版本时遇到了同样的问题。ImageRenderer中出现错误:
A generic error occurred in GDI+.
at System.Drawing.Image.Save(Stream stream, ImageCodecInfo encoder, EncoderParameters encoderParams)
at PdfSharp.Pdf.Advanced.PdfImage.InitializeJpeg()
at PdfSharp.Pdf.Advanced.PdfImage..ctor(PdfDocument document, XImage image)
at PdfSharp.Pdf.Advanced.PdfImageTable.GetImage(XImage image)
at PdfSharp.Pdf.PdfPage.GetImageName(XImage image)
at PdfSharp.Drawing.Pdf.XGraphicsPdfRenderer.GetImageName(XImage image)
at PdfSharp.Drawing.Pdf.XGraphicsPdfRenderer.Realize(XImage image)
at PdfSharp.Drawing.Pdf.XGraphicsPdfRenderer.DrawImage(XImage image, XRect destRect, XRect srcRect, XGraphicsUnit srcUnit)
at PdfSharp.Drawing.XGraphics.DrawImage(XImage image, XRect destRect, XRect srcRect, XGraphicsUnit srcUnit)
at MigraDoc.Rendering.ImageRenderer.Render()
正如我在 XImage.cs:241 中看到的,EXIF 格式不受官方支持:
case "{B96B3CB2-0728-11D3-9D7B-0000F81EF32E}": // exif
default:
throw new InvalidOperationException("Unsupported image format.");
不幸的是,GDI+ 将我的 exif 格式图像定义为 JPEG,因此不会触发预期的情况。
目前我没有找到任何理想的解决方案。在开发者论坛(http://forum.pdfsharp.net/viewtopic.php?f=3&t=3304)上,您可以找到有关类似问题的更多信息。似乎出现问题是因为图像是使用 Adobe 工具之一保存的。
从其他角度来看 - 较新版本的 Windows 可以正确处理此问题,此问题仅在Windows Server 2008 R2上重现,因此也许更新可以解决此问题。