TIF转换为PDF与PDFSharp和系统.绘制加载在Chrome和Edge,但空白在Firefox/pdf.js/re



我已经用System将TIF转换成PDF了。我的。net 6 API中的绘图和PDFsharp-gdi(版本1.50.5147)。我将文件作为base64编码的字符串发送到使用wojtekmajj/react- PDF作为PDF查看器的react前端。但是,由于TIF大于API中允许的pdf (200in x 200in)的最大大小,因此需要调整大小,我使用了以下方法:

System.Drawing.Image MyImg = System.Drawing.Image.FromStream(inStrm);
XImage img = XImage.FromGdiPlusImage(MyImg);
var p = new PdfPage();
double maxRez = 14400.0;
if (MyImg.Width > maxRez || MyImg.Height > maxRez)
{
double factor = 0.0;
if(MyImg.Width > MyImg.Height)
{
factor = (double)(MyImg.Width) / maxRez;
}
else{
factor = (double)(MyImage.Height) / maxRez;
}
p.Width = MyImg.Width / factor;
p.Height = MyImg.Height / factor;
}
doc.Pages.Add(p);
XGraphics xgr = XGraphics.FromPdfPage(doc.Pages[PageIndex]);
xgr.DrawImage(img, 0, 0, p.Width, p.Height);

正常大小的图像(不超过200inx200in)被转换并显示得很好。为什么调整大小后生成的pdf不能正确加载?如果我下载文件并在Firefox中以PDF格式加载它,也会出现这个问题,我相信Firefox在底层使用PDF.js。

在Firefox中,错误是An error occurred while rendering the page. PDF.js v2.4.152 (build 827eb64b) Message: Stack: putBinaryImageData@resource://pdf...,我已经尝试查找,但没有提出解决方案。

解决方案是首先调整嵌入图像的大小,然后在调整大小后将其添加到PDF页面。我之前试图调整PDF的大小,这样可以加载PDF,但没有图像,因为它们的分辨率大于PDF文件所支持的分辨率。有关如何调整图像大小,请参阅本文。

如果您正在处理多页图像,请使用MyImg.GetFrameCount(FrameDimension.Page)迭代缩放每个图像,并使用MyImg.SelectActiveFrame(FrameDimension.Page, PageNum)选择活动帧。

相关内容

  • 没有找到相关文章

最新更新