【问题标题】:ABCpdf AddImageHtml text stretches without administrator rightsABCpdf AddImageHtml 文本在没有管理员权限的情况下延伸
【发布时间】:2018-08-12 20:31:20
【问题描述】:

问题:
当我以管理员和非管理员运行相同的程序时,它们会产生不同的结果。

示例:

如您所见,没有管理员权限,文本会垂直拉伸。

要重现的代码:

var html = File.ReadAllText( "htmldata.txt" );
using( var doc = new Doc() )
{
    doc.HtmlOptions.Engine = EngineType.Chrome;
    doc.Page = doc.AddPage();
    doc.AddImageHtml( html );
    doc.Save( "testPDF.pdf" );
    Console.WriteLine( $"DPI: {doc.Rendering.DotsPerInch}" );
    Console.WriteLine( $"LOG: {doc.Rendering.Log}" );
    Console.WriteLine( $"OPTIONS: {string.Join(Environment.NewLine, doc.Options)}" );
    float dpiX, dpiY;
    using( Graphics graphics = Graphics.FromHwnd( IntPtr.Zero ) )
    {
        dpiX = graphics.DpiX;
        dpiY = graphics.DpiY;
    }
    Console.WriteLine( $"Transform: {doc.Transform.String}" );
    Console.WriteLine($"DPI X:{dpiX}{Environment.NewLine}DPI Y:{dpiY}");
}
Process.Start( "testPDF.pdf" );
Console.ReadKey();

htmldata.txt的内容是:

<body style='font-family:"Source Sans Pro"'>
    some text on the page
</body>

注意
我在没有样式的情况下这样做了,它给出了同样的问题


我已经尝试过的:

  1. 使用Process monitor 发现事件中的差异(管理员与非管理员之间),除了路径之外,我没有发现明显的差异。

  2. 检查是否正在使用正确的 DLL:listDLLs,正在使用正确的 DLL。

  3. 检查对%temp%目录的访问为the docs表示AddImageHtml使用它来存储HTML渲染

  4. 从代码中可以看出,我尝试比较 DPI 和某些设置,但它们都是相同的。

注意
我使用 AddImageHtml 而不是 AddTextStyled 的原因是因为它支持更多的 HTML(表格等),所以我不能使用不同的方法(如果它不支持大多数 HTML)。使用它的用户也无法获得管理员权限,这会危及系统。

【问题讨论】:

  • 对于有同样问题的人:我没有解决,我切换到不同的 PDF 库

标签: c# pdf pdf-generation abcpdf


【解决方案1】:

我知道这是一个老问题,但我在某些 Windows 2012 R2 系统(在 VMWARE 下)上使用带有 Chrome 引擎的 AbcPdf11 时遇到了类似的拉伸问题,我已通过禁用 Javascript 来修复它:

doc.HtmlOptions.UseScript = false;

我认为启用 JS 后,它会尝试根据某些系统设置自动计算 BrowserWidth

【讨论】:

  • 非常感谢,我现在已经使用了另一个库,但我测试了它,它可以完美运行!
猜你喜欢
  • 2013-01-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-03-19
  • 1970-01-01
  • 1970-01-01
  • 2014-09-24
相关资源
最近更新 更多