【问题标题】:"System.ArgumentOutOfRangeException: Non-negative number required" when exporting PDF from SSRS [closed]从 SSRS 导出 PDF 时出现“System.ArgumentOutOfRangeException:需要非负数”[关闭]
【发布时间】:2013-09-05 07:04:46
【问题描述】:

我正在尝试使用报告查看器在 PDF 报告中呈现图像,但导出按钮不起作用。

以下是异常详情:

Non-negative number required.
Parameter name: value 

许多帖子表明问题出在 Sql server 2005 版本中,并已在 CU7 中解决。 但目前我正在使用 SQL Server 2008R2 版本并遇到此问题。

【问题讨论】:

  • OQ 在修复 OQ 后被作者更改。

标签: asp.net reporting-services


【解决方案1】:

SSRS 在高分辨率文件和某些格式方面存在问题。由于您的帖子指出图像来自 Cyber​​Shot 相机,并且使用了来自相机的原始未压缩文件,请参见下文。 在 SSRS 中始终使用 72dpi 或更低的图像。

高分辨率的 PNG 和 JPEG不会导出,但仍会出现在报表查看器中。使用诸如 Paint.NET 之类的图像编辑器将图像本身的分辨率和大小更改为较低的值(200x200,72dpi)。在报告中根据您的需要放大的较小图像尺寸似乎可以解决问题。

您也可以尝试其他格式。确保将报告中的链接更新到新图像或保存到数据库,具体取决于您存储图像的方式。如果出现下载的图像,那么您可以尝试增大图像大小。

【讨论】:

  • 感谢您的建议。我认为问题不是由于 dpi 或大小造成的,因为我有一些图片具有 (640 x 480, 350dpi) 属性,但它们可以正确渲染并且导出 PDF 没有问题。我认为问题与我现在正在处理的元数据有关。
  • 我过去在 SSIS 脚本任务中使用过与 MSDN forum post 类似的东西,与 BitmapImage 对象一起直接导入到数据库表中,并运行轧机规模算法来完成所有工作我的转换(在我的情况下是 TIFF 到 PNG,将其缩小到 72dpi)。这就是我遇到像你这样的问题的原因。
  • 我在尝试以 pdf 格式导出图像时遇到异常 [ArgumentOutOfRangeException: 需要非负数。参数名称:值] System.IO.MemoryStream.set_Position(Int64 value) +10437656 Microsoft.ReportingServices.Rendering.ImageRenderer.CanvasPDF.MonochromeJpeg(MemoryStream memStream) +347 Microsoft.ReportingServices.Rendering.ImageRenderer.CanvasPDF.ProcessImage(CanvasImagePDF image,双左、双顶、双宽、双高、布尔 scaleImage) +1270
  • 这是一个完全不同的问题,应该按照 Stack 的指南发布。
猜你喜欢
  • 2020-12-11
  • 1970-01-01
  • 2023-03-04
  • 1970-01-01
  • 1970-01-01
  • 2015-06-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多