【问题标题】:ABCPDF with MSHTML engine not loading .JPG files带有 MSHTML 引擎的 ABCPDF 不加载 .JPG 文件
【发布时间】: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


    【解决方案1】:

    原来是这个在 Web.Config 中添加的 customHeader。我现在要么切换到 ABCChrome,要么尝试在带有 url 重写规则的图像上忽略它。

    <add name="X-Content-Type-Options" value="nosniff" />
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-03-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-11-05
      相关资源
      最近更新 更多