Нисходящий подход для объекта abcpdf doc

#abcpdf #topdown

#abcpdf #нисходящий

Вопрос:

ось по умолчанию (x, y) для объекта doc в ABCpdf начинается в нижнем левом углу. есть ли какой-нибудь способ сделать его расположенным в верхнем левом углу.?

Ответ №1:

Существует несколько способов установить начало координат в верхнем левом углу.

Самый простой метод — это установить документ.Нисходящему свойству присвоено значение true. В качестве альтернативы вы можете указать матрицу преобразования.

Дополнительная информация о документе.Свойство «сверху вниз» можно найти здесь, в документации для ABCpdf …

Ответ №2:

Я обнаружил, что мне нужно вычесть все элементы в позиции y на высоту документа (затем получить абсолютное значение этого) — я обнаружил, что высота в моем случае была 840 (используя doc.AddGrid();).

Я заметил, что нисходящий перестал работать после того, как я обновился с abcpdf v8 до v10 (по соображениям безопасности 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();
            ...