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?