線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:3536
推到 Plurk!
推到 Facebook!

用PHP編寫PDF文檔生成器

 
conundrum
尊榮會員


發表:893
回覆:1272
積分:643
註冊:2004-01-06

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-01-20 14:56:29 IP:61.221.xxx.xxx 未訂閱
http://www.knowsky.com/3241.html 用PHP編寫PDF文檔生成器    [本頁面推薦在1024x768分辯率下瀏覽] 文章類別:PHP實例   發表日期:2003-12-25  星期四 PHP一個最大的優點就是它對新技術的支援非常容易,這種語言的可擴展性使得開發人員能夠很方便地添加新的模組,而且遍佈世界的技術團體的支援和萓h擴展模組的支援使得PHP已經成d功能最齊全的Web編程語言之  一。目前可得到的擴展模組已經能夠使開發人員執行IMAP和POP3操作,可以動態{生圖像和Shockwave Flash動畫,進行信用卡驗證,敏感資料的加密解密,還能夠解析XML格式的資料。但這還不是全部,現在,又有一個新的模組可以與PHP進行綁定了,那就是PDFLib擴展模組,它能夠讓開發人員動態{生PDF(Adobe Portable Document Format)格式的文件,下面就先看看如何在PHP裏使用這個模組。 d了能夠使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文件,並保存到指定的位置。 現在我們分析一下什l的代碼,要使用PHP創建PDF文件,有四個步驟:1,創建文檔控制碼;2,註冊文檔的字體和岫漶F3,用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); PDF_setfont($pdf,$arial, 10);    一旦我們設定了字體,就可以使用PDF_show_xy()函數向頁面中的指定位置寫字串了。    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_show_xy()函數用來向頁面寫內容,最後兩個參數是要寫入的字串的座標位置,注意座標的原點(0,0)是在文檔的左下角。一旦文字寫完了,頁面就可以關閉了PDF_end_page(),當然你也可以寫更多的頁。所有的頁面寫完之後,用PDF_close()函數關閉文檔,此時文檔就回保存到調用PDF_open_file()函數時指定的檔案名和路徑下,文檔控制碼隨之銷毀。 PDFLib庫能做的事情還遠不止這些,還可以在頁面裏加入圖像,我們以前面的文件d例,在文字的下面添加一個圖像文件,下面的語句實現了添加圖像功能:    $image = PDF_open_image_file($pdf, "jpeg", "PDFImageTest.jpg"); PDF_place_image($pdf, $image, 50, 650, 0.25);    是不是很簡單?PDF_open_image_file()函數打開一個圖形文件,可以接受的圖像類型有:GIF, JPEG, TIFF 和 PNG,該函數返回圖像控制碼,PDF_place_image()函數利用前面的圖像控制碼,把圖像插入到PDF文檔中。注意這裏的座標位置是指圖像的左下角,最後一個參數是圖像顯示時的比例因數,1是與實際大小一樣顯示,0.5是按原來尺寸的一半顯示。 除了在PDF文檔裏畫出現有的圖像以外,PDF模組還提供了許多函數來讓我們畫出幾何圖形。比如:直線、圓、長方形等幾何圖案,下面就是一段畫直線的實現方法:    <?php $pdf = PDF_new(); PDF_open_file($pdf, "LineExam.pdf"); PDF_begin_page($pdf, 595, 842); $arial = PDF_findfont($pdf, "Arial", "host", 1); PDF_setfont($pdf, $arial, 12);    // 設定直線的岫槙r PDF_setcolor($pdf, "stroke", "rgb", 0, 0, 0);    // 在左上角放置一個Logo標識 $image = PDF_open_image_file($pdf, "jpeg", "logo.jpg"); PDF_place_image($pdf, $image, 50, 785, 0.5);    // 在Logo標識下畫出直線 PDF_moveto($pdf, 20, 780); PDF_lineto($pdf, 575, 780); PDF_stroke($pdf);    // 在頁面底部畫出另外一條直線 PDF_moveto($pdf, 20,50); PDF_lineto($pdf, 575, 50); PDF_stroke($pdf);    // 輸出一些文字 PDF_show_xy($pdf, "Meng's Corporation", 200, 35); PDF_end_page($pdf); PDF_close($pdf); ?>   從上面的例子可以看出,要畫一條直線,只需要三個函數即可:PDF_moveto(), PDF_lineto() 和 PDF_stroke()。上面的例子是先用PDF_moveto($pdf, 20, 780)函數把游標移動到座標(20,780),然後用PDF_lineto($pdf, 575, 780)函數定義直線的另外一個點的座標(575,780),最後用PDF_stroke($pdf)畫出線。設定岫滫漕蝻鹼DF_setcolor($pdf, "stroke", "rgb", 0, 0, 0)有好幾個參數,其中的岫漍韖R模式有stroke、fill、both三種選項,岫漭i以是RGB或CMYK配色方案的岫潃C值得注意的是:PDF_setcolor()函數中使用的值是岫滫漲吨壑鞢A也就是說是該岫滫澈G度,比如:如果想設d紅色(RGB:255,0,0),你可以這樣寫:PDF_setcolor($pdf, "stroke", "rgb", 1, 0, 0),如果想設d黃色,可以這樣:PDF_setcolor($pdf, "stroke", "rgb", 1, 1, 0)。    要想畫帶填充色的長方形和圓形,可以使用下面的方法:    //設定填充岫槙r PDF_setcolor($pdf, "fill", "rgb", 1, 1, 0);    // 設定邊框線的岫槙r PDF_setcolor($pdf, "stroke", "rgb", 0, 0, 0);    // 畫矩形,後面的四個參數分別是左下角的座標X、Y和寬度、高度 PDF_rect($pdf, 50, 500, 200, 300); PDF_fill_stroke($pdf); PDF_setcolor($pdf, "fill", "rgb", 0, 1, 0); PDF_setcolor($pdf, "stroke", "rgb", 0, 0, 1);    // 畫出圓,參數分別是圓心座標和圓的半徑    PDF_circle($pdf, 400, 600, 100)    此外,PDFLib還提供了書寫文檔摘要資訊的函數,這些函數以PDF_set_info_*()開頭,這些資訊可以包括:文檔的作者、標題、內容,主題等。下面是幾個常用的函數:    PDF_set_info_author($pdf, "net_lover"); PDF_set_info_creator($pdf, "Meng Xianhui"); PDF_set_info_title($pdf, "PHP Exam"); PDF_set_info_subject($pdf, "PHP"); PDF_set_info_keywords($pdf, "PHP PDF PDFLib");    當用Acrobat Reader打開這樣的文檔時,在功能表“文件”-“文檔屬性”-“摘要”裏就能看到上面寫進去的資訊。 說到這裏,相信大家對如何使用PDFLib創建PDF文檔有了基本的瞭解了吧。下面,我們就以一個實際的例子來看看如何d我們的工作服務。這個例子就是根據提供的資料來生成圓形圖,首先,建立一個資料登錄表單,輸入圓形圖中每一塊的大小。文件如下:    <html> <head> <title>利用PHP創建PDF文檔(圓形圖)</title> </head> <body>

圓形圖生成器

<form action="pie.php" method=POST> </form>
請輸入圓形圖中每一塊的資料值,以(,)分割開:
<input type=text name=data></td>
<input type=submit value="{生PDF圓形圖"></td>
</body> </html> 下面是pie.php文件的代碼: <?php // 接受書庫 $data = $_POST['data']; $slices = explode(",", $data); // 初始化變數 $sum = 0; $degrees = Array(); $diameter = 200; $radius = $diameter/2; // 設定每一塊圓形圖的岫漶A用陣列存儲 $colours = array(array(0,0,0),array(0,0,1),array(0,1,0), array(1,0,0),array(0,1,1),array(1,1,0), array(1,0,1)); // 計算總的數值 $sum = array_sum($slices); // 把每一塊分別轉換成相應的百分數(360度圓) for ($y=0; $y
系統時間:2024-05-07 0:53:13
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!