用PHP編寫PDF文檔生成器

php(做為現在的主流開發語言)一個最大的優點就是它對新技術的支持非常容易,這種語言的可擴展性使得開發人員能夠很方便地添加新的模塊,而且遍佈世界的技術團體的支持和眾多擴展模塊的支持使得php(做為現在的主流開發語言)已經成為功能最齊全的Web編程語言之  一。目前可得到的擴展模塊已經能夠使開發人員執行IMAP和POP3操作,可以動態產生圖象和Shockwave Flash動畫,進行信用卡驗證,敏感數據的加密解密,還能夠解析xml(標準化越來越近瞭)格式的數據。但這還不是全部,現在,又有一個新的模塊可以與php(做為現在的主流開發語言)進行綁定瞭,那就是PDFLib擴展模塊,它能夠讓開發人員動態產生PDF(Adobe Portable Document Format)格式的文件,下面就先看看如何在php(做為現在的主流開發語言)裡使用這個模塊。

為瞭能夠使php(做為現在的主流開發語言)具有操作PDF格式文檔的能力,你必須先在你的系統裡安裝PDFLib擴展庫,如果你使用的是Lunix系統,你可以從 http://www.pdflib.com/pdflib/index.html下載一個並進行編譯,如果你使用的是Windows系統,那就更簡單瞭,隻需要下載一個編譯好的PDFLib庫,然後在php(做為現在的主流開發語言)的配置文件裡把相應的行的註釋去掉即可。


extension=php(做為現在的主流開發語言)_pdf.dll


如果是動態裝載,也可以是參照下面的命令:


dl(“php(做為現在的主流開發語言)_pdf.dll”);


此外,你還必須有一個Adobe Acrobat PDF閱讀器,用來瀏覽PDF格式,如果你沒有,你可以從http://www.adobe.com/免費下載。

一旦你做好瞭前期準備,就可以創建PDF文件瞭,下面就是一個簡單的例子:

 


<?php(做為現在的主流開發語言)

// 創建一個新的PDF文檔句柄

$pdf = PDF_new();


// 打開一個文件

PDF_open_file($pdf, “PDFTest.pdf”);


// 開始一個新頁面(A4)

PDF_begin_page($pdf, 595, 842);


// 得到並使用字體對象

$arial = PDF_findfont($pdf, “Arial”, “host”, 1);

PDF_setfont($pdf, $arial, 10);


// 輸出文字

PDF_show_xy($pdf, “This is an exam of PDF Documents, It is a good Lib,”,50, 750);

PDF_show_xy($pdf, “If you like,please try yourself!”, 50, 730);


// 結束一頁

PDF_end_page($pdf);


// 關閉並保存文件

PDF_close($pdf);

?>

 

然後保存成php(做為現在的主流開發語言)文件,在瀏覽器裡進行瀏覽,php(做為現在的主流開發語言)就會執行上面的代碼,它產生一個新的PDF文件,並保存到指定的位置。

現在我們分析一下什麼的代碼,要使用php(做為現在的主流開發語言)創建PDF文件,有四個步驟:1,創建文檔句柄;2,註冊文檔的字體和顏色;3,用PDFLib提供的函數向文件句柄寫文字或畫圖;4,保存文檔。

首先,創建PDF文檔句柄,語法如下:


$pdf = PDF_new();


這個任務是由PDF_new()函數完成的,它返回一個PDF文檔的句柄,這個句柄將會被後續的所有操作使用。

下一步要做的,就是給PDF文件一個名字,由PDF_open_file()函數完成,它需要先前創建的文件句柄和自定義的文件名做參數:


PDF_open_file($pdf, “PDFTest.pdf”);


一旦我們創建瞭文檔,就可以用PDF_begin_page()函數在其中插入新頁面瞭:


PDF_begin_page($pdf, 595, 842);


然後用PDF_end_page()結束頁面。

註意這裡,在PDF_begin_page()函數裡,有另外兩個參數,他們分別代表頁面尺寸的寬和高,單位是磅(point,1磅等於1/72英寸),或許在這裡數學並不是你的強項,php(做為現在的主流開發語言)還提供瞭大多數標準頁面尺寸,象A4等,上面的例子就是使用A4的尺寸。

在調用PDF_begin_page()函數和PDF_end_page()函數之間的代碼是向PDF文檔瞭寫內容的,內容可以是文字、圖象以及幾何圖形等。例子中隻是寫瞭一行文字,先得到一個字體,然後把文字寫到文檔裡。通過PDF_findfont()和PDF_setfont()函數選擇和註冊字體是很方便的,PDF_findfont()函數預備瞭一種文檔中要使用的字體,需要的參數有字體的名字,使用的編碼,字體是否要嵌入到PDF文件中。PDF_findfont()函數返回一個字體對象,它將會在PDF_setfont()函數裡使用。


$arial = PDF_findfont($pdf, “Arial”, “host”, 1);

發佈留言