目錄
鑰匙要點
入門
高級用法
結論
如何使用Composer(用於PHP的依賴關係管理工具)安裝DOMPDF?您可以安裝作曲家,然後運行命令“ Composer需要DOMPDF/DOMPDF”。這將在您的項目中下載並安裝DOMPDF庫。
使用,是的,DOMPDF支持CSS。您可以在HTML中使用內聯CSS,也可以鏈接到外部CSS文件。生成PDF時,DOMPDF將應用樣式。但是,請注意,並非所有CSS屬性都得到支持。
>我可以生成具有多個頁面的PDF嗎?如果您的HTML內容足夠長以跨越多頁,則DOMPDF將自動將其分為頁面。您還可以使用CSS手動添加頁面斷路。
>如何將生成的PDF保存到文件中?使用“輸出”方法和“ file_put_contents”功能生成的PDF到文件。例如,您可以使用'file_put_contents('mypdf.pdf',$ dompdf-> output())'將pdf保存到名為'mypdf.pdf'的文件。
> dompdf Secure嗎?
首頁 後端開發 php教程 PHP主|使用DOMPDF將HTML轉換為PDF

PHP主|使用DOMPDF將HTML轉換為PDF

Feb 23, 2025 am 10:36 AM

PHP主|使用DOMPDF將HTML轉換為PDF

PDF是一種標準格式,最初是由Adobe創建的,用於在固定的layout文檔中表示文本和圖像。 Web應用程序以PDF格式支持下載數據(例如發票或報告)並不少見,因此在本文中,我們將如何輕鬆地使用PHP輕鬆生成PDF文檔。 DOMPDF是一個很棒的庫,能夠從HTML標記和CSS樣式中生成PDF(主要是CSS 2.1符合CSS 2.1,並支持某些CSS3屬性)。我們可以使用這些熟悉的技術來決定我們的內容應如何外觀,然後輕鬆將其轉換為固定的文檔。該圖書館還有許多其他有用且有趣的功能。

鑰匙要點

  • > DOMPDF是一個可以將HTML標記和CSS樣式轉換為PDF文檔的PHP庫,使其對需要以PDF格式支持下載數據的Web應用程序有用。
  • >
  • 要使用DOMPDF,需要通過GitHub或Composer安裝它,並且需要PHP> = 5.0,並啟用MBSTRING和DOM擴展。 HTML標記可以作為字符串或從文件或URL加載,然後渲染到PDF中。 >
  • > DOMPDF是一種功能強大的工具,但它具有一些局限性,例如不耐受成型的HTML,並且僅對CSS3的支持有限。建議審查圖書館的文檔和源代碼,以充分了解其功能和潛在問題。

入門

