1

ABCpdf 中 doc 对象的默认 (x,y) 轴从左下角开始。有没有办法让它在左上角。?

4

2 回答 2

3

有几种方法可以将原点设置为左上角。

最简单的方法是将 Doc.TopDown 属性设置为 true。或者,您可以指定一个转换矩阵。

有关 Doc.TopDown 属性的更多信息可以在 ABCpdf 的文档中找到...

于 2011-05-11T14:54:21.680 回答
0

我发现我需要用文档的高度减去所有 y 位置项(然后得到它的绝对值)——我发现我的高度是 840(使用 doc.AddGrid();)。

我注意到在我从 abcpdf v8 升级到 v10 后,TopDown 停止工作(出于 tls1.2 安全原因)

    private static void SetText(Doc doc, int xposn, int yposn, string text) {
        doc.Pos.X = xposn;
        doc.Pos.Y = Math.Abs(yposn - 840); //handle TopDown manually using after v10 upgrade
        doc.AddText(text);
    }

请注意,我无法计算出转换矩阵,但尝试了这个 - 但不知道要使用的正确矩阵:

        using (var doc = new Doc()) {
            doc.MediaBox.String = "A4"; // this sets the page to A4 (also removes scrollbar showing in the pdf LOL)
            //doc.TopDown = true;  //2022-02-16 jn appears to not work in v10
            var matrix = new Matrix(1.0f, 1.0f, 1.0f, 1.0f, 0.2f, 0.0f);
            doc.Transform.Matrix = matrix;
            
            doc.HtmlOptions.Engine = EngineType.Gecko;
            doc.HtmlOptions.PageCacheEnabled = false;
            doc.HtmlOptions.UseNoCache = true;
            doc.HtmlOptions.PageCacheClear();
            ...
于 2022-02-16T00:49:59.210 回答