2015-02-07 75 views
1

您好我正在使用FPDF和FPDI,我使用FPDI連接幾個PDF,然後使用FPDF來填寫基於填寫表單的信息,我已經建立了一個SetPage方法在FPDF中能夠設置我正在工作的頁面,我能夠在第一個文件上完全寫入(前3頁)。但是,當我試圖在第二個文件(第四個和連續頁面)上寫入時,我使用SetXY和Write,但沒有寫入任何內容,我可以添加圖像(頁面底部的條形碼),但沒有文本,關於我在做什麼錯誤的任何想法?FPDF沒有寫在所有頁面上

這是我得來連接文件的代碼:

<?php 
session_start(); 
require_once('lib/pdf/fpdf.php'); 
require_once('lib/pdi/fpdi.php'); 
require_once('lib/barcode/class/BCGFontFile.php'); 
require_once('lib/barcode/class/BCGColor.php'); 
require_once('lib/barcode/class/BCGDrawing.php'); 
require_once('lib/barcode/class/BCGcode39extended.barcode.php'); 

$contractType = $_SESSION['addition']; 

require_once('barcode.php'); 

if(isset($contractType)) 
    { 
    $files = array('lib/blank/NDA.pdf'); 

     if($contractType = 'artist') 
     { 
      array_push ($files, 
       'lib/blank/Distro.pdf', 
       'lib/blank/Management-Trial.pdf' 
      ); 
     } else { 
      echo "Whoops! Something must've happened when you were filling out your contracts! Please try filling them out again. Sorry!"; 
     } 
    } 

$pdf = new FPDI(); 
    foreach ($files AS $file) { 
     $pageCount = $pdf->setSourceFile($file); 
     for($n = 1; $n <= $pageCount; $n++) { 
      $tmpIdx = $pdf->importPage($n); 
      $size = $pdf->getTemplateSize($tmpIdx); 
      if($size['w'] > $size['h']) { 
       $pdf->AddPage('L', array($size['w'], $size['h'])); 
      } else { 
       $pdf->AddPage('P', array($size['w'], $size['h'])); 
      } 
      $pdf->useTemplate($tmpIdx); 
     } 
    } 
    //NDA FILLER 
    include('lib/filler/NDA.php'); 
    //Distro Contract Filler 
    include('lib/filler/Distro.php'); 

//session_unset(); 
$pdf->Output(); 
?>  

這是填寫的第一個PDF的代碼(其中工程完全沒問題):

NDA.php

<?php 
//ID No. 
$idcoded = 'idbars/'.$_SESSION['name'].'.png'; 
/* 
for($p = 2; $p <= $pages; $p++) 
{ 
    $pdf->Image($idcoded,0,350); 
    $pdf->setPage($p); 
} 
*/ 

$pdf->SetPage(1); 
$pdf->Image($idcoded,0,350); 
$pdf->SetFont('Helvetica'); 
$pdf->SetTextColor(255, 0, 0); 
//NDA DATE 
$pdf->SetXY(51, 109.5); 
$pdf->Write(0, date(d)); 
$pdf->SetXY(72, 109.5); 
$pdf->Write(0, date(F)); 
//Legal Name 
$pdf->SetXY(72, 114.5); 
$pdf->Write(0, $_SESSION['name']); 
//stage Name 
$pdf->SetXY(80, 119.5); 
$pdf->Write(0, $_SESSION['sname']); 

$pdf->setPage(2); 
$pdf->Image($idcoded,0,350); 
$pdf->setPage(3); 
$pdf->Image($idcoded,0,350); 
$signature = 'idbars/'.$_SESSION['name'].'_sig.png'; 
$pdf->Image($signature,20,105,100); 


?> 

這是我用來嘗試寫在第二個PDF,我已經嘗試將NDA.php和Distro.php結合到一個文件中,並沒有什麼區別

Distro.php

<?php 

$pdf->SetPage(4); 
$pdf->SetXY(10,10); 
$pdf->Cell(0, $_SESSION['name']); 
$pdf->Write(0, $_SESSION['name']); 
$pdf->Image($idcoded,0,350); 
?> 

的頁面,這是建設工程關閉此形式:

https://secure.gr8label.com/sign/artist/Dev%20Test/

回答

0

FPDF 「高速緩存」 當前使用的字體信息。當你跳回到另一頁FPDF「認爲」該字體已經定義/設置,但在PDF文件本身並不是。您應該在導入循環中設置字體和大小,以確保字體在所有頁面上都可用(我認爲它也可以工作,只在第一頁上定義)。

無論如何,你應該看到在書寫頁面之間跳轉會導致問題,你應該創建一個從上到下創建文件的邏輯,而不用像「SetPage()」那樣的東西。