php 使用html 生成pdf word wkhtmltopdf 系列1

php 使用html 生成pdf word wkhtmltopdf 系列2

php 使用html 生成 pdf word

項目有個需求 想同時生成word 和pdf 并且·對pdf要求比較高 為了一勞永逸 決定寫成html 分別轉成word 和pdf

系統環境
windows10+ 小皮面板(php8+)
linux centos 7.9 + 寶塔(php8+)
系統擴展 wkhtmltopdf
php擴展


wkhtmltopdf :是一個命令行工具,它使用 Qt WebKit 渲染引擎將 HTML 內容轉換為 PDF 文檔或各種圖像格式


1.wkhtmltopdf 安裝

1.1 Windows10 安裝

官網:https://wkhtmltopdf.org/downloads.html

有的小伙伴下載不了:下載鏈接是通過github下載 這里需要翻墻 。


雙擊點擊安裝
在這里插入圖片描述
在這里插入圖片描述
點開在1處 搜索環境變量 點擊編輯環境變量 點擊2 點擊編輯 3處 新建 將安裝地址放入

在這里插入圖片描述

Windows+r輸入 cmd 回車
命令行輸入 wkhtmltopdf -V
顯示下邊的就是安裝成功了
在這里插入圖片描述

1.2 linux centos 7.9 安裝

# 下載wkhtmltopdf軟件:
wget https://github.com/wkhtmltopdf/packaging/releases/download/0.12.6-1/wkhtmltox_0.12.6-1.bionic_amd64.deb#復制代碼
#安裝wkhtmltopdf軟件:
sudo dpkg -i wkhtmltox_0.12.6-1.bionic_amd64.deb
#復制代碼
#安裝完成后,可以在終端中輸入 
wkhtmltopdf -V
#來檢查是否安裝成功。

2.wkhtmltopdf 命令

命令格式:wkhtmltopdf [GLOBAL OPTION]… [OBJECT]…

命令行工具自然是沒有圖形界面的。
下邊給幾個例子在下面。不愿意深入了解的就不必再浪費時間了。
把一個html文件轉換成PDF

wkhtmltopdf http://example.com output.pdf

在這里插入圖片描述

作用命令
把一個 url 指向的網頁轉換成PDFwkhtmltopdf http://example.com output.pdf
把html文件 和 url指向的網頁 轉換成圖片wkhtmltoimage xxx.html xxx.jpg

3.詳細介紹

命令參數包含五部分,分別是“全局參數”,“大綱參數選項”,“頁面對象參數”,“頁眉和頁腳參數選項”和“目錄對象參數”。

3.1 全局參數

    --collate             當輸出多個副本時進行校驗(這是默認設置)--no-collate          當輸出多個副本時不進行校驗--cookie-jar <path>   從提供的JAR文件中讀寫cookie數據--copies <number>     設置輸出副本的數量(默認主1),其實為1就夠了
