Setasign SetaPDF SetaPDF_Core_Text_Block / canvas-> text () отображает текст вверх ногами - PullRequest
0 голосов
/ 28 января 2019

С SetaPDF из Setasign, при импорте страницы из документа и попытке нарисовать строку текста на этой странице текст отображается вверх ногами, как если бы он был отражен по оси x.

Iпопытался нарисовать текст через SetaPDF_Core_Text_Block (), а также с помощью вспомогательного текста text ()

$reader     = new \SetaPDF_Core_Reader_File($original);
$tempWriter = new\SetaPDF_Core_Writer_File(Routes::DOCUMENT_UPLOAD.'test.pdf');
$document   = \SetaPDF_Core_Document::load($reader, $tempWriter);
$portada    = $document->getCatalog()->getPages()->getPage(1);
$canvas     = $portada->getCanvas();
$font       = \SetaPDF_Core_Font_Standard_HelveticaBold::create($document);
$text       = new \SetaPDF_Core_Text_Block($font, 24);
$text->setText('ABCDEF');
$text->setAlign(\SetaPDF_Core_Text::ALIGN_LEFT);
$text->setBackgroundColor('#FFFFFF');
$text->draw($canvas, 0 ,0);

Результат на этом изображении: text in pdf upside down

1 Ответ

0 голосов
/ 28 января 2019

Поддержка Setasign предоставила страницу в руководствах для понимания этой проблемы:

https://manuals.setasign.com/setapdf-core-manual/canvas/#index-2-1

TLDR;Я работал с PDF, который был ранее повернут (не знал), поэтому при работе с существующими страницами вы должны использовать:

$pageImported = $document->getCatalog()->getPages()->getPage(1);
$pageImported ->getStreamProxy()->encapsulateExistingContentInGraphicState();
$canvas       = $portada->getCanvas();

Таким образом, вы инкапсулируете контент и не работаете с исходным изображением страницысостояние.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...