3

I editing existing pdf file using FPDI, and TCPDF libraries, by drawing a transparent rectangle.

$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;
            }
        }
    }
}

The problem is:
rectangle covering text, so there is no possbile to select it during reading output pdf file. There are layers methods in TCPDF, but I can only, group elements and manage their visibility, with it.
Also some of the pdf files contains text elements, others contains image - snapshot of the page.

Questions:
Is it possible set stream, from imported page, as top layer and draw rectangle as lower layers, or as the backgrund?
How to recognize that imported pdf contains text ements, or images?

Marek D.
  • 51
  • 5

0 Answers0