整合營銷服務商

          電腦端+手機端+微信端=數據同步管理

          免費咨詢熱線:

          使用Qtwebkit和PHP將HTML轉換為PDF

          使用Qtwebkit和PHP將HTML轉換為PDF

          khtmltopdf是一個非常有用的應用程序,用于從html(網頁)創建pdf。本篇文章將介紹關于如何使用php腳本和Linux命令行工具創建網頁的pdf。



          步驟1:在Linux中安裝wkhtmltopdf

          從google code下載wkhtmltopdf并安裝到Linux系統。

          # cd /opt

          # wget https://wkhtmltopdf.googlecode.com/files/wkhtmltopdf-0.9.9-static-i386.tar.bz2

          # tar xjf wkhtmltopdf-0.9.9-static-i386.tar.bz2

          # mv wkhtmltopdf-i386 /usr/bin/wkhtmltopdf

          # chown apache:apache /usr/bin/wkhtmltopdf

          # chmod +x /usr/bin/wkhtmltopdf

          步驟2:使用命令行創建PDF

          首先檢查wkhtmltopdf腳本,它在命令行中正常工作。下面的命令將創建http://google.com網頁的pdf。

          # /usr/bin/wkhtmltopdf http://google.com google.pdf

          步驟3:使用wkhtmltopdf創建pdf的php代碼

          使用下面的PHP代碼塊從HTML(網頁)生成PDF。此腳本需要為Apache啟用shell_exec函數。大多數共享主機不允許此函數。

          使用下面的代碼創建一個文件名getpdf.php,并將其放到網站文檔根目錄中。

          <?php

          $url=$_GET['url']; // Website URL to Create pdf

          $name=$_GET['pdf']; // Output pdf name

          $command="/usr/bin/wkhtmltopdf ";

          $pdf_dir="/var/www/html/pdfs/"; // Pdf files will be saved here

          $ex_cmd="$command $url " . $pdf_dir . $name;

          $output=shell_exec($ex_cmd);

          ?>

          打開以下網址生成網站的pdf(html)。

          語法:http:

          //youdomain.com/getPdf.php?url=<website url>&pdf=<pdf name>

          示例:

          https : //tecadmin.net/getPdf.php?url=http : //google.com&pdf=google.pdf

          本篇文章到這里就已經全部結束了,更多其他精彩內容可以關注的Linux視頻教程欄目!

          以上就是使用Qtwebkit和PHP將HTML轉換為PDF的詳細內容,更多請關注其它相關文章!

          更多技巧請《轉發 + 關注》哦!

          # 一、前言

          本人寫Qt程序這么多年,比較喜歡支持多個Qt版本,尤其是鐘情于支持任意Qt版本+任意系統+任意編譯器,這句話說起來簡單其實實現起來就不容易了,首先你得有個很多版本的測試環境,起碼十幾個Qt環境要的吧,四五種操作系統要的吧,還要安裝各種VS版本免不了的,畢竟win上除了默認的mingw編譯器還有很多人用的是msvc編譯器,這么一大堆環境折騰下來,沒有個1T硬盤是不夠的,而且官網發布Qt版本的速度相當快,最慢半年肯定來一個版本,又得測試了,每次發布一個大的版本,除了常用的windows以外,linux要測試吧,而且現在還多出來一些國產linux系統比如deepin new start UOS之類的,也要試試吧,哎呀好累。

          下面是部分代碼:

          //公用初始化瀏覽器控件配置
          void WebHelper::initWebSetting()
          {
              //全局配置只需要設置一次就行
              static bool isInit=false;
              if (!isInit) {
                  isInit=true;
          #ifdef webkit
                  QWebSettings *webSetting=QWebSettings::globalSettings();
                  webSetting->setAttribute(QWebSettings::JavascriptEnabled, true);
                  webSetting->setAttribute(QWebSettings::PluginsEnabled, true);
                  webSetting->setAttribute(QWebSettings::JavascriptCanOpenWindows, true);
          #elif webengine
                  QWebEngineSettings *webSetting=QWebEngineSettings::globalSettings();
                  webSetting->setAttribute(QWebEngineSettings::JavascriptEnabled, true);
                  webSetting->setAttribute(QWebEngineSettings::PluginsEnabled, true);
                  webSetting->setAttribute(QWebEngineSettings::JavascriptCanOpenWindows, true);
          #endif
              }
          }
          
          //通用瀏覽器組件加載
          void frmMapBoundary::loadMap(bool tool)
          {
              QString content;
              QString fileName=QString("%1/map_web.html").arg(AppPath);
              QString url="file:///" + fileName;
          
              baidu->reset();
              baidu->setMapZoom(10);
              baidu->setShowOverlayTool(tool);
          
              //設置默認的中心點坐標,建議采用中心點坐標的方式
              baidu->setMapCenterPoint("121.414,31.1828");
          
              //如果采用加載內容方式則需要先設置不存儲文件
              //ie內核以及在linux上需要用load的方式加載
              //發現 Qt5.5 webkit 也需要用文件加載
          #ifdef savehtmlfile
              baidu->setSaveFile(true);
          #else
              baidu->setSaveFile(false);
          #endif
          
              baidu->setFileName(fileName);
              content=baidu->newMap();
          
              //下面為兩種方式加載網頁,如果內容為空則加載網頁文件否則加載內容
              //一般為了保密建議加載內容,這樣看不到生成的網頁文件
              //可能在linux上的webkit內核需要用load的方式加載
              if (baidu->getSaveFile()) {
          #if (defined webkit) || (defined webengine)
                  webView->load(QUrl(url));
          #elif webie
                  webView->dynamicCall("Navigate(const QString&)", url);
          #endif
              } else {
                  QUrl baseUrl(QString("%1/").arg(AppPath));
          #if (defined webkit) || (defined webengine)
                  webView->setHtml(content, baseUrl);
          #endif
              }
          }
          
          //通用數據交互類
          //需要自定義繼承自QObject的類來接收QWebEngineView交互數據,不然會打印很多煩人的信息
          class WebJsData : public QObject
          {
              Q_OBJECT
          public:
              static WebJsData *Instance();
              explicit WebJsData(QObject *parent=0);
          
          public slots:
              //定義兩個參數,這樣就涵蓋了所有的情況 type表示類型相當于唯一標識
              void receiveData(const QString &type, const QVariant &data);
          
          signals:
              void receiveDataFromJs(const QString &type, const QVariant &data);
          };
          
          WebJsData *WebJsData::Instance()
          {
              static WebJsData self;
              return &self;
          }
          
          WebJsData::WebJsData(QObject *parent)
          {
          }
          
          void WebJsData::receiveData(const QString &type, const QVariant &data)
          {
              //可以在這里重新梳理好再發出去信號
              emit receiveDataFromJs(type, data);
          }

          ## 二、功能特點

          1. 同時支持在線地圖和離線地圖兩種模式。

          2. 同時支持webkit內核、webengine內核、IE內核。

          3. 支持設置多個標注點,信息包括名稱、地址、經緯度。

          4. 可設置地圖是否可單擊、拖動、鼠標滾輪縮放。

          5. 可設置協議版本、秘鑰、主題樣式、中心坐標、中心城市、地理編碼位置等。

          6. 可設置地圖縮放比例和級別,縮略圖、比例尺、路況信息等控件的可見。

          7. 支持地圖交互,比如鼠標按下獲取對應位置的經緯度。

          8. 支持查詢路線,可設置起點位置、終點位置、路線模式、路線方式、路線方案(最少時間、最少換乘、最少步行、不乘地鐵、最短距離、避開高速)。

          9. 可顯示點線面工具,可直接在地圖上劃線、點、矩形、圓形等。

          10. 可設置行政區劃,指定某個城市區域繪制圖層,在線地圖自動輸出行政區劃邊界點集合到js文件給離線地圖使用。

          11. 可靜態或者動態添加多個覆蓋物。支持點、折線、多邊形、矩形、圓形、弧線、點聚合等。

          12. 函數接口友好和統一,使用簡單方便,就一個類。

          13. 支持js動態交互添加點、刪除點、清空點、重置點,不需要刷新頁面。

          14. 支持任意Qt版本、任意系統、任意編譯器。

          ## 三、體驗地址

          國內站點:[https://gitee.com/feiyangqingyun](https://gitee.com/feiyangqingyun)

          國際站點:[https://github.com/feiyangqingyun](https://github.com/feiyangqingyun)

          ## 四、效果圖

          # 一、前言

          跨平臺著實花了不少的精力,為了從Qt4.7兼容到Qt6.2及后續版本,頭發掉了不少,僅有的幾根毛所剩無幾,哎,可能這就是程序員的命,本人寫Qt程序這么多年,比較喜歡支持多個Qt版本,尤其是鐘情于支持任意Qt版本+任意系統+任意編譯器,這句話說起來簡單其實實現起來就不容易了,首先你得有個很多版本的測試環境,起碼十幾個Qt環境要的吧,四五種操作系統要的吧,還要安裝各種VS版本免不了的,畢竟win上除了默認的mingw編譯器還有很多人用的是msvc編譯器,這么一大堆環境折騰下來,沒有個1T硬盤是不夠的,而且官網發布Qt版本的速度相當快,最慢半年肯定來一個版本,又得測試了,每次發布一個大的版本,除了常用的windows以外,linux要測試吧,而且現在還多出來一些國產linux系統比如deepin new start UOS之類的,也要試試吧,哎呀好累。

          ## 二、功能特點

          ### 1 省市區域地圖封裝類功能特點

          1. 同時支持閃爍點圖、遷徙圖、區域地圖、世界地圖、儀表盤等。

          2. 可以設置標題、提示信息、背景顏色、文字顏色、線條顏色、區域顏色等各種顏色。

          3. 可設置城市的名稱、值、經緯度 集合。

          4. 可設置地圖的放大倍數、是否允許鼠標滾輪縮放。

          5. 內置世界地圖、全國地圖、省份地圖、地區地圖,可以精確到縣,所有地圖全部離線使用。

          6. 內置了各省市json數據文件轉js文件功能,如有數據更新自行轉換即可,支持單個文件轉換和一鍵轉換所有文件。

          7. 內置了從json文件或者js文件獲取該區域的所有名稱和經緯度信息集合的功能,可以通過該方法獲取到信息用來顯示。

          8. 依賴瀏覽器組件顯示地圖,提供的demo支持webkit/webengine/miniblink/ie 多種方式加載網頁。

          9. 采用miniblink瀏覽器內核打通了Qt5.6及后續版本+mingw編譯器缺少瀏覽器模塊的遺憾,使得整個項目支持所有Qt版本,親測4.7到6.2等任意版本。

          10. 閃爍點遷徙圖等設置的點支持單獨設置顏色。

          11. 提供接口直接獲取點擊的點相關信息,方便程序聯動處理。

          12. 拓展性極強,可以依葫蘆畫瓢自行增加各種精美的echarts組件,做出牛逼的效果。

          13. 內置的儀表盤組件提供交互功能,demo演示中包含了對應的代碼。

          14. 函數接口友好和統一,使用簡單方便,就一個類。

          15. 支持任意Qt版本、任意系統、任意編譯器。

          ### 2 百度地圖封裝類功能特點

          1. 同時支持在線地圖和離線地圖兩種模式。

          2. 同時支持webkit內核、webengine內核、miniblink內核、IE內核。

          3. 支持設置多個標注點,信息包括名稱、地址、經緯度。

          4. 可設置地圖是否可單擊、拖動、鼠標滾輪縮放。

          5. 可設置協議版本、秘鑰、主題樣式、中心坐標、中心城市、地理編碼位置等。

          6. 可設置地圖縮放比例和級別,縮略圖、比例尺、路況信息等控件的可見。

          7. 支持地圖交互,比如鼠標按下獲取對應位置的經緯度。

          8. 支持查詢路線,可設置起點位置、終點位置、路線模式、路線方式、路線方案(最少時間、最少換乘、最少步行、不乘地鐵、最短距離、避開高速)。

          9. 可顯示點線面工具,可直接在地圖上劃線、點、矩形、圓形等。

          10. 可設置行政區劃,指定某個城市區域繪制圖層,在線地圖自動輸出行政區劃邊界點集合到js文件給離線地圖使用。

          11. 可靜態或者動態添加多個覆蓋物。支持點、折線、多邊形、矩形、圓形、弧線、點聚合等。

          12. 提供函數接口處理經緯度解析成地址和地址解析成經緯度坐標。

          13. 提供的demo直接可以單獨選點執行對應的處理比如路線查詢。

          14. 可以拿到路線查詢到的點坐標信息集合,比如用于機器人坐標導航等。

          15. 封裝了豐富的函數比如刪除指定點和所有點,刪除指定覆蓋物和所有覆蓋物等。

          16. 標注點彈框信息可以自定義內容,標準html格式。

          17. 標注點單擊事件可選 0-不處理 1-自己彈框 2-發送信號。

          18. 標注點可設置動畫效果 0-不處理 1-跳動 2-墜落

          19. 標注點可設置本地圖片文件等。

          20. 函數接口友好和統一,使用簡單方便,就一個類。

          21. 支持js動態交互添加點、刪除點、清空點、重置點,不需要刷新頁面。

          22. 支持任意Qt版本、任意系統、任意編譯器。

          ### 3 離線地圖下載類功能特點

          1. 多線程同步下載多級別瓦片地圖,不卡界面。

          2. 內置多個離線地圖下載請求地址,自動隨機選擇一個發送請求。

          3. 下載地圖類型同時支持街道圖和衛星圖。

          4. 自動計算可視區域或者行政區域的下載瓦片數量。

          5. 下載的級別可以自定義范圍和選擇。

          6. 每個瓦片下載完成都發送信號通知,參數包括下載用時。

          7. 可設置下載最大超時時間,超過了則丟棄跳到下一個下載任務。

          8. 實時顯示下載進度,以及當前級別已經下載的瓦片數和總瓦片數。

          9. 下載過程中可以停止下載,下載完成自動統計總用時。

          10. 內置經緯度和屏幕坐標互相轉換函數。

          11. 目前支持百度地圖,其他地圖比如谷歌地圖、騰訊地圖、高德地圖可以定制。

          12. 函數接口友好和統一,使用簡單方便,就一個類。

          13. 支持任意Qt版本、任意系統、任意編譯器。

          ### 4 省市輪廓下載類功能特點

          1. 定時器排隊下載省市輪廓圖點坐標集合存儲到JS文件。

          2. 支持一個行政區域多個不規則區域下載。

          3. 自動計算行政區域的下載輪廓數量。

          4. 可精確選擇省份、市區、縣城,也可直接輸入行政區域的名稱。

          5. 可以設置下載間隔、隨時開始下載和停止下載。

          6. 提供編輯邊界功能,可以直接在地圖上編輯好不規則區域的點集合,然后獲取邊界點集合數據,這個可以用來自己繪制區域拿到數據,比如某個鄉鎮甚至某個小區的行政區域數據,很牛逼。

          ## 三、體驗地址

          1. 體驗地址:[https://pan.baidu.com/s/1ZxG-oyUKe286LPMPxOrO2A](https://pan.baidu.com/s/1ZxG-oyUKe286LPMPxOrO2A) 提取碼:o05q 文件名:bin_map.zip

          2. 國內站點:[https://gitee.com/feiyangqingyun](https://gitee.com/feiyangqingyun)

          3. 國際站點:[https://github.com/feiyangqingyun](https://github.com/feiyangqingyun)

          4. 個人主頁:[https://blog.csdn.net/feiyangqingyun](https://blog.csdn.net/feiyangqingyun)

          5. 知乎主頁:[https://www.zhihu.com/people/feiyangqingyun/](https://www.zhihu.com/people/feiyangqingyun/)

          ## 四、效果圖

          ## 五、相關代碼


          主站蜘蛛池模板: 日韩最新视频一区二区三| 99久久精品国产一区二区成人| 无码国产精品一区二区免费虚拟VR| 国产丝袜无码一区二区三区视频 | 制服中文字幕一区二区| 日韩精品电影一区亚洲| 亚洲片一区二区三区| 国产乱码精品一区二区三区中文| 亚洲熟女少妇一区二区| 日韩av无码一区二区三区| 中字幕一区二区三区乱码 | 中文字幕一区精品| 日本一区精品久久久久影院| 中文字幕一区二区三区久久网站| 日韩中文字幕精品免费一区| 北岛玲在线一区二区| 亚洲韩国精品无码一区二区三区 | 国产一区中文字幕在线观看| 国产99精品一区二区三区免费| 制服丝袜一区二区三区| 亚洲综合在线成人一区| 国产成人高清亚洲一区91| 综合人妻久久一区二区精品 | 海角国精产品一区一区三区糖心 | 国产一区二区视频在线观看| 91一区二区三区四区五区 | 中文字幕一区在线| 国产精品香蕉一区二区三区| 国产福利电影一区二区三区久久久久成人精品综合 | 成人精品视频一区二区三区| ...91久久精品一区二区三区| 八戒久久精品一区二区三区| 久久国产一区二区三区| 国产成人无码aa精品一区| 亚洲爆乳精品无码一区二区三区| 免费精品一区二区三区在线观看| 国产丝袜无码一区二区三区视频 | 国产在线精品一区二区| 亚洲一区精品中文字幕| 国产人妖在线观看一区二区| 亚州日本乱码一区二区三区|