2012-05-09 35 views
10

Tôi phải hợp nhất các tệp PDF khi người dùng cần. Các tệp đã tồn tại và mọi thứ đều ổn. Tôi đang sử dụng mã fallowing để hợp nhất các tệp:FPDI hợp nhất các tệp PDF, dòng lạ xuất hiện

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++) 
      { 
       $this->AddPage('P'); 
       $tplidx = $this->ImportPage($i); 
       $this->useTemplate($tplidx); 
      } 
     } 
    } 
} 

$pdf = new concat_pdf(); 
$pdf->setFiles($files); //$files is an array with existing PDF files. 
$pdf->concat(); 
$pdf->Output("bulk.pdf", "D"); 

Tất cả các tệp được hợp nhất và tất cả nội dung đều có. Vấn đề là, ở đầu mỗi trang trong tệp mới, một dòng màu đen xuất hiện. Nội dung, lề, v.v. đều hoàn toàn giống như tệp gốc, nhưng dòng này không xuất hiện ở đâu cả (mà tôi có thể nói). Nó không dày, nhưng có thể nhìn thấy rõ ràng. Nó không gây rối với các nội dung khác hoặc bất cứ điều gì, nhưng không cần thiết ở đó và tôi cần phải loại bỏ nó.

Tôi đã thử thay đổi tham số thứ hai thành chức năng ImportPage() cho tất cả các tùy chọn được mô tả trong documentation, nhưng không có sự khác biệt nào. Vì đây là điều duy nhất mà tôi thấy tôi có thể thay đổi trong vài dòng mã này, tôi thực sự không biết điều gì làm cho đường màu đen xuất hiện. Tôi đã tìm kiếm các vấn đề tương tự, nhưng cho đến nay - không có may mắn. Bất cứ ai có một ý tưởng? Cảm ơn trước!

before after

+0

Bạn có thêm ảnh chụp màn hình không? - có lẽ là cách tốt nhất để minh họa vấn đề. – halfer

+0

Tôi đã thêm ảnh chụp màn hình, nhưng vì tôi không thể tiết lộ nội dung của các tệp, tôi chỉ cắt những gì được nhìn thấy ở trên cùng khi mở cùng một tệp - một lần bình thường, sau khi được hợp nhất với các tệp khác. Mọi thứ dưới đây hoàn toàn được định vị chính xác. – Nikoloff

Trả lời

1

Tôi có giải pháp về vấn đề này. Tiêu đề và chân trang mặc định trong tcpdf chứa dòng. Bạn phải xóa cơ thể của phương pháp chân() và tiêu đề() trong lớp TCPDF trên dòng 4214.

18

Một điều tốt hơn để làm như bạn sẽ không cần phải sửa đổi mã nguồn là để thêm các dòng:

$this->setPrintHeader(false); 
    $this->setPrintFooter(false); 

ở đầu hàm concat() của bạn.

+2

Cảm ơn bạn, đơn giản nhưng hiệu quả. :) – illuzive

2

Để tránh chỉnh sửa thư viện TCPDF, hãy ghi đè các phương thức Chân trang và Đầu trang trong lớp mở rộng của bạn.

class concat_pdf extends FPDI 
{ 
    public function Footer() {} 
    public function Header() {} 
} 
Các vấn đề liên quan