Setasign SetaPDF SetaPDF_Core_Text_Block / canvas-> text()上下颠倒显示文本

时间:2019-01-28 10:41:33

标签: php pdf setapdf

使用Setasign的SetaPDF时,从文档导入页面并尝试在该页面上绘制一行文本时,该文本上下颠倒显示,就像在x轴上反映出来一样。

我尝试使用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 :(得分:0)

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

因此,您封装了内容并且不使用页面的原始图形状态。