2012-08-14 79 views
0

当我指定图片的路径时,我收到一条消息,指出“图片无法读取”。我想看看我是否有错误的道路,所以我改变了这条道路,只为了测试。在此之后,我收到一条消息,说没有找到图像。MigraDoc中的“图片无法读取”

因此,看起来我确实有正确的路径,并且我已经在本地机器上尝试了这一点,没有任何问题(但是在另一个文件夹中)。这个问题发生在我的服务器上,并且无法加载该文件夹中的所有图像。这有什么与文件夹权限或类似的东西?为什么我无法读取图像?

回答

0

可能与权限有关。应用程序是否完全信任? IIS应用程序?服务?尝试使用本地系统用户帐户 - 如果它的工作,那么,这是一个权限问题。

可能是图像格式的问题。 PDFsharp依靠操作系统/框架来读取图像。从GDI +构建切换到WPF构建或反之亦然可以有所作为。

在例程“private void CalculateImageDimensions()”中捕获到异常。也许你可以在一个消息框中显示异常或将它保存在一个文件中。这将有助于确定发生了什么问题。

0

我遇到了同样的问题PDFSharp 1.32版本。

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格式不正式支持:在ImageRenderer发生 错误

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上重现,因此也许更新可以解决问题。

+0

'System.Drawing.Image.Save'发生异常,所以它似乎发生异常与您显示的代码段无关。我们试图实现所有的图像格式,我们有图像文件 - 我们的收集没有包含任何返回EXIF ID的文件,而且您似乎也没有。论坛中的主题似乎也没有关系,因为它是关于框架报告为RGB的CMYK图像。 – 2016-08-16 11:20:53

+0

@PDFsharpExpert,首先我假定CalculateImageDimensions出现错误,但ImageRenderer在其他几种情况下也显示“Image could not be read”。只需检查ImageRenderer.RenderFailureImage,以防在Render函数中出现异常时,我们也会显示此消息。 我无法获得任何支持格式的列表,但我尝试使用EXIF标题的图像,所以这应该是我应该得到“不支持的格式”的情况。 – reflash 2016-08-16 20:31:45

+0

我假设“exif”GUID可用于保存那些文件格式。我假定当您以EXIF格式打开文件时,将返回“jpeg”GUID。如果PDFsharp只能看到“jpeg”GUID,但不会看到“exif”GUID,那么就不需要实现“无法访问的代码”。在服务器上使用GDI +可能会出现问题 - 在这种情况下,PDFsharp的WPF版本可能是更好的选择。 – 2016-08-17 09:46:40