0

我正在运行 ac# MVC 4 app ,使用 Rotativa 将 Razor 视图转换为 Pdfs。Rotativa 基本上是 wkhtmltopdf 的包装器。

我升级到 Rotativa 1.6.1,以修复 wkhtmltopdf 中的分页问题,​​并且我的图像是“重影”。我回滚到 1.5.0,问题就消失了(但分页符又被打破了)。

看起来就像在这个 wkhtmltopodf 错误 http://code.google.com/p/wkhtmltopdf/issues/detail?id=788

他们声称它固定在尖端。(我尝试手动更新到最新的稳定版本,它仍然发生)

奇怪的是,这个问题只发生在我们的 QA 服务器上,而不是我们的 DEV 服务器或我们的 IT 组声称与 QA“相同”的集成服务器上......

任何想法可能导致此问题?还有人得到它吗?

这个问题: https://github.com/webgio/Rotativa/issues/51 和这个 https://github.com/webgio/Rotativa/issues/26

暗示有一些权限问题可能导致 Rotativa 出现问题。谁能给我指出更多关于哪种权限可能有问题的信息,这样我就可以在两个盒子上进行比较?

谢谢,

埃里克-

4

1 回答 1

1

好的,我们想出了一个解决方法......它是“JPEG图像的重影”......

所以我只是将它们从JPEG转换为PNG(两种已知的良好图像格式之一)......

由于它们已经以 JPEG 格式存储在数据库中,因此我在 Razor 视图中即时进行了转换。

保真度有一些损失,但除此之外效果很好....

try
{
     byte [] byteArrayIn = ( byte[] )@Model.ETA640StudentProfileVM[ currentRecord ].ImageObj;
     byte[] byteArrayOut = null;

     MemoryStream ms = new MemoryStream( byteArrayIn, 0, byteArrayIn.Length );
     ms.Write( byteArrayIn, 0, byteArrayIn.Length );
     Image returnImage = Image.FromStream( ms, true );
     using (var output = new MemoryStream())
     {
         returnImage.Save( output, System.Drawing.Imaging.ImageFormat.Png );
         byteArrayOut = output.ToArray();
     };


     @:<img src="data:image/png;base64,@(Html.Raw( Convert.ToBase64String( byteArrayOut )))" alt="Image Not Available" height="155" />

}
catch
{ 
     @:<img src="" alt="Error Generating Image" height="155" /> 
}
于 2014-04-16T16:15:20.110 回答