使用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);
此图像中的结果:
答案 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();
因此,您封装了内容并且不使用页面的原始图形状态。