TCPDF_import没有引入现有文件

时间:2014-09-25 01:28:26

标签: php pdf-generation tcpdf

我有一张空白证书的PDF,我想在用户完成一门课程后填写两行,并显示PDF以便他们打印或下载。

我正在使用TCPDF在现有PDF上写两行。

根据上一篇文章(using PHP to fill in a PDF)中的建议,我使用TCPDF_IMPORT将现有PDF带入对象,并在其上面书写。

但是,原始PDF不会显示在屏幕上,我留下了一个空白文档,只有我创建的文本行。

以下是我对此的看法 - 它仅产生“这是我的测试文本”这一行。

<?php
// Include the main TCPDF library (search for installation path).
require_once( '../tcpdf_import.php' );

// create new PDF document
$pdf = new TCPDF_IMPORT( '1_cert.pdf' );

// set document information
$pdf->SetCreator( 'aaa.com' );
$pdf->SetAuthor( 'aaa.com' );
$pdf->SetTitle( 'Certificate Test' );
$pdf->SetSubject( 'In completion of x-module' );
$pdf->SetKeywords( '' );

// set default monospaced font
$pdf->SetDefaultMonospacedFont( PDF_FONT_MONOSPACED );

// set font
$pdf->SetFont( 'times', 'B', 30 );

// display
$pdf->SetDisplayMode( 'fullpage', 'SinglePage', 'UseNone' );

// set margins
$pdf->SetMargins( 10, PDF_MARGIN_TOP, 10 );

// set auto page breaks
$pdf->SetAutoPageBreak( TRUE, PDF_MARGIN_BOTTOM );

// set image scale factor
$pdf->setImageScale( PDF_IMAGE_SCALE_RATIO );

// set some language-dependent strings (optional)
if ( @file_exists( dirname( __FILE__ ).'/lang/eng.php' ) ) {
     require_once( dirname( __FILE__ ).'/lang/eng.php' );
     $pdf->setLanguageArray( $l );
}


// -------------------------------------------------------------
// stuff i believe should write test over an existing PDF 
// -------------------------------------------------------------

$pdf->StartPage( 'L', '', false );
$pdf->SetY( 50 );
$pdf->Cell( 0, 0, 'test text', 0, 1, 'C' );
$pdf->EndPage( false );

// -------------------------------------------------------------
// end of stuff i believe should write test over an existing PDF 
// -------------------------------------------------------------

//Close and output PDF document
$pdf->Output( 'aTest.pdf', 'I' );
?>

3 个答案:

答案 0 :(得分:5)

嗯,不像我想的那样雄辩,但我发现了一些有用的东西......

<?php
require_once "tcpdf/tcpdf.php";
require_once "FPDI/fpdi.php";
$pdf = new FPDI( 'L', 'mm', 'LETTER' ); //FPDI extends TCPDF
$pdf->AddPage();
$pages = $pdf->setSourceFile( 'test.pdf' );
$page = $pdf->ImportPage( 1 );
$pdf->useTemplate( $page, 0, 0 );
$pdf->Output( 'newTest.pdf', 'F' );
?>

感谢Simon发表于http://sourceforge.net/p/tcpdf/discussion/435311/thread/66272894/

我能够修改它 - 它需要运行两个库 - 但它可以工作。

答案 1 :(得分:3)

创建一个文件并将其命名为 pdfConcat.php 并粘贴:

<?php
require_once("tcpdf/tcpdf.php");
require_once("fpdi/fpdi.php");

class concat_pdf extends FPDI {
     var $files = array();
     function setFiles($files) {
          $this->files = $files;
     }
     function concat() {
          foreach($this->files AS $file) {
               $pagecount = $this->setSourceFile($file);
               for ($i = 1; $i <= $pagecount; $i++) {
                    $tplidx = $this->ImportPage($i);
                    $s = $this->getTemplatesize($tplidx);
                    $this->AddPage('P', array($s['w'], $s['h']));
                    $this->useTemplate($tplidx);
               }
          }
     }
}
?>

<强>用法:

include_once("pdfConcat.php");
$pdf =& new concat_pdf();

$pdf->setFiles(array("doc.pdf","pauta.pdf", "4bp.pdf", "5bp.pdf"));
$pdf->concat();
$pdf->Output("newpdf.pdf", "I");

http://garridodiaz.com/concatenate-pdf-in-php/

OLE !!!

答案 2 :(得分:0)

如此时(2020-04-16)TCPDF_IMPORT documentation page中所述

TCPDF_IMPORT !!!该课程正在开发中!!!

此外,FPDI的免费版本支持PDF直至1.4版

如果其他人正在寻找与TCPDF兼容的东西,我使用了https://github.com/pauln/tcpdi中的TCPDI。您也可以为作曲家准备一些叉子。

用法非常简单,类似于FPDI。这里是我的代码的片段。我有一个隐私政策(一个静态PDF文件),并希望在每个页面的页脚中保存一个带有用户名和协议日期的副本。

// Create new PDF document
$pdf = new TCPDI(PDF_PAGE_ORIENTATION, PDF_UNIT, PDF_PAGE_FORMAT, true, 'UTF-8', false);
...
// Add the pages from the source file.
$pagecount = $pdf->setSourceFile($localPrivacy);
for ($i = 1; $i <= $pagecount; $i++) {
    $tplidx = $pdf->importPage($i);
    $pdf->AddPage();
    $pdf->useTemplate($tplidx);
    // Add agreement text in document footer
    $pdf->SetXY(15,282);
    $pdf->Cell(180, 5, "Documento approvato da {$fullName} il {$date}", 0, 0, 'C');
}
// Send PDF on output
$pdf->Output(FOLDER_PATH . DIRECTORY_SEPARATOR . "{$userId}.pdf", 'F');