TCPDF_import is not bringing in an existing file

冷暖自知 提交于 2019-12-02 03:32:38

问题


I have a PDF of a blank certificate, I want to fill in two lines when the user completes a course of study, and display the PDF so they can print or download it.

I am using TCPDF to write the two lines on an existing PDF.

Per suggestions in a previous post ( using PHP to fill in a PDF ), I am using TCPDF_IMPORT to bring an existing PDF into the object, and writing on top of it.

However, the original PDF does NOT show on the screen, I am left with a blank document, with only the lines of text I created.

Below is what I have to this point - it yields ONLY the line "This is my test text."

<?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' );
?>

回答1:


Well, not as eloquent as I wanted, but I found something that works....

<?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' );
?>

Thanks to Simon who posted in http://sourceforge.net/p/tcpdf/discussion/435311/thread/66272894/

I was able to modify this - it entails running two libraries - but it works.




回答2:


Create a file and call it pdfConcat.php and paste:

<?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);
               }
          }
     }
}
?>

Usage:

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/

Olè!!!



来源:https://stackoverflow.com/questions/26029065/tcpdf-import-is-not-bringing-in-an-existing-file

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!