capwelton/tcpdi

TCPDI 是一个用于与 TCPDF 一起使用的 PHP 类,用于导入 PDF

dev-master 2019-09-09 17:18 UTC

This package is not auto-updated.

Last update: 2024-09-18 16:01:41 UTC


README

带有 PDF 注释处理的 Composer 准备就绪的 TCPDI

TCPDF 的 PDF 导入器,基于 FPDI。需要 pauln/tcpdi_parser 和包含在存储库中的 FPDF_TPL

安装

在 composer.json 中链接包,例如:

{
    "require": {
        "rafikhaceb/tcpdi": "dev-master"
    }
}

用法

用法基本上与 FPDI 相同,除了导入 TCPDI 而不是 FPDI。它还有一个 "setSourceData()" 函数,可以接受原始 PDF 数据,适用于文件不在磁盘上或无法由 TCPDI 读取的情况。

// Create new PDF document.
$pdf = new TCPDI(PDF_PAGE_ORIENTATION, PDF_UNIT, PDF_PAGE_FORMAT, true, 'UTF-8', false);

// Add a page from a PDF by file path.
$pdf->AddPage();
$pdf->setSourceFile('/path/to/file-to-import.pdf');
$idx = $pdf->importPage(1);
$pdf->useTemplate($idx);

$pdfdata = file_get_contents('/path/to/other-file.pdf'); // Simulate only having raw data available.
$pagecount = $pdf->setSourceData($pdfdata); 
for ($i = 1; $i <= $pagecount; $i++) { 
    $tplidx = $pdf->importPage($i);
    $pdf->AddPage();
    $pdf->useTemplate($tplidx); 
}

截至版本 1.1,TCPDI 还包括处理 PDF 注释的附加功能。由于注释是相对于出血框而不是裁剪框定位的,因此您需要确保导入的是完整的出血框;还引入了一个新函数来设置页面格式(包括裁剪框在内的各种框)来自导入的页面,以便导入的页面与原始页面更匹配。以下示例演示了这一点

// Create new PDF document.
$pdf = new TCPDI(PDF_PAGE_ORIENTATION, PDF_UNIT, PDF_PAGE_FORMAT, true, 'UTF-8', false);

// Add a page from a PDF by file path.
$pdf->setSourceFile('/path/to/file-to-import.pdf');

// Import the bleed box (default is crop box) for page 1.
$tplidx = $pdf->importPage(1, '/BleedBox');
$size = $pdf->getTemplatesize($tplidx);
$orientation = ($size['w'] > $size['h']) ? 'L' : 'P';

$pdf->AddPage($orientation);

// Set page boxes from imported page 1.
$pdf->setPageFormatFromTemplatePage(1, $orientation);

// Import the content for page 1.
$pdf->useTemplate($tplidx);

// Import the annotations for page 1.
$pdf->importAnnotations(1);

TCPDI_PARSER

用于 TCPDI 的解析器,基于 TCPDF_PARSER。支持 PDF 1.7 及以下版本。