-d, --dpi <dpi>           指定一個要分辨率(這在 X11 系統中并沒有什么卵用)
-H, --extended-help       相對 -h 參數,顯示更詳細的說明文檔
-g, --grayscale           指定以灰度圖生成PDF文檔。占用的空間更小
-h, --help                顯示幫助信息  --htmldoc             輸出程序的html幫助文檔--image-dpi <integer> 當頁面中有內嵌的圖片時,會下載此命令行參數指定尺寸的圖片(默認值是 600)--image-quality <interger> 當使用 jpeg 算法壓縮圖片時使用這個參數指定的質量(默認為 94)--license             輸出授權信息并退出
-l, --lowquality          生成低質量的 PDF/PS ,能夠很好的節約最終生成文檔所占存儲空間--manpage             輸出程序的手冊頁
-B, --margin-bottom <unitreal> 設置頁面的 底邊距
-L, --margin-left <unitreal>   設置頁面的 左邊距 (默認是 10mm)
-R, --margin-right <unitreal>  設置頁面的 右邊距 (默認是 10mm)
-T, --margin-top <unitreal>    設置頁面的 上邊距
-O, --orientation <orientation> 設置為“風景(Landscape)”或“肖像(Portrait)”模式,默認是肖像模塊(Portrait)--page-height <unitreal>   頁面高度
-s, --page-size <Size>         設置頁面的尺寸,如:A4,Letter等,默認是:A4--page-width <unitreal>    頁面寬度--no-pdf-compression       不對PDF對象使用丟失少量信息的壓縮算法,不建議使用些參數,因為生成的PDF文件會非常大。
-q, --quiet                    靜態模式,不在標準輸出中打印任何信息--read-args-from-stdin     從標準輸入中讀取命令行參數,后續會有針對此指令的詳細介紹,請參見 **從標準輸入獲取參數**--readme                   輸出程序的 readme 文檔--title <text>             生成的PDF文檔的標題,如果不指定則使用第一個文檔的標題
-V, --version                  輸出版本信息后退出
  1. 下邊挑一下常用的用法 -g, --grayscale
    這個參數非常有用,使用這個參數可以有效壓縮生成的PDF所占用的存儲空間。當然這個壓縮是要付出一定代價的,那就是最終生成的PDF文檔將是灰度的,沒有任何色彩。如果你能接受灰度PDF文檔,并不影響實際使用,那就請使用這個參數吧。生成的PDF文檔越大,使用此參數獲得的驚喜就越大。

  2. -l, --lowquality 這個參數與 -g 參數有異曲同工之妙, -l 參數也會大大壓縮PDF文檔所占用的存儲空間。只是它是通過降低PDF文檔的質量來完成這一任務的。在純文字的情況下他們的差別不大,此參數只是降低了PDF文檔的質量,看上去是糙了一些,但不會影響閱讀。生成的PDF文檔中有大量圖片,那就不要使用此參數了。

  3. -q, --quiet 使用這個參數后,你將得到一個干凈的命令行輸出,就連程序處理的進度和狀態都沒有。這個參數會抑制所有命令行輸出,在程序的工作過程中,你看不到任何輸出。

3.2 大綱參數選項

--dump-default-toc-xsl     輸出默認的 TOC xsl 樣式表到標準輸出
--dump-outline <file>      輸出“大綱”到指定的文件(文件內容為xml)
--outline                  在生成的PDF文檔中輸出“大綱”(這是默認設置)
--no-outline               不在pdf文檔中輸出大綱
--outline-depth <level>    設置生成大綱的深度(默認為 4)

–outline-depth

  • –outline-depth 用來指定生成的大綱的深度。默認值為 4。你可以指定一個大一些的數字,以保證所有在HTML中指定的H標簽都能在大綱中生成對應的項,方便閱讀時快速跳轉。

    當指定了 --no-outline 參數時, 將不會輸出大綱到PDF文檔,所以再指定 --outline-depth 也就沒有意義了。

3.3 頁面對象參數

    --allow <path>                指定加載HTML中相對路徑文件的目錄(可重復使用此參數指定多個目錄),這個參數會在后面進行更詳細的講解--background                  輸出頁面背景到PDF文檔(這是默認設置)--no-background               不輸出頁面背景到PDF文檔--cache-dir <path>            網頁的緩存目錄--checkbox-checked-svg <path> 使用指定的SVG文件渲染選中的復選框--checkbox-svg <path>         使用指定的SVG文件渲染未選中的篩選框--cookie <name> <value>       設置訪問網頁時的cookie,value 需要進行url編碼(可重復使用此參數指定多個cookie)--custom-header <name> <value> 設置訪問網頁時的HTTP頭(可重復使用此參數指定多個HTTP頭)--custom-header-propagation   為每個要加載的資源添加由 --custom-header 指定的HTTP頭--no-custom-header-propagation 不為每個要加載的資源添加由 --custom-header 指定的HTTP頭--debug-javascript            顯示javascript調試輸出的信息--no-debug-javascript         不顯示javascript調試輸出的信息(這是默認設置)--default-header              添加一個默認的“頭”,在頁面的左頭顯示頁面的名字,在頁面的右頭顯示頁碼,這相對于進行了如下設置:--header-left='[webpage]'--header-right='[page]/[toPage]'--top 2cm--header-line--encoding <encoding>         為輸入的文本設置默認的編碼方式--disable-external-links      禁止頁面中的外鏈生成超鏈接--enable-external-links       允許頁面中的外鏈生成超鏈接(這是默認設置)--disable-forms               不轉換HTML表單為PDF表單(這是默認設置)--enable-forms                轉換HTML表單為PDF表單--images                      加載圖片并輸出到PDF文檔(這是默認設置)--no-images                   在生成的PDF文檔中過濾掉圖片--disable-internal-links      禁止頁面中的內鏈生成超鏈接--enable-internal-links       允許頁面中的內鏈生成超連接(這是默認設置)