DOMPDF可在GitHub上獲得,可以使用Composer安裝。誠然,基於作曲家的安裝並正確運行仍然有些棘手,因此我建議您只使用Git安裝DOMPDF。 該庫需要PHP> = 5.0,並啟用了MBSTRING和DOM擴展。它還需要一些字體,這些字體通常在大多數機器上可用。 導航到要放置庫並執行的任何地方:
git clone https://github.com/dompdf/dompdf.git
git submodule init
git submodule update
登入後複製
登入後複製
登入後複製
通過下載DOMPDF,讓我們寫一個簡短的示例,該示例將生成一個簡單的PDF。
<span><span><?php
</span></span><span><span>set_include_path(get_include_path() . PATH_SEPARATOR . "/path/to/dompdf");
</span></span><span>
</span><span><span>require_once "dompdf_config.inc.php";
</span></span><span>
</span><span><span>$dompdf = new DOMPDF();
</span></span><span>
</span><span><span>$html = <span><span><<<'ENDHTML'</span>
</span></span></span><span><span><html>
</span></span><span><span> <body>
</span></span><span><span>  <h1>Hello Dompdf</h1>
</span></span><span><span> </body>
</span></span><span><span></html>
</span></span><span><span><span>ENDHTML<span>;</span></span>
</span></span><span>
</span><span><span>$dompdf->load_html($html);
</span></span><span><span>$dompdf->render();
</span></span><span>
</span><span><span>$dompdf->stream("hello.pdf");</span></span>
登入後複製
登入後複製
要在項目中使用庫,我們首先在包含大部分DOMPDF配置的Dompdf_config.inc.php中拉動。它還加載一個自動加載器和自定義配置文件,在其中我們可以覆蓋默認配置參數。 HTML標記作為字符串作為load_html()方法的字符串。另外,我們可以使用load_html_file()方法從文件或URL加載標記。它接受文件網頁的文件名或URL作為參數。 Render()方法將HTML渲染到PDF中,我們準備轉儲PDF文件。 Stream()將結果PDF作為瀏覽器的附件發送。 Stream()方法具有可選的第二個參數,一個選項數組:
  • >接受範圍 - 布爾值,發送“ Accept-Ranges”標頭(默認為FALSE)。
  • 附件 - 布爾值,發送“ content-disposition:actactment”標頭強迫瀏覽器顯示保存提示符(默認情況下為true)。
  • compress - boolean,啟用內容壓縮(默認為true)。
  • >
  • 我們在這裡生成了非常簡單的PDF,但這不是很實際。實際上,我們通常會對紙張尺寸,頁面方向,字符編碼等有要求。我們可以設置數量的配置選項,以使DOMPDF更適合我們的現實世界需求。所有這些都在dompdf_config.inc.php中列出和解釋 這將它們設置為默認值。您可以通過更新自定義配置文件dompdf_config.custom.inc.inc.php來更改這些值。一些重要的設置是:
    > dompdf_default_paper_size - 設置PDF文檔的默認紙張大小。可以在include/cpdf_adapter.cls.php中找到支持的紙張尺寸(默認值為“字母”)。
  • >
  • > dompdf_temp_dir - 指定DOMPDF使用的臨時目錄。確保此位置由Web Server帳戶寫作。
  • > dompdf_unicode_enabled - 設置PDF是否使用Unicode字體(默認值為true)。
  • > dompdf_enable_remote - 啟用來自遠程站點的圖像或CSS樣式的包含(默認為false)。
  • >
  • debug_layout - 是否要在PDF文件中的每個HTML塊周圍渲染一個盒子,這對於調試佈局很有用(默認為false)。
  • >

高級用法

現在,讓我們談談DOMPDF的一些高級用途。也許我們希望將生成的PDF文檔保存到磁盤上,而不是將其發送到瀏覽器。以下是:
git clone https://github.com/dompdf/dompdf.git
git submodule init
git submodule update
登入後複製
登入後複製
登入後複製
我們不像上一個示例中調用stream(),而是使用output()將pdf返回為字符串。它也接受了可選的選項數組,但是唯一可用的選項是壓縮(默認值為true)。 DOMPDF還允許我們通過將PHP腳本嵌入其呈現的HTML中,將標題或頁腳添加到生成的PDF中。但是,由於處理任意代碼如果您不小心,則可能會構成安全風險,因此默認情況下,控制此功能的配置值將關閉。我們需要首先設置dompdf_enable_php選項true。 啟用了Inline PHP執行後,將在腳本中提供PDF對象,我們可以使用該對象來操縱頁面。我們可以在頁面內的任何地方添加文本,行,圖像,矩形等。
<span><span><?php
</span></span><span><span>set_include_path(get_include_path() . PATH_SEPARATOR . "/path/to/dompdf");
</span></span><span>
</span><span><span>require_once "dompdf_config.inc.php";
</span></span><span>
</span><span><span>$dompdf = new DOMPDF();
</span></span><span>
</span><span><span>$html = <span><span><<<'ENDHTML'</span>
</span></span></span><span><span><html>
</span></span><span><span> <body>
</span></span><span><span>  <h1>Hello Dompdf</h1>
</span></span><span><span> </body>
</span></span><span><span></html>
</span></span><span><span><span>ENDHTML<span>;</span></span>
</span></span><span>
</span><span><span>$dompdf->load_html($html);
</span></span><span><span>$dompdf->render();
</span></span><span>
</span><span><span>$dompdf->stream("hello.pdf");</span></span>
登入後複製
登入後複製
該腳本直接嵌入到HTML標記中,並首先打開一個對象,以便我們可以影響渲染。所有圖形將記錄到該對像中,我們可以將此對象添加到所有或選定的頁面(儘管有限制)。 接下來,我們獲取頁面的實際寬度和高度,以計算要添加的頁腳的坐標。另外,在添加文本內容時,我們需要提供字體對象。 font_metrics :: get_font()允許我們創建所需的對象。我們還使用get_font_height()將給定字體的高度以其字體尺寸為單位,以計算頁腳內容的定位。方法get_font_width()返回給定字體和字體大小的文本寬度,該字體大小也用於我們的計算中。 線()方法從點(x1,y1)到(x2,x2)繪製一條線。請注意,我們提供的顏色值不是實際的RGB值。基礎PDF類需要0到1之間的值,因此我們將RGB值轉換為這些新值。為了獲得更好的近似,您可以將其除以255。 我們使用page_text()方法添加每個頁面的頁碼,該方法接受x和y位置,要添加的文本,字體對象,字體大小和顏色。 DOMPDF自動替換{page_num}的值 和{page_count}在每個頁面中,並使我們可以使用$ PDF。 當PDF渲染時,頁腳部分將看起來像這樣:

