web-dev-qa-db-ja.com

TCPDFを使用して新しいPDFを作成し、既存のPDF

TCPDF?を使用して、既存のpdfファイルを新しく作成したpdfにインポートするにはどうすればよいですか。

したがって、現在請求書セクションを実行していると仮定します。ユーザーが[請求書の印刷]をクリックしたら、データの収集を開始し、PDFを使用してTCPDFを作成します。ただし、可能であれば、別の既存のPDFを添付」する必要があります。したがって、1つの請求書ファイルでTCPDFから生成されたものが5ページで構成されているとします。このファイルに別の既存のPDFを「添付」する必要があります。したがって、既存のPDFファイルによって異なりますが、合計は6ページ以上になります。既存のPDFファイルはユーザーによってアップロードされるため、既存のPDFファイルが最初にアップロードされ、次に新しく生成された請求書ファイルに追加されます。

それを達成する方法はありますか?

6
Vinfoster0701

これは、 [〜#〜] 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();
8
Veve

私は同様の問題を解決していましたが、PHPのGhostScriptを使用してPDFをマージすることになりました。

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

それは数年間うまく機能しています。

0
Jakuje

TCPDI(TCPDFの拡張機能)を使用しました。 github https://github.com/pauln/tcpdi で見つけることができます。作曲家の準備ができているフォークもあります。

使い方は簡単です... 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);
}
0
AbdulkadirFaghi