-n, --disable-javascript          禁止WEB頁面執行 javascript--enable-javascript           允許WEB頁面執行 javascript(這是默認設置)--javascript-delay <msec>     延遲一定的毫秒等待javascript 執行完成(默認值是200)--load-error-handling <handler> 指定當頁面加載失敗后的動作,可以指定為:abort(中止)、ignore(忽略)、skip(跳過)(默認值是:abort)--load-media-error-handling <handler> 指定當媒體文件加載失敗后的動作,可以指定為:abort(中止)、ignore(忽略)、skip(跳過)(默認值是:ignore)--disable-local-file-access   不允許一個本地文件加載其他的本地文件,使用命令行參數`--allow` 指定的目錄除外。--enable-local-file-access    允許本地文件加載其他的本地文件(這是默認設置)--minimum-font-size <int>     設置最小的字號,除非必要不推薦使用該參數--exclude-from-outline        拒絕加載當前頁面到PDF文檔的目錄和大綱中--include-in-outline          加載當前頁面到PDF文檔的目錄和大綱中(這是默認設置)--page-offset <offset>        設置頁碼的起始值(默認值為0)--password <password>         HTTP身份認證的密碼--disable-plugins             禁止使用插件(這是默認設置)--enable-plugins              允許使用插件,但插件可能并不工作--post <name> <value>         添加一個POST字段,可以重復使用該參數添加多個POST字段。--post-file <name> <value>    添加一個POST文件,可以重復使用該參數添加多個文件。--print-media-type            用顯示媒體類型代替屏幕--no-print-media-type         不用顯示媒體類型代替屏幕
-p, --proxy <proxy>               使用代理
--radiobutton-checked-svg <path>  使用指定的SVG文件渲染選中的單選框
--radiobutton-svg <path>          使用指定的SVG文件渲染未選中的單選框
--run-sript <js>                  頁面加載完成后執行一個附加的JS文件,可以重復使用此參數指定多個要在頁面加載完成后要執行的JS文件。
--disable-smart-shrinking         不使用智能收縮策略
--enable-smart-shrinking          使用智能收縮策略(這是默認設置)
--stop-slow-scripts               停止運行緩慢的javascript代碼(這是默認設置)
--no-stop-slow-scripts            不停止運行緩慢的javascript代碼
--disable-toc-back-links          禁止從標題鏈接到目錄(這是默認設置)
--enable-toc-back-links           允許從標題鏈接到目錄
--user-style-sheet <url>          設置一個在每個頁面都加載的用戶自定義樣式表
--username <username>             HTTP身誰的用戶名
--viewport-size <>                設置窗口大小,需要你自定義滾動條或css屬性來自適應窗口大小。
--window-status <windowStatus>    Wait until window.status is equal tothis string before rendering page
--zoom <float>                    設置轉換成PDF時頁面的縮放比例(默認為1)