PHP主|使用DOMPDF將HTML轉換為PDF

有可能避免使用內聯PHP並直接從PHP中實現相同的效果,例如:
git clone https://github.com/dompdf/dompdf.git
git submodule init
git submodule update
登入後複製
登入後複製
登入後複製
請注意,我們在調用$ DOMPDF-> RENDER()之後放置代碼,因為我們基本上正在修改渲染的PDF。

結論

在本文中,我們討論瞭如何使用DOMPDF輕鬆將HTML轉換為PDF。儘管DOMPDF是一個很棒的庫,但它不是生成PDF文檔的防彈解決方案。它確實有一些局限性和問題。 DOMPDF並不是真正耐受型HTML的耐受性,並且大桌子很容易使您無法記憶。一些基本的CSS功能(例如Float)並不完全支持,並且對CSS3的支持只有有限的支持。如果您需要DOMPDF不支持的功能,那麼WKHTMLTOPDF之類的功能可能是您更好的解決方案。儘管如此,DOMPDF非常簡單,適合大多數PDF出口需求。 很難解釋庫中圖書館提供的所有功能,因此請務必查看文檔和源代碼,以了解添加回調,使用自定義字體等的酷功能。很高興為您提供我有限的專業知識。隨時留下您的問題,並在評論部分分享您的經驗。 通過fotolia 圖像 >如果您喜歡閱讀這篇文章,您會喜歡學習的;從大師那裡學習新鮮技能和技術的地方。成員可以立即訪問SitePoint的所有電子書和交互式在線課程,例如Jump Start Php。 >對本文的評論已關閉。對PHP有疑問嗎?為什麼不在我們的論壇上詢問? >常見問題(常見問題解答)關於使用DOMPDF 將HTML轉換為PDF

什麼是dompdf,為什麼使用? >

如何使用Composer(用於PHP的依賴關係管理工具)安裝DOMPDF?您可以安裝作曲家,然後運行命令“ Composer需要DOMPDF/DOMPDF”。這將在您的項目中下載並安裝DOMPDF庫。

>我可以將CSS與DOMPDF?

​​

使用,是的,DOMPDF支持CSS。您可以在HTML中使用內聯CSS,也可以鏈接到外部CSS文件。生成PDF時,DOMPDF將應用樣式。但是,請注意,並非所有CSS屬性都得到支持。

>如何將圖像添加到我的pdf?

>您可以通過在HTML中加入“ IMG”標籤來將圖像添加到您的PDF中。 。 “ SRC”屬性應指向圖像文件。 DOMPDF將在生成的PDF中包括圖像。

>我可以生成具有多個頁面的PDF嗎?如果您的HTML內容足夠長以跨越多頁,則DOMPDF將自動將其分為頁面。您還可以使用CSS手動添加頁面斷路。

如何設置頁面大小和方向?

您可以使用“ set_paper”方法設置頁面大小和方向。例如,您可以使用'$ dompdf-> set_paper('a4','landscape')將頁面大小設置為a4,而對景觀的方向。

我可以將dompdf與laravel一起使用嗎? >

是的,DOMPDF可以與Laravel一起使用。有一個稱為“ Laravel-dompdf”的Laravel軟件包,它提供了一種在Laravel應用程序中使用DOMPDF的簡便方法。

>

>如何將生成的PDF保存到文件中?使用“輸出”方法和“ file_put_contents”功能生成的PDF到文件。例如,您可以使用'file_put_contents('mypdf.pdf',$ dompdf-> output())'將pdf保存到名為'mypdf.pdf'的文件。

>我可以發送生成的pdf作為Web應用程序中的響應?是的,您可以將生成的PDF作為Web應用程序中的響應發送。您可以使用“流”方法將PDF直接發送到瀏覽器。

> dompdf Secure嗎?

