Импортировать и подписать PDF в PHP

0

У меня есть pdf, который я хочу подписать, используя сертификат, с php-скриптом. Я разлагаю действие в 2 этапа:

  • Импорт PDF в скрипт
  • Подпишите его с помощью сертификата

Я могу решить первую часть... Я использую TCPDI (https://github.com/pauln/tcpdi) и TCPDF.

Здесь мой сценарий:

<?php require_once('tcpdf/config/tcpdf_config.php');
require_once('tcpdf/tcpdf.php');
require_once('tcpdi.php');
$pdf = new TCPDI(PDF_PAGE_ORIENTATION, PDF_UNIT, PDF_PAGE_FORMAT, true, 'UTF-8', false);

$pdf->AddPage();
$pdf->setSourceFile('file.pdf');

$pdf->Output('output.pdf', 'I')
?>

У меня нет никаких ошибок, но вывод пуст, с небольшой черной строкой в заголовке.

Вы знаете, в чем проблема? Я также пробовал FPDF/FPDI.

Благодарю.

С уважением.

EDIT 25/11/2014: Здесь мое решение, используя TCPDF:

$pdf = new TCPDI(PDF_PAGE_ORIENTATION, PDF_UNIT, PDF_PAGE_FORMAT, true, 'UTF-8', false);

$pdfdata = file_get_contents('/Users/ynp/Downloads/billofsale.pdf'); 
$pagecount = $pdf->setSourceData($pdfdata); 
for ($i = 1; $i <= $pagecount; $i++) { 
    $tplidx = $pdf->importPage($i);
    $pdf->AddPage();
    $pdf->useTemplate($tplidx); 
}

$pdf->Output();

Вероятно, у вас есть некоторые ошибки в файле fpdf_tpl.php, просто измените прототип соответствующих функций.

Теги:
pdf
import

1 ответ

1

Фактически вы определяете только файл soure, но вы не импортируете его. Попробуй это:

$pageCount = $pdf->setSourceFile('file.pdf');
for ($pageNo = 1; $pageNo <= $pageCount; $pageNo++) {
    $tplIdx = $pdf->importPage($pageNo);
    $pdf->AddPage();
    $pdf->useTemplate($tplIdx, null, null, 0, 0, true);
}

Таким образом вы импортируете все существующие страницы в структуру, которую вы можете повторно использовать с FPDI. Полученный документ имеет полную новую внутреннюю структуру, и вы также можете потерять контент, как описано здесь.

Если вам нужно подписать исходный документ, вы можете проверить компонент SetaPDF-Signer (не бесплатно!).

  • 0
    На самом деле это работа. Но я бы хотел использовать lib TCPDF, особенно потому, что функция sign бесплатна ... PS: в вашем for есть ошибка, это $pageNo<=$pageCount

Ещё вопросы

Сообщество Overcoder
Наверх
Меню