也是一樣我們找一些常用的來說明

  1. –background AND --no-background
    這兩個參數是一對,用來指定是否在生成的PDF中應用網頁的背景,默認 --background 參數是開啟的,也就是說默認生成的PDF文檔中是帶有HTML頁面的背景圖片或背景色的。如果開啟 --no-backgroupd 參數,則生成的PDF文檔中不會有HTML頁面中的背景圖片和背景色。

  2. –debug-javascript ADN --no-debug-javascript
    這兩個參數用來指定是否在標準輸出中輸出javascript的調試信息,默認 --no-debug-javasript 參數是開啟的,也就是說默認不會輸出javascript的調試信息。下圖是打開 --debug-javascript 參數的演示。

  3. –disable-external-links AND --enable-external-links
    這兩個參數是用來設置在頁面中的外鏈是否以超鏈接的形式出現在PDF文檔中。關于“外鏈”的定義請移架 術語定義 。默認 --enable-external-links 參數被打開,所以默認情況是頁面中的外鏈是以超鏈接的形式出現的PDF文檔中的,點擊可以打開指定的網頁。

  4. –exclude-from-outline AND --include-in-outline
    這兩個參數用來設置當前頁面對象是否包含到目錄和大綱中。
    默認情況下 --include-in-outline 參數是打開的。也就是說默認情況下生成的PDF文檔目錄和大綱中是包含當前頁面的,如果你不想讓當前頁面加到目錄和大綱中可以打開 --exclude-from-outline 參數。

  5. –user-style-sheet
    這個參數用來加載一個用戶自定義的樣式表,用來改變HTML頁面原有的樣式。需要高度自定義頁面新式的同學可以嘗試使用這個參數達到目的。

3.4 頁眉和頁腳參數選項

--footer-center <text>        在頁腳的居中部分顯示頁腳文本 <text>
--footer-font-name <name>     設置頁腳的字體 (默認為 Arial)
--footer-font-size <size>     設置頁腳的字體大小 (默認為 12)
--footer-html <url>           添加一個html作為頁腳
--footer-left <text>          在頁腳的居左部分顯示頁腳文本 <text>
--footer-line                 在頁腳上方顯示一條直線分隔正文
--no-footer-line              不使用直線分隔頁腳與正文(這是默認設置)
--footer-right <text>         在頁腳的居右部分顯示頁腳文本 <text>
--footer-spacing <real>       頁腳與正文之間的距離(默認為零)--header-center <text>        在頁眉的居中部分顯示頁眉文本 <text>
--header-font-name <name>     設置頁眉的字體 (默認為 Arial)
--header-font-size <size>     設置頁眉的字體大小 (默認為 12)
--header-html <url>           添加一個html作為頁眉
--header-left <text>          在頁眉的居左部分顯示頁眉文本 <text>
--header-line                 在頁眉下方顯示一條直線分隔正文
--no-header-line              不使用直線分隔頁眉與正文(這是默認設置)
--header-right <text>         在頁眉的居右部分顯示頁眉文本 <text>
--header-spacing <real>       頁眉與正文之間的距離(默認為零)

3.5 目錄對象參數

--disable-dotted-lines        在目錄中不使用虛線
--toc-header-text <text>      設置目錄的頁眉文本
--toc-level-indentation <width> 第級標題在目錄中的縮進寬度(默認為1em)
--disable-toc-links           在目錄中不生成指向內容錨點的超鏈接
--toc-text-size-shrink <real> 在目錄中每級標題的縮放比例(默認為0.8)
--xsl-style-sheet <file>      使用自定義的 XSL 樣式表顯示目錄內容

默認的頁面尺寸是 A4,你可以使用 --page-size 參數指定你想要的頁面尺寸,如:A3,Letter 和 Legal等。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/96161.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/96161.shtml
英文地址,請注明出處:http://en.pswp.cn/web/96161.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Git常用命令大全:高效開發必備

目錄 常用Git命令清單 1. 新建代碼庫 2. 配置 3. 增加/刪除文件 4. 代碼提交 5. 分支 6. 標簽 7. 查看信息 8. 遠程同步 9. 撤銷 10. 常用操作組合 修改本地分支名和遠程分支名 附錄&#xff1a;Git命令思維導圖 安裝gitlab 常用Git命令清單 一般來說&#xff0…

AJAX入門-URL

本系列可作為前端學習系列的筆記&#xff0c;代碼的運行環境是在VS code中&#xff0c;小編會將代碼復制下來&#xff0c;大家復制下來就可以練習了&#xff0c;方便大家學習。 HTML、CSS、JavaScript系列文章 已經收錄在前端專欄&#xff0c;有需要的寶寶們可以點擊前端專欄查…

