鑰匙要點
- > 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> </span></span></span><span><span> </span></span><span><span> </span></span><span><span> <h1 id="Hello-Dompdf">Hello Dompdf</h1> </span></span><span><span> </span></span><span><span> </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></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> </span></span></span><span><span> </span></span><span><span> </span></span><span><span> <h1 id="Hello-Dompdf">Hello Dompdf</h1> </span></span><span><span> </span></span><span><span> </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></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渲染時,頁腳部分將看起來像這樣:
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團隊提供的安全指南。
如何使用Composer(用於PHP的依賴關係管理工具)安裝DOMPDF?您可以安裝作曲家,然後運行命令“ Composer需要DOMPDF/DOMPDF”。這將在您的項目中下載並安裝DOMPDF庫。
>我可以將CSS與DOMPDF?
使用,是的,DOMPDF支持CSS。您可以在HTML中使用內聯CSS,也可以鏈接到外部CSS文件。生成PDF時,DOMPDF將應用樣式。但是,請注意,並非所有CSS屬性都得到支持。
>如何將圖像添加到我的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中文網其他相關文章!

Sessionlockingisatechniqueusedtoensureauser'ssessionremainsexclusivetooneuseratatime.Itiscrucialforpreventingdatacorruptionandsecuritybreachesinmulti-userapplications.Sessionlockingisimplementedusingserver-sidelockingmechanisms,suchasReentrantLockinJ

PHP會話的替代方案包括Cookies、Token-basedAuthentication、Database-basedSessions和Redis/Memcached。 1.Cookies通過在客戶端存儲數據來管理會話,簡單但安全性低。 2.Token-basedAuthentication使用令牌驗證用戶,安全性高但需額外邏輯。 3.Database-basedSessions將數據存儲在數據庫中,擴展性好但可能影響性能。 4.Redis/Memcached使用分佈式緩存提高性能和擴展性,但需額外配

Sessionhijacking是指攻擊者通過獲取用戶的sessionID來冒充用戶。防範方法包括:1)使用HTTPS加密通信;2)驗證sessionID的來源;3)使用安全的sessionID生成算法;4)定期更新sessionID。

本文比較了PHP和ASP.NET,重點是它們對大規模Web應用程序,性能差異和安全功能的適用性。兩者對於大型項目都是可行的,但是PHP是開源和無關的,而ASP.NET,


熱AI工具

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

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

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

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

熱門文章

熱工具

Dreamweaver CS6
視覺化網頁開發工具

WebStorm Mac版
好用的JavaScript開發工具

Atom編輯器mac版下載
最受歡迎的的開源編輯器

VSCode Windows 64位元 下載
微軟推出的免費、功能強大的一款IDE編輯器

DVWA
Damn Vulnerable Web App (DVWA) 是一個PHP/MySQL的Web應用程序,非常容易受到攻擊。它的主要目標是成為安全專業人員在合法環境中測試自己的技能和工具的輔助工具,幫助Web開發人員更好地理解保護網路應用程式的過程,並幫助教師/學生在課堂環境中教授/學習Web應用程式安全性。 DVWA的目標是透過簡單直接的介面練習一些最常見的Web漏洞,難度各不相同。請注意,該軟體中