#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();
...