使用PDFLib绘制一个rect

时间:2014-02-12 14:09:45

标签: php pdf pdflib

我正在寻找在现有pdf文件中绘制矩形的解决方案。 我尝试使用函数rect(x,y,widht,height)执行此操作,但它不起作用。我有一条错误消息“不能在'对象'范围内调用函数'”,但我不明白这是多么正确。

$searchpath = dirname(dirname(__FILE__)) . '/data';
$pdfinput = "2972172dpi.pdf";
$docoptlist = "requiredmode=minimum";

try {
$p = new PDFlib();
$p->set_option("errorpolicy=return");

# all strings are expected as utf8
$p->set_option("stringformat=utf8");
$p->set_option("SearchPath={{" . $searchpath . "}}");
$doc = $p->open_pdi_document($pdfinput, $docoptlist);
if ($doc == 0) {
    die("Error: " . $p->get_errmsg());
}
$pcosmode = $p->pcos_get_number($doc, "pcosmode");
if ($pcosmode == 0) {
    printf("Minimum mode: no more information available<br/><br/>");
    $p->delete();
    exit(0);
} else {
    $pages = $p->pcos_get_number($doc, "length:pages");
    printf($pages . " pages: <br/>");
    for ($page = 0; $page < $pages; $page++) {
        $param = "pages[" . $page . "]/";
        $widht = round($p->pcos_get_number($doc, $param . "width") / 2.8346456692913);
        $height = round($p->pcos_get_number($doc, $param . "height") / 2.83464566929134);
        printf("Page " . ($page + 1) . " : largeur= %d mm - hauteur= %d mm<br/>", $widht, $height);
        if ($widht == 210 && $height == 297) {
          $p->rect(8.503937007874, 8.503937007874, 578.2677165354, 824.8818897638);
          $p->stroke();
          echo 'Dessiné';
          } */
    }
}
$p->close_pdi_document($doc);
} catch (PDFlibException $e) {
die("PDFlib exception occurred in starter_pcos sample:<br/>" .
        "[" . $e->get_errnum() . "] " . $e->get_apiname() . ": " .
        $e->get_errmsg() . "<br/>");
} catch (Exception $e) {
die($e);
}

2 个答案:

答案 0 :(得分:1)

您忘了打开输出文档。使用PDFlib时,总是创建一个新的输出PDF,因此使用$ p-&gt; begin_document()是必要的。

if ($p->begin_document($outfile, "") == 0)
    throw new Exception("Error: " . $p->get_errmsg());

然后你必须打开一个页面,从输入文档中放置你的页面然后你可以添加矩形。

您在PDFlib食谱中找到了一个非常相似的示例: http://www.pdflib.com/pdflib-cookbook/pdf-import/stamp-pages/php-stamp-pages/页面上放置了文本标记。在你的情况下,你应该放置矩形。

我想,值得指出PDFlib教程,第7.3章“使用PDI导入PDF页面”。

答案 1 :(得分:0)

要渲染一个矩形,必须开始一个页面。

你必须做这样的事情: 首先,您开始一个新页面。其次,将您的PDF文件放在新页面中。 第三,在页面上渲染矩形。 最后关闭新的pdf。

$p->begin_page(page_width, page_height);
$p->fit_image(template, 0.0, 0.0, "");
$p->rect(55,520,400,20);
$p->end_page();