2014-02-13 2 views
2

기존 pdf를 편집하는 동안 문제가 발생합니다. 여기에는 pdf의 모든 페이지 첫 줄에 직원 이름을 추가하려는 pdf가 있습니다. 그러나 fpdf 및 fpdi를 사용하여이 작업을 수행하려고하면 새 pdf가 직원 이름으로 저장되고 다른 모든 데이터는 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 이름 : Sanjay Singh) 이미 다른 데이터가 삭제됩니다.

감사의 말 전진!

답변

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"); 
관련 문제