TCPDF_import не переносит существующий файл

У меня есть PDF с пустым сертификатом, я хочу заполнить две строки, когда пользователь заканчивает курс обучения, и показать PDF, чтобы он мог распечатать или загрузить его.

Я использую TCPDF, чтобы написать две строки в существующем PDF.

За предложения в предыдущем посте ( используя PHP для заполнения 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' );
?>

2

Решение

Ну, не так красноречиво, как я хотел, но я нашел то, что работает ….

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

Спасибо Саймону, который написал в http://sourceforge.net/p/tcpdf/discussion/435311/thread/66272894/

Я был в состоянии изменить это — это влечет за собой запуск двух библиотек — но это работает.

5

Другие решения

Создайте файл и назовите его 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 !!!

3

По вопросам рекламы [email protected]