【问题标题】:Setasign SetaPDF SetaPDF_Core_Text_Block / canvas->text() displays the text upside downSetasign SetaPDF SetaPDF_Core_Text_Block / canvas->text() 将文本倒置显示
【发布时间】:2019-01-28 10:41:32
【问题描述】:

使用来自 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);

此图像中的结果:

【问题讨论】:

    标签: php pdf setapdf


    【解决方案1】:

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

    所以你封装了内容,不处理页面原始图形状态。

    【讨论】:

    • 在您的情况下,图形状态已旋转,但还应考虑页面旋转。这也记录在给定的链接中。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-22
    • 2018-06-06
    • 2013-04-12
    • 2021-06-14
    • 1970-01-01
    相关资源
    最近更新 更多