2009-07-30 41 views
13

Tôi muốn tạo tệp pdf từ trang web của tôi được viết bởi php. Tài liệu của tôi phải sản xuất từ ​​mysql và tạo tệp pdf. Tôi muốn lưu bản pdf này và đọc.Xin vui lòng cung cấp cho tôi mẫu mã.Tạo một tệp PDF với PHP

+1

Bạn có thể sử dụng thư viện [TCPDF] (http://www.tecnick.com/public/code/cp_dpage.php?aiocp_dp=tcpdf) để tạo tệp PDF. Trang web này cũng có một số ví dụ về mã. Đối với việc tìm nạp và thao tác dữ liệu từ db của bạn, bạn sẽ phải tự viết mã này. – RaYell

+0

Tôi nghĩ [fpdf] (http://www.fpdf.org) Cung cấp cách thức đơn giản nhất để tạo các tệp PDF với các mã mẫu được cung cấp trên trang web. Tại đây, bạn có thể tìm thấy ví dụ [http://www.fpdf.org/en/script/script10.php] (http://www.fpdf.org/en/script/script10.php) – Milap

+0

@bb. bạn có thể xem câu hỏi của tôi http://stackoverflow.com/questions/16925076/php-creating-a-pdf-how-can-i-get-this-working-errors-populating/16925161?noredirect=1# 16925161 – ValleyDigital

Trả lời

13

Sử dụng TCPDF thư viện:

<? 
require_once("tcpdf/tcpdf.php"); 
$pdf = new TCPDF(); 

// set document information 
$pdf->SetCreator(PDF_CREATOR); 
$pdf->SetAuthor("my name"); 
$pdf->SetTitle("my doc"); 
$pdf->SetSubject("x"); 
$pdf->SetKeywords("a, b, c"); 


// set default header data 
$pic = "/gfx/header.png"; 
$pdf->SetHeaderData(realpath($pic), "25", "Title"); 

// set header and footer fonts 
$pdf->setHeaderFont(array(PDF_FONT_NAME_MAIN, '', PDF_FONT_SIZE_MAIN)); 
$pdf->setFooterFont(array(PDF_FONT_NAME_DATA, '', PDF_FONT_SIZE_DATA)); 

//set margins 
$pdf->SetMargins(PDF_MARGIN_LEFT, PDF_MARGIN_TOP, PDF_MARGIN_RIGHT); 
$pdf->SetHeaderMargin(PDF_MARGIN_HEADER); 
$pdf->SetFooterMargin(PDF_MARGIN_FOOTER); 

    //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 
$pdf->setLanguageArray($l); 

//initialize document 
$pdf->AliasNbPages(); 

// add a page 
$pdf->AddPage(); 

// --------------------------------------------------------- 

// set font 
$pdf->SetFont("helvetica", "", 12); 

// set a background color 
$pdf->SetFillColor(230, 240, 255, true); 


$pdf->SetFont("", "b", 16); 
$pdf->Write(16, "some text\n", "", 0, 'C'); 

$pdf->Output("filename.pdf", "I"); 
?> 
+0

Tôi kiểm tra mã này.Nhưng tôi đã tìm thấy lỗi tại $ pdf-> Viết (16, "một số văn bản" \ n "," ", 0, 'C'); $ pdf-> Đầu ra (" tên tệp. pdf "," I "); các dòng này. Làm thế nào để giải quyết? – thinzar

+0

có một" quá nhiều. lấy làm tiếc. nó đã được sửa ngay bây giờ –

1

tôi bạn đã có một trang HTML, cách nhanh nhất để bạn có thể sử dụng một công cụ như HTML2PDF để "chuyển đổi" rằng dữ liệu HTML sang PDF, thay vì tạo ra một tập tin PDF "từ đầu".

Trích dẫn trang đó:

Nó cho phép việc chuyển đổi HTML hợp lệ 4,01 ở định dạng PDF, và được phân phối theo LGPL.

Thư viện này được thiết kế để xử lý chủ yếu là TABLE gắn với tạo hóa đơn và tài liệu chính thức khác. Nó chưa có tất cả các thẻ.

Có một số ví dụ về HTML và các tệp PDF tương ứng để bạn có thể xem những gì có khả năng.

+0

Làm cách nào để thêm số trang vào html2pdf? – kedomonzter

0

Tải xuống phiên bản mới nhất của mã nguồn TCPDF từ https://github.com/tecnickcom/tc-lib-pdf, Bản thân mã nguồn có thư mục chứa thư mục có tên là ví dụ. bạn có thể kiểm tra mã từ các ví dụ hoặc nếu không bạn có thể thử mã dưới đây.

<?php 

require_once('tcpdf/config/tcpdf_config.php'); 
require_once('tcpdf/tcpdf.php'); 

// create new PDF document 
$pdf = new TCPDF(PDF_PAGE_ORIENTATION, PDF_UNIT, PDF_PAGE_FORMAT, true, 'UTF-8', false); 

// set default font subsetting mode 
$pdf->setFontSubsetting(true); 
// set margins 
//$pdf->SetHeaderMargin(PDF_MARGIN_HEADER); 
//$pdf->SetFooterMargin(PDF_MARGIN_FOOTER); 
// set default header data 
$pdf->SetHeaderData('', '', 'Hello ','Gudmrng', array(0,64,255), array(0,64,128)); 
$pdf->setFooterData(array(0,64,0), array(0,64,128)); 

// set header and footer fonts 
$pdf->setHeaderFont(Array(PDF_FONT_NAME_MAIN, '', PDF_FONT_SIZE_MAIN)); 
$pdf->setFooterFont(Array(PDF_FONT_NAME_DATA, '', PDF_FONT_SIZE_DATA)); 

// set default monospaced font 
$pdf->SetDefaultMonospacedFont(PDF_FONT_MONOSPACED); 

// set margins 
$pdf->SetMargins(PDF_MARGIN_LEFT, PDF_MARGIN_TOP, PDF_MARGIN_RIGHT); 
$pdf->SetHeaderMargin(PDF_MARGIN_HEADER); 
$pdf->SetFooterMargin(PDF_MARGIN_FOOTER); 

// set auto page breaks 
$pdf->SetAutoPageBreak(TRUE, PDF_MARGIN_BOTTOM); 

// Set font 
// dejavusans is a UTF-8 Unicode font, if you only need to 
// print standard ASCII chars, you can use core fonts like 
// helvetica or times to reduce file size. 
$pdf->SetFont('dejavusans', '', 10, '', true); 
//  $pdf->SetFont('helvetica', '', 8); 
    // Add a page 
// This method has several options, check the source code documentation for more information. 
$pdf->AddPage(); 
$tbl_header = '<h2 style="color:blue;text-align: center;font-size: 14px;">Headding</h2></br>'; 

$html = '<table width="530" cellspacing="0" cellpadding="3" border="1"> 
        <tr> 
        <th style="text-align: center;font-size: 10px;font-weight: bold;width:100px;">heading 1</th> 
        <th style="text-align: center;font-size: 10px;font-weight: bold;width:122px;">heading 2</th> 
        </tr>'; 
         $html .= '<tr>'; 
         $html .= '<td><b>Hello World</b></td>'; 
         $html .= '<td><b>Helo </b></td>'; 
         $html .= '</tr>'; 
         $html .= '</table>'; 


$pdf->writeHTML($tbl_header . $html, true, false, false, false, ''); 
//$pdf->writeHTML($html, true, 0); 
//$pdf->writeHTML($html, true, 0); 


    $pdf->Output('test_1.pdf','I'); 

?> 
0

tôi đã sử dụng CutyCapt để làm điều đó.

  1. tải xuống và cài đặt a CutyCapt! và xvfb-run.
  2. làm pdf phong cách trong trang html và sau đó tạo pdf từ trang này bằng lệnh này:

Xvfb hạn cutycapt --min-width = 1485 --url = 'url html' --out =' đường dẫn đến pdf '

Các vấn đề liên quan