【深度學習新浪潮】什么是具身智能?

具身智能(Embodied AI)是人工智能與機器人技術深度融合的前沿領域,其核心是通過物理實體與環境的實時交互閉環,實現感知-認知-決策-行動的一體化自主進化。這類系統不僅能理解語言指令,更能通過高精度傳感器(如觸覺、視覺、力覺融合)感知物理世界,依托多模態大模型完成…

動畫藍圖與動畫狀態機:從 Unity Mecanim 到 Unreal Animation Blueprint 的一把梭

動畫藍圖與動畫狀態機&#xff1a;從 Unity Mecanim 到 Unreal Animation Blueprint 的一把梭這篇是系列的第一篇。目標很簡單&#xff1a;把 Unreal 的 Animation Blueprint 和 Unity 的 Animator Controller&#xff08;Mecanim&#xff09; 放在同一張桌子上&#xff0c;系統…

實戰案例:數字孿生+可視化大屏,如何高效管理智慧能源園區?

摘要&#xff1a; 當智慧遇上能源&#xff0c;一場管理革命正在悄然發生。想象一下&#xff1a;一個占地千畝的能源園區&#xff0c;光伏板、儲能站、風力機組星羅棋布&#xff0c;傳統管理模式下&#xff0c;數據分散、響應滯后、故障頻發... 但某園區引入“數字孿生可視化大屏…

Django 從環境搭建到第一個項目

作為一名剛接觸 Django 的開發者&#xff0c;我在學習過程中整理了這份入門筆記&#xff0c;涵蓋 Django 框架基礎、環境搭建、第一個項目創建以及核心配置&#xff0c;希望能為同樣剛入門的小伙伴提供清晰的學習思路。 一、Django 框架基礎認知 在開始實際操作前&#xff0c…

機器學習實操項目02——Pandas入門(基本操作、創建對象、查看數據、數據選擇、處理缺失數據、數據合并、數據分組、時間序列、繪圖、文件導出)

上一章&#xff1a;機器學習實操項目01——Numpy入門&#xff08;基本操作、數組形狀操作、復制與試圖、多種索引技巧、線性代數&#xff09; 下一章&#xff1a; 機器學習核心知識點目錄&#xff1a;機器學習核心知識點目錄 機器學習實戰項目目錄&#xff1a;【從 0 到 1 落地…

springboot超市貨品信息管理系統

開發環境開發語言&#xff1a;Java 框架&#xff1a;springboot JDK版本&#xff1a;JDK1.8 服務器&#xff1a;tomcat7 數據庫&#xff1a;mysql 5.7&#xff08;一定要5.7版本&#xff09; 數據庫工具&#xff1a;Navicat11 開發軟件&#xff1a;eclipse/myeclipse/idea Mave…

c# .net中using的使用

using示例代碼 示例代碼1&#xff1a; using HttpContent httpContent new StringContent(postData, Encoding.UTF8);示例代碼2&#xff1a; using (var process Process.Start(info)) {output process.StandardOutput.ReadToEnd(); }示例代碼1寫法&#xff1a; using HttpC…

STM32HAL 快速入門(二十):UART 中斷改進 —— 環形緩沖區解決數據丟失

前言 大家好&#xff0c;這里是 Hello_Embed。上一篇我們用中斷方式實現了 UART 收發&#xff0c;但發現一個關鍵問題&#xff1a;若 CPU 在處理其他任務時未及時重新使能接收中斷&#xff0c;新數據會覆蓋舊數據&#xff0c;導致丟失。本篇的核心改進方案是 ——“中斷接收 環…

使用Docker搭建MaxKB智能體平臺

1、系統要求 詳見&#xff1a; https://maxkb.cn/docs/v2/quick_start https://maxkb.cn/docs/v2/installation/offline_installtion https://maxkb.cn/docs/v2/installation/online_installtion 2、安裝Docker 合集&#xff1a;Docker安裝與使用 3、安裝MaxKB 詳見&#xf…

