ABCpdf AddImageHtml文本在没有管理员权限的情况下延伸

问题描述 投票:0回答:1

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

例:

PDF problem

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

代码重现:

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)。使用它的用户也无法获得管理员权限,这会危及系统。

c# pdf pdf-generation abcpdf
1个回答
1
投票

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

doc.HtmlOptions.UseScript = false;

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

© www.soinside.com 2019 - 2024. All rights reserved.