Это может быть странно, но я не могу найти какую-либо функцию TCPDF для достижения того, что я пытаюсь сделать. Поэтому я вынужден изменить часть исходного кода TCPDF в соответствии со своими потребностями. По сути, я хочу иметь возможность прикрепить поле подписи emtpy к документу PDF, который будет перемещаться вдоль оси Y при изменении документа (из-за изменения информации о пользователе). Проблема в том, что иногда поле для подписи иногда перекрывает нижний колонтитул, который является нижним 20 см документа PDF. Поэтому, когда он перекрывается, мне нужно пустое поле для автоматического перехода на следующую страницу. Я уже изменил некоторый код, чтобы значения x и y были относительными, а не абсолютными, как указывает исходная функция:
public function addEmptySignatureAppearance($x='', $y='', $w=0, $h=0, $page=-1, $name='') {
++$this->n;
if ($x === '') {
$x = $this->x;
}
if ($y === '') {
$y = $this->y+30;
}
$this->empty_signature_appearance[] = array('objid' => $this->n) + $this->getSignatureAppearanceArray($x, $y, $w, $h, $page, $name);
}
Сложная задача - заставить окно перейти на следующую страницу, когда она перекрывается , Я попытался сделать следующее:
protected function getSignatureAppearanceArray($x=0, $y=0, $w=0, $h=0, $page=-1, $name='') {
$sigapp = array();
//if (($page < 1) OR ($page > $this->numpages)) {
// $sigapp['page'] = $this->page;
//} else {
// $sigapp['page'] = intval($page);
//}
if ($y >= 267) {
$sigapp['page'] = $this->page+1;
$y = $this->y+30;
} else {
$sigapp['page'] = $this->page;
}
if (empty($name)) {
$sigapp['name'] = 'Signature';
} else {
$sigapp['name'] = $name;
}
$a = $x * $this->k;
$b = $this->pagedim[($sigapp['page'])]['h'] - (($y + $h) * $this->k);
$c = $w * $this->k;
$d = $h * $this->k;
$sigapp['rect'] = sprintf('%F %F %F %F', $a, $b, ($a + $c), ($b + $d));
return $sigapp;
}
По существу, оператор if
указывает, что, если верхний левый угол поля находится на расстоянии 267 см вниз или больше PDF, возьмите текущую страницу и добавьте дополнительная страница Надеемся, что это должно передать поле для подписи на следующую страницу.
Однако, когда я пытаюсь это сделать, я получаю следующую ошибку:
Notice: Undefined offset: 3 in C:\xampp\htdocs\*\*\tcpdf\tcpdf.php on line 13513
TCPDF ERROR: Some data has already been output, can't send PDF file
Добавлено пустое поле для подписи к коду PDF php просто как: $pdf->addEmptySignatureAppearance('', '', 80, 15);
Может ли кто-нибудь помочь с этой проблемой, помогая мне достичь моей цели. Я впадаю в отчаяние.