3

我使用 FPDI 和 TCPDF 库通过绘制透明矩形来编辑现有的 pdf 文件。

$pdf = new FPDI(); 
$pagecount = $pdf->setSourceFile('my.pdf'); 
$unserialized = unserialize($questionaire['cordinates']); 
for ($page_counter = 1; $page_counter <= $pagecount; $page_counter++) {
    $tplidx = $pdf->ImportPage($page_counter);
    $s = $pdf->getTemplatesize($tplidx);
    $pdf->AddPage($s['h'] > $s['w'] ? 'P' : 'L', array($s['w'], $s['h']));
    $pdf->useTemplate($tplidx, 0, 0, 0, 0, true);

    for ($i = 0; $i < sizeof($unserialized); $i++) {
        $selection = (object)$unserialized[$i];
        if ($page_counter == $selection->current_frame) {
            switch ($selection->type) {
                case "Rect":
                    $pdf->SetAlpha(0.3);
                    $color = int2rgb($selection->select_color);
                    $pdf->Rect(($selection->left), ($selection->top), ($selection->width), ($selection->height), 'F', NULL, $color);
                            break;
                    case "Comment":
                        break;
            }
        }
    }
}

问题是
矩形覆盖文本,因此在读取输出 pdf 文件时无法选择它。TCPDF 中有层方法,但我只能用它对元素进行分组并管理它们的可见性。
一些 pdf 文件还包含文本元素,其他包含图像 - 页面快照。

问题:
是否可以将导入页面的流设置为顶层并绘制矩形作为下层,或作为背景?
如何识别导入的 pdf 包含文本元素或图像?

4

0 回答 0