【问题标题】:create new PDF using TCPDF and import existing PDF into it使用 TCPDF 创建新 PDF 并将现有 PDF 导入其中
【发布时间】:2017-04-13 00:10:27
【问题描述】:

如何使用TCPDF? 将现有的pdf 文件导入新创建的pdf

所以假设我目前正在处理发票部分。一旦用户点击打印发票,我将开始收集数据,然后使用TCPDF 创建一个PDF。但是,如果可用,我需要将另一个现有 PDF “附加”到其中。因此,假设从TCPDF 生成的 1 个发票文件包含 5 页。然后我必须将另一个现有的PDF“附加”到这个文件中。所以总共将是 6 页或更多,取决于现有的 PDF 文件。现有的 PDF 文件由用户上传。因此,现有的PDF 文件将首先上传,然后将添加到新生成的发票文件中。

有什么方法可以实现吗?

【问题讨论】:

  • import 对我来说工作正常,但它正在从导入的 pdf 中删除现有图像。有什么解决办法吗?
  • @MohammadIntsar 请为此提出一个新问题。

标签: tcpdf


【解决方案1】:

我正在解决类似的问题,最后我使用 PHP 中的 GhostScript 合并了 PDF:

exec('gs -o ' . $merged_path
    . ' -sDEVICE=pdfwrite -dDPFSETTINGS=/prepress '
    . $first_pdf_path . ' '
    . $attachment_path);

它工作了几年就好了。

【讨论】:

  • 我不知道是什么先生
  • GhostScript 是一个处理 PDF 的工具。我不知道仅在 TCPDF 中执行此操作的方法,并且使用 GhostScript 的方法非常简单。上述行将两个 PDF(first_pdfattachment)合并为merged
  • 如果你有兴趣解决这个问题,解释一下你不明白的地方会很有用。
【解决方案2】:

你可以通过添加FPDI来实现这一点:

<?php
require_once('tcpdf.php');
require_once('fpdi.php');

$pdf = new FPDI();

//Merging of the existing PDF pages to the final PDF
$pageCount = $pdf->setSourceFile('existing_pdf.pdf');
for ($i = 1; $i <= $pageCount; $i++) {
    $tplIdx = $pdf->importPage($i, '/MediaBox');
    $pdf->AddPage();
    $pdf->useTemplate($tplIdx);
}

//Your code relative to the invoice here

$pdf->Output();

【讨论】:

  • @vinfoster0701 对您有帮助吗?
  • 它从导入的 pdf 中删除现有图像。有什么解决办法吗?
  • 完全被低估的帖子。 +1 进一步帮助我
【解决方案3】:

我使用过 TCPDI(TCPDF 的扩展)。你可以在 github https://github.com/pauln/tcpdi 上找到它。也有 forks 可供作曲家使用。

使用方便... TCPDI 扩展了 TCPDF,所以构造函数参数是一样的

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

然后将现有 pdf 文件中的页面添加到页面之后

$pagecount = $pdf->setSourceFile($existingPdfPath);
for ($i = 1; $i <= $pagecount; $i++) {
    $tplidx = $pdf->importPage($i);
    $pdf->AddPage();
    $pdf->useTemplate($tplidx);
}

【讨论】:

    猜你喜欢
    • 2010-12-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多