目錄
鑰匙要點
入門
高級用法
結論
如何使用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

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

熱工具

記事本++7.3.1

記事本++7.3.1

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

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

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

在PHP API中說明JSON Web令牌(JWT)及其用例。 在PHP API中說明JSON Web令牌(JWT)及其用例。 Apr 05, 2025 am 12:04 AM

JWT是一種基於JSON的開放標準,用於在各方之間安全地傳輸信息,主要用於身份驗證和信息交換。 1.JWT由Header、Payload和Signature三部分組成。 2.JWT的工作原理包括生成JWT、驗證JWT和解析Payload三個步驟。 3.在PHP中使用JWT進行身份驗證時,可以生成和驗證JWT,並在高級用法中包含用戶角色和權限信息。 4.常見錯誤包括簽名驗證失敗、令牌過期和Payload過大,調試技巧包括使用調試工具和日誌記錄。 5.性能優化和最佳實踐包括使用合適的簽名算法、合理設置有效期、

PHP 8.1中的枚舉(枚舉)是什麼? PHP 8.1中的枚舉(枚舉)是什麼? Apr 03, 2025 am 12:05 AM

PHP8.1中的枚舉功能通過定義命名常量增強了代碼的清晰度和類型安全性。 1)枚舉可以是整數、字符串或對象,提高了代碼可讀性和類型安全性。 2)枚舉基於類,支持面向對象特性,如遍歷和反射。 3)枚舉可用於比較和賦值,確保類型安全。 4)枚舉支持添加方法,實現複雜邏輯。 5)嚴格類型檢查和錯誤處理可避免常見錯誤。 6)枚舉減少魔法值,提升可維護性,但需注意性能優化。

會話如何劫持工作,如何在PHP中減輕它? 會話如何劫持工作,如何在PHP中減輕它? Apr 06, 2025 am 12:02 AM

會話劫持可以通過以下步驟實現:1.獲取會話ID,2.使用會話ID,3.保持會話活躍。在PHP中防範會話劫持的方法包括:1.使用session_regenerate_id()函數重新生成會話ID,2.通過數據庫存儲會話數據,3.確保所有會話數據通過HTTPS傳輸。

描述紮實的原則及其如何應用於PHP的開發。 描述紮實的原則及其如何應用於PHP的開發。 Apr 03, 2025 am 12:04 AM

SOLID原則在PHP開發中的應用包括:1.單一職責原則(SRP):每個類只負責一個功能。 2.開閉原則(OCP):通過擴展而非修改實現變化。 3.里氏替換原則(LSP):子類可替換基類而不影響程序正確性。 4.接口隔離原則(ISP):使用細粒度接口避免依賴不使用的方法。 5.依賴倒置原則(DIP):高低層次模塊都依賴於抽象,通過依賴注入實現。

解釋PHP中的晚期靜態綁定(靜態::)。 解釋PHP中的晚期靜態綁定(靜態::)。 Apr 03, 2025 am 12:04 AM

靜態綁定(static::)在PHP中實現晚期靜態綁定(LSB),允許在靜態上下文中引用調用類而非定義類。 1)解析過程在運行時進行,2)在繼承關係中向上查找調用類,3)可能帶來性能開銷。

什麼是REST API設計原理? 什麼是REST API設計原理? Apr 04, 2025 am 12:01 AM

RESTAPI設計原則包括資源定義、URI設計、HTTP方法使用、狀態碼使用、版本控制和HATEOAS。 1.資源應使用名詞表示並保持層次結構。 2.HTTP方法應符合其語義,如GET用於獲取資源。 3.狀態碼應正確使用,如404表示資源不存在。 4.版本控制可通過URI或頭部實現。 5.HATEOAS通過響應中的鏈接引導客戶端操作。

您如何在PHP中有效處理異常(嘗試,捕捉,最後,投擲)? 您如何在PHP中有效處理異常(嘗試,捕捉,最後,投擲)? Apr 05, 2025 am 12:03 AM

在PHP中,異常處理通過try,catch,finally,和throw關鍵字實現。 1)try塊包圍可能拋出異常的代碼;2)catch塊處理異常;3)finally塊確保代碼始終執行;4)throw用於手動拋出異常。這些機制幫助提升代碼的健壯性和可維護性。

PHP中的匿名類是什麼?您何時可以使用它們? PHP中的匿名類是什麼?您何時可以使用它們? Apr 04, 2025 am 12:02 AM

匿名類在PHP中的主要作用是創建一次性使用的對象。 1.匿名類允許在代碼中直接定義沒有名字的類,適用於臨時需求。 2.它們可以繼承類或實現接口,增加靈活性。 3.使用時需注意性能和代碼可讀性,避免重複定義相同的匿名類。

See all articles