2009-07-30 28 views
13

Chcę utworzyć plik pdf z mojej strony internetowej napisanej przez php. Mój dokument musi produkować z mysql i produkować plik PDF. Chcę być, aby zapisać ten plik pdf i przeczytać. Proszę podać przykładowy kod.Utwórz plik PDF z PHP

+1

Możesz użyć na przykład biblioteki [TCPDF] (http://www.tecnick.com/public/code/cp_dpage.php?aiocp_dp=tcpdf) do generowania plików PDF. Ta strona ma również kilka przykładów kodu. Jeśli chodzi o pobieranie i manipulowanie danymi z bazy danych, będziesz musiał sam to zakodować. – RaYell

+0

Myślę, że [fpdf] (http://www.fpdf.org) Zapewnia najprostszy sposób tworzenia plików PDF z przykładowymi kodami podanymi na stronie. Tutaj znajdziesz przykład [http://www.fpdf.org/en/script/script10.php](http://www.fpdf.org/en/script/script10.php) – Milap

+0

@bb. możesz rzucić okiem na moje pytanie http://stackoverflow.com/questions/16925076/php-creating-a-pdf-how-can-i-get-this-working-errors-populating/16925161?noredirect=1# 16925161 – ValleyDigital

Odpowiedz

13

Używanie TCPDF Biblioteka:

<? 
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

Testuję ten kod.Ale znalazłem błąd na $ pdf-> Write (16, "jakiś tekst" \ n "," ", 0," C "); $ pdf-> Dane wyjściowe (" nazwa pliku. pdf "," I "); te linie.Jak rozwiązać? – thinzar

+0

było" za dużo. Przepraszam. jest już naprawiony –

1

I masz już stronę HTML, najszybszym sposobem może być użycie narzędzia jak HTML2PDF do „konwersji”, że dane HTML do PDF, zamiast generowania plik PDF "od zera".

Cytując tę ​​stronę:

Umożliwia konwersję Valid HTML 4.01 w formacie PDF i jest rozpowszechniany na licencji LGPL.

Biblioteka ta została zaprojektowana do rączką głównie TABELA przeplatają się generować faktury dostawy, oraz inne dokumentów urzędowych. Jeszcze nie ma wszystkich tagów.

Istnieje kilka przykładów HTML i odpowiednich plików PDF, dzięki czemu można zobaczyć, co jest w stanie.

+0

Jak mogę dodać numer strony do html2pdf? – kedomonzter

0

Pobierz najnowszą wersję kodu źródłowego TCPDF z https://github.com/tecnickcom/tc-lib-pdf, sam kod źródłowy ma katalog, który jest wymieniony jako przykłady. możesz sprawdzić kod z przykładów lub możesz spróbować poniżej kodu.

<?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

Użyłem CutyCapt do zrobienia tego.

  1. Pobierz i zainstaluj a CutyCapt! i xvfb-run.
  2. make pdf styl w stronę html, a następnie utworzyć plik PDF z tej strony za pomocą tego polecenia:

Xvfb prowadzony cutycapt --min-width = 1485 --url = 'html url' --out =” ścieżka do pliku pdf "