2

既存の pdf の編集中に問題に直面しています。ここに、pdf の各ページの最初の行に従業員名を追加したい pdf があります。しかし、fpdf と fpdi を使用してこれを実行しようとすると、新しい PDF が従業員名で保存され、他のすべてのデータが PDF から削除されます。これは、pdfの編集と保存に使用しているコードです。

<code>
<?php
define('FPDF_FONTPATH','font/');
require_once('fpdf.php');
require_once('fpdi.php');

$pdf = new FPDI();
// add a page
$pdf->AddPage();
// set the sourcefile
$pagecount = $pdf->setSourceFile('upload/linebreak.pdf');

// import page 1
$tplidx = $pdf->importPage(1);
for ($i = 1; $i < $pagecount; $i++) { 
              $tplidx = $pdf->ImportPage($i); 


                     $pdf->useTemplate($tplidx, 10, 10, 200);
                     $pdf->AddPage();

                     $pdf->SetFont('Arial');
                     $pdf->SetTextColor(0,0,0);
                     $pdf->SetFontSize(8);

                     if ($i>=1) {
                        //$pdf->SetXY(50, 124);
                        $pdf->Write(1, "Emp Name : Sanjay Singh");
                     }

                }

$pdf->Output("upload/new_linebreak_pdf.pdf", "F");
?>
<code>

私のlinebreak.pdfには、次のようなデータがあります(これは私たちの組織の従業員規則です........これは私たちの組織の従業員規則です......これは私たちの従業員規則です.組織.....これは私たちの組織の従業員規則です....これは私たちの組織の従業員規則です)

これで、最初の行に従業員名を追加したいのですが、編集後、このような新しい pdf が生成されます (Emp Name : Sanjay Singh) 既に存在する他のデータは削除されます。

前もって感謝します !

4

1 に答える 1

0

問題は、FPDI のメソッドを間違った順序で呼び出していることです。実行する手順は次のとおりです。

  1. 変更したいページをインポートし、テンプレートを取得します
  2. ドキュメントに新しい空白ページを追加する
  3. そのドキュメントにテンプレートをロードします
  4. そのドキュメントに追加のコンテンツを書き込む

上記の概念を説明する簡単なコード例を次に示します。これをテストしたところ、期待どおりの出力が得られました。

$pdf = new FPDI();
$pageCount = $pdf->setSourceFile('file.pdf');

//  Iterate through every page
for( $pageNo=1; $pageNo<=$pageCount; $pageNo++ )
{
    //  Import page
    $templateId = $pdf->importPage($pageNo);
    $pdf->getTemplateSize($templateId);
    $pdf->addPage('P');
    $pdf->useTemplate($templateId);

    //  Modify page
    $pdf->SetFont('Arial');
    $pdf->SetTextColor(0,0,0);
    $pdf->SetFontSize(8);
    $pdf->Text(50,124,"Emp Name : Sanjay Singh");
}

$pdf->Output("upload/new_linebreak_pdf.pdf", "F");
于 2015-05-06T13:11:30.353 に答える