【发布时间】:2022-10-09 00:22:45
【问题描述】:
我正在使用 ABCPDF 并为某个报告使用 MSHTML 引擎。它可以很好地加载 .PNG 文件和我们的无扩展名处理程序图像,但是当涉及到 .jpg 时,它会显示一个 X。纯 HTML 加载得很好,但是将 html 转换为 PDF 时它不会加载。
屏幕截图中的其他图像是 PNG 或无扩展名。 Chrome 引擎也会加载图像。
我什至用完全相同的图像进行了测试,只是发送到浏览器的方式不同。第一个是图像处理程序,它返回一个 JPG,第二个是直接从文件系统读取文件。处理程序有效,但带有扩展名的处理程序无效。
关于为什么 MSHTML 引擎会发生这种情况的任何线索?
/assets/files/210057 <-- Loads
/assets/files/210057.jpg <-- DOESNT
string theDir = Directory.GetParent(Directory.GetCurrentDirectory()).Parent.FullName + @"\files\";
string theURL = "file://" + theDir + "source.html";
using (Doc doc = new Doc())
{
doc.MediaBox.String = "Letter";
// Convert HTML
doc.Pos.Y = 0;
doc.Rect.Inset(0, 0);
doc.HtmlOptions.Engine = EngineType.MSHtml;
doc.Rect.String = doc.MediaBox.String;
var w = doc.MediaBox.Width;
var h = doc.MediaBox.Height;
var l = doc.MediaBox.Left;
var b = doc.MediaBox.Bottom;
doc.Transform.Rotate(90, l, b);
doc.Transform.Translate(w, 0);
doc.Rect.Width = h;
doc.Rect.Height = w;
int theID = doc.AddImageUrl(theURL, true, 800, true);
doc.SetInfo(doc.GetInfoInt(doc.Root, "Pages"), "/Rotate", "90");
while (true)
{
if (!doc.Chainable(theID)) break;
doc.Page = doc.AddPage();
theID = doc.AddImageToChain(theID);
}
for (int i = 1; i <= doc.PageCount; i++)
{
doc.PageNumber = i;
doc.Flatten();
}
string outFile = Path.Combine(theDir, $"out{XSettings.Version}{doc.HtmlOptions.Engine}.pdf");
doc.Save(outFile);
doc.Clear();
}
【问题讨论】:
标签: html internet-explorer mshtml abcpdf microsoft.mshtml