dompdf通常被認為是安全的,但是像任何軟件一樣,它可能具有漏洞。重要的是要保持您的DOMPDF安裝最新,並審查DOMPDF團隊提供的安全指南。

以上是PHP主|使用DOMPDF將HTML轉換為PDF的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

<🎜>:泡泡膠模擬器無窮大 - 如何獲取和使用皇家鑰匙
4 週前 By 尊渡假赌尊渡假赌尊渡假赌
北端:融合系統,解釋
4 週前 By 尊渡假赌尊渡假赌尊渡假赌
Mandragora:巫婆樹的耳語 - 如何解鎖抓鉤
3 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

熱門話題

Java教學
1670
14
CakePHP 教程
1428
52
Laravel 教程
1329
25
PHP教程
1276
29
C# 教程
1256
24
說明PHP中的安全密碼散列(例如,password_hash,password_verify)。為什麼不使用MD5或SHA1? 說明PHP中的安全密碼散列(例如,password_hash,password_verify)。為什麼不使用MD5或SHA1? Apr 17, 2025 am 12:06 AM

在PHP中,應使用password_hash和password_verify函數實現安全的密碼哈希處理,不應使用MD5或SHA1。1)password_hash生成包含鹽值的哈希,增強安全性。 2)password_verify驗證密碼,通過比較哈希值確保安全。 3)MD5和SHA1易受攻擊且缺乏鹽值,不適合現代密碼安全。

PHP和Python:比較兩種流行的編程語言 PHP和Python:比較兩種流行的編程語言 Apr 14, 2025 am 12:13 AM

PHP和Python各有優勢,選擇依據項目需求。 1.PHP適合web開發,尤其快速開發和維護網站。 2.Python適用於數據科學、機器學習和人工智能,語法簡潔,適合初學者。

PHP行動:現實世界中的示例和應用程序 PHP行動:現實世界中的示例和應用程序 Apr 14, 2025 am 12:19 AM

PHP在電子商務、內容管理系統和API開發中廣泛應用。 1)電子商務:用於購物車功能和支付處理。 2)內容管理系統:用於動態內容生成和用戶管理。 3)API開發:用於RESTfulAPI開發和API安全性。通過性能優化和最佳實踐,PHP應用的效率和可維護性得以提升。

PHP類型提示如何起作用,包括標量類型,返回類型,聯合類型和無效類型? PHP類型提示如何起作用,包括標量類型,返回類型,聯合類型和無效類型? Apr 17, 2025 am 12:25 AM

PHP類型提示提升代碼質量和可讀性。 1)標量類型提示:自PHP7.0起,允許在函數參數中指定基本數據類型,如int、float等。 2)返回類型提示:確保函數返回值類型的一致性。 3)聯合類型提示:自PHP8.0起,允許在函數參數或返回值中指定多個類型。 4)可空類型提示:允許包含null值,處理可能返回空值的函數。

PHP的持久相關性:它還活著嗎? PHP的持久相關性:它還活著嗎? Apr 14, 2025 am 12:12 AM

PHP仍然具有活力,其在現代編程領域中依然佔據重要地位。 1)PHP的簡單易學和強大社區支持使其在Web開發中廣泛應用;2)其靈活性和穩定性使其在處理Web表單、數據庫操作和文件處理等方面表現出色;3)PHP不斷進化和優化,適用於初學者和經驗豐富的開發者。

PHP和Python:解釋了不同的範例 PHP和Python:解釋了不同的範例 Apr 18, 2025 am 12:26 AM

PHP主要是過程式編程,但也支持面向對象編程(OOP);Python支持多種範式,包括OOP、函數式和過程式編程。 PHP適合web開發,Python適用於多種應用,如數據分析和機器學習。

您如何防止PHP中的SQL注入? (準備的陳述,PDO) 您如何防止PHP中的SQL注入? (準備的陳述,PDO) Apr 15, 2025 am 12:15 AM

在PHP中使用預處理語句和PDO可以有效防範SQL注入攻擊。 1)使用PDO連接數據庫並設置錯誤模式。 2)通過prepare方法創建預處理語句,使用佔位符和execute方法傳遞數據。 3)處理查詢結果並確保代碼的安全性和性能。

PHP和Python:代碼示例和比較 PHP和Python:代碼示例和比較 Apr 15, 2025 am 12:07 AM

PHP和Python各有優劣,選擇取決於項目需求和個人偏好。 1.PHP適合快速開發和維護大型Web應用。 2.Python在數據科學和機器學習領域佔據主導地位。

See all articles