寵物電商痛點破解:智能客服的關鍵作用

在寵物電商蓬勃發展的當下&#xff0c;行業面臨著諸多痛點。從客戶咨詢的高頻率到訂單處理的復雜性&#xff0c;每一個環節都可能成為制約發展的瓶頸。而智能客服的出現&#xff0c;為這些痛點提供了有效的解決方案&#xff0c;成為寵物電商行業不可或缺的助力。一、寵物電商的…

基于GraphRAG+Ollama驗證知識圖譜和檢索增強融合

之前介紹了知識圖譜與檢索增強的融合探索GraphRAG。 https://blog.csdn.net/liliang199/article/details/151189579 這里嘗試在CPU環境&#xff0c;基于GraphRAGOllama&#xff0c;驗證GraphRAG構建知識圖譜和檢索增強查詢過程。 1 環境安裝 1.1 GraphRAG安裝 在本地cpu環境…

36頁可編輯PPT | 某制造集團燈塔工廠解決方案

制造業企業訂單種類多&#xff0c;傳統產線換型慢&#xff0c;庫存高&#xff0c;財務壓力大。工人年齡大&#xff0c;招工難&#xff0c;工資漲&#xff0c;效率低。海外對手用低價和柔性產線搶單&#xff0c;國內同行用數字化縮短交期。企業想擴產&#xff0c;又怕投資重、回…

Redis 非緩存核心場景及實例說明

Redis 非緩存核心場景及實例說明 一、分布式鎖 分布式鎖用于解決分布式系統中多節點競爭同一資源的問題&#xff0c;確保操作原子性。Redis 實現分布式鎖的核心思路是利用鍵的唯一性和原子命令&#xff0c;通常基于 Redisson 框架簡化實現&#xff08;底層依賴 Redis 命令&…

【技術教程】如何將ONLYOFFICE文檔集成到使用Spring Boot框架編寫的Java Web應用程序中

在現代協作辦公環境中&#xff0c;將功能強大的文檔編輯器無縫集成到自有業務系統中&#xff0c;已成為提升工作效率和用戶體驗的關鍵需求。ONLYOFFICE 文檔服務器提供了一套成熟的在線文檔編輯解決方案&#xff0c;而 Java Spring Boot 則是構建高效、模塊化 Web 應用的熱門框…

openharmony之AV_CodeC音視頻編解碼模塊詳解(二)

1. 音頻解碼器函數調用流程 1.1 音頻解碼器架構概覽 decoder:解碼器 encoder:編碼器 前面文章介紹了關于openHarmony的AV_CodeC模塊,這篇文章將詳細講解編解碼時函數的調用流程 音頻解碼器采用插件化架構,核心實現位于: services/engine/codec/audio/decoder/audio_ffmpeg…

PDF24 Creator:免費的多功能PDF工具

在處理PDF文件時&#xff0c;一個功能強大且免費的PDF工具是許多用戶的首選。PDF24 Creator作為一款免費的PDF工具&#xff0c;提供了豐富的功能&#xff0c;幫助用戶創建、編輯和轉換PDF文件&#xff0c;滿足從初學者到專業用戶的各種需求。它不僅支持PDF與Word、Excel等15種以…

VBA 中使用 ADODB 操作 SQLite 插入中文亂碼問題

問題 使用 VBA 的 ADODB 對象的 command 對象、parameter 對象&#xff0c;插入的中文數據為亂碼 驅動下載、安裝、引用 驅動網址(下載路徑) 使用的 ODBC 驅動&#xff08;需要梯子才能下載&#xff0c;感謝大佬開源&#xff09; http://www.ch-werner.de/sqliteodbc/ 版本…

執行select * from a where rownum<1;,數據庫子進程崩潰,業務中斷。

文章目錄環境癥狀觸發條件解決方案環境 系統平臺&#xff1a;Linux x86-64 Red Hat Enterprise Linux 7 版本&#xff1a;4.5.2 癥狀 執行select * from a where rownum<1;&#xff0c;數據庫子進程崩潰&#xff0c;業務中斷。 觸發條件 select 和 where條件帶有rownum…