整合營(yíng)銷服務(wù)商

          電腦端+手機(jī)端+微信端=數(shù)據(jù)同步管理

          免費(fèi)咨詢熱線:

          網(wǎng)頁(yè)轉(zhuǎn)pdf,這個(gè)工具真好用

          兩天有個(gè)客戶需要把網(wǎng)頁(yè)轉(zhuǎn)為pdf,之前也沒(méi)開發(fā)過(guò)類似的工具,就在百度搜索了一波,主要有下面三種

          1. 在線轉(zhuǎn)pdf
          2. 使用瀏覽器打印功能轉(zhuǎn)pdf
          3. 使用本地軟件工具轉(zhuǎn)pdf

          在線轉(zhuǎn)pdf

          在百度(我一般用必應(yīng))搜索“在線網(wǎng)頁(yè)轉(zhuǎn)pdf”就有很多可以做這個(gè)事的網(wǎng)站,免費(fèi)的如

          • PDF24Tools

          各種pdf的操作都有,免費(fèi)使用,速度一般。

          官網(wǎng)地址https://tools.pdf24.org/zh

          PDF24 Tools

          • doctron

          開源免費(fèi)項(xiàng)目,使用golang寫的,提供在線轉(zhuǎn)

          官網(wǎng)地址http://doctron.lampnick.com/

          doctron在線體驗(yàn)demo

          還有挺多其他的,可以自己搜索,但是都不符合我的預(yù)期。

          使用瀏覽器打印功能轉(zhuǎn)pdf

          1. 在瀏覽器右鍵,點(diǎn)擊打印或者ctrl+p
          2. 在彈出的打印對(duì)話框中找到目標(biāo)打印機(jī)選擇“另存為PDF”
          3. 點(diǎn)擊“保存”按鈕即可下載pdf了

          使用本地軟件工具轉(zhuǎn)pdf

          Doctron,這是我今天要介紹的重頭戲。

          Doctron是基于Docker、無(wú)狀態(tài)、簡(jiǎn)單、快速、高質(zhì)量的文檔轉(zhuǎn)換服務(wù)。目前支持將html轉(zhuǎn)為pdf、圖片(使用chrome(Chromium)瀏覽器內(nèi)核,保證轉(zhuǎn)換質(zhì)量)。支持PDF添加水印。

          • 使用chrome內(nèi)核保證高質(zhì)量將HTML轉(zhuǎn)為pdf/圖片。
          • 簡(jiǎn)易部署(提供docker鏡像,Dockerfile以及k8s yaml配置文件)。支持豐富的轉(zhuǎn)換參數(shù)。轉(zhuǎn)為pdf和圖片支持自定義大小。
          • 無(wú)狀態(tài)服務(wù)支持。

          管他的,先把代碼下載下來(lái)再說(shuō)

          git clone https://gitcode.net/mirrors/lampnick/doctron.git

          倉(cāng)庫(kù)

          運(yùn)行

          go build
          ./doctron --config conf/default.yaml

          運(yùn)行截圖

          轉(zhuǎn)pdf,訪問(wèn)http://127.0.0.1:8080/convert/html2pdf?u=doctron&p=lampnick&url=<url>,更換鏈接中的url為你需要轉(zhuǎn)換的url即可。

          轉(zhuǎn)換效果

          然后就可以寫程序去批量轉(zhuǎn)換需要的網(wǎng)頁(yè)了,但是我需要轉(zhuǎn)換的網(wǎng)頁(yè)有兩個(gè)需求

          1、網(wǎng)站需要會(huì)員登錄,不然只能看得到一部分

          2、需要把網(wǎng)站的頭和尾去掉的

          這就為難我了,不會(huì)go語(yǔ)言啊,硬著頭皮搞了,肯定有個(gè)地方打開這個(gè)url的,就去代碼慢慢找,慢慢調(diào)試,功夫不負(fù)有心人,終于找到調(diào)用的地方了。

          第一步:添加網(wǎng)站用戶登錄cookie

          添加cookie之前

          添加cookie之后

          第二步:去掉網(wǎng)站頭尾

          chromedp.Evaluate(`$('.header').css("display" , "none");
          		$('.btn-group').css("display" , "none");
          		$('.container .container:first').css("display" , "none");
          		$('.breadcrumb').css("display" , "none");
          		$('.footer').css("display" , "none")`, &ins.buf),

          打開網(wǎng)頁(yè)后執(zhí)行js代碼把頭尾隱藏掉

          第三步:程序化,批量自動(dòng)生成pdf

          public static void createPDF(String folder , String cl ,  String pdfFile, String urlhref) {
                  try {
                      String fileName = pdfFile.replace("/", ":");
                      String filePath = folder + fileName;
                      File srcFile = new File(filePath);
                      File newFolder = new File("/Volumes/disk2/myproject" + File.separator + cl);
                      File destFile = new File(newFolder, fileName);
                      if(destFile.exists()){
                          return;
                      }
                      if(srcFile.exists()){
                          //移動(dòng)到對(duì)應(yīng)目錄
                          if(!newFolder.exists()){
                              newFolder.mkdirs();
                          }
                          FileUtils.moveFile(srcFile , destFile);
                          return;
                      }
                      if(!newFolder.exists()){
                          newFolder.mkdirs();
                      }
                      String url = "http://127.0.0.1:8888/convert/html2pdf?u=doctron&p=lampnick&url="+urlhref;
                      HttpEntity<String> entity = new HttpEntity<String>(null, null);
                      RestTemplate restTemplate = new RestTemplate();
                      ResponseEntity<byte[]> bytes = restTemplate.exchange(url, HttpMethod.GET, entity, byte[].class);
                      if (bytes.getBody().length <= 100) {
                          if(urlList.containsKey(urlhref)){
                              Integer failCount = urlList.get(urlhref);
                              if(failCount > 3){
                                  System.out.println("下載失敗:" + cl + " / " + pdfFile +"  " + urlhref);
                                  return;
                              }
                              failCount++;
                              urlList.put(urlhref , failCount);
                          }else{
                              urlList.put(urlhref , 1);
                          }
          
                          createPDF(folder , cl ,  pdfFile , urlhref);
                      }else{
                          if (!destFile.exists()) {
                              try {
                                  destFile.createNewFile();
                              } catch (Exception e) {
                                  e.printStackTrace();
                              }
                          }
                          try (FileOutputStream out = new FileOutputStream(destFile);) {
                              out.write(bytes.getBody(), 0, bytes.getBody().length);
                              out.flush();
                          } catch (Exception e) {
                              e.printStackTrace();
                          }
                      }
                  } catch (Exception e) {
                      e.printStackTrace();
                  }
              }

          最終成果:


          文件夾分類存放

          pdf文件



          排提示:本期內(nèi)容所用軟件為“Adobe Acrobat Pro DC 2019”

          寫在前面

          再看到喜歡的網(wǎng)頁(yè)時(shí),我們可能會(huì)想要收藏,也可能使用OneNote或者印象筆記轉(zhuǎn)存這些網(wǎng)頁(yè)。

          而在碰到Acrobat之后,我們又多了另外一個(gè)選擇。

          將網(wǎng)頁(yè)直接轉(zhuǎn)存為PDF。

          Acrobat將網(wǎng)頁(yè)轉(zhuǎn)存為PDF有兩種方法。

          下面我們來(lái)逐一介紹。

          方法一:根據(jù)網(wǎng)頁(yè)地址創(chuàng)建PDF

          功能位置:工具 >> 創(chuàng)建PDF >> 網(wǎng)頁(yè)


          點(diǎn)擊“創(chuàng)建PDF”工具,切換頁(yè)面后,點(diǎn)擊左側(cè)的“網(wǎng)頁(yè)”選項(xiàng)。


          根據(jù)網(wǎng)頁(yè)創(chuàng)建PDF

          Acrobat提示我們輸入一個(gè)URL地址,將某個(gè)網(wǎng)頁(yè)鏈接復(fù)制到這里。

          可以勾選“捕捉多層”,軟件會(huì)展開更多選項(xiàng)。

          • “獲取N層”和“獲取整個(gè)網(wǎng)站”只能二選一。因?yàn)槟硞€(gè)網(wǎng)站會(huì)包含多個(gè)超鏈接,前者可限制轉(zhuǎn)換的超鏈接數(shù)量,后者會(huì)獲取全部網(wǎng)站的超鏈接。(毫無(wú)疑問(wèn),網(wǎng)頁(yè)在轉(zhuǎn)換PDF時(shí),后者會(huì)花費(fèi)更多的時(shí)間)
          • 勾選“停留在同一路徑”的話,軟件僅轉(zhuǎn)換“隸屬于所填URL的網(wǎng)頁(yè)”;
          • 勾選“停留在同一服務(wù)器”的話,軟件僅轉(zhuǎn)換“同一服務(wù)器上的網(wǎng)頁(yè)”;
          • “高級(jí)設(shè)置”可以對(duì)轉(zhuǎn)換后的PDF,進(jìn)行頁(yè)面大小,縮放等等參數(shù)的設(shè)置,不再贅述。

          轉(zhuǎn)換網(wǎng)頁(yè)參數(shù)

          參數(shù)設(shè)置完畢,點(diǎn)擊“創(chuàng)建”即可。

          等待數(shù)秒,Acrobat會(huì)自動(dòng)打開轉(zhuǎn)換成功的PDF。

          軟件在識(shí)別網(wǎng)頁(yè)CSS樣式時(shí),會(huì)存在一定的缺陷,但網(wǎng)頁(yè)主體內(nèi)容可以被完美轉(zhuǎn)換。

          轉(zhuǎn)換效果

          方法二:使用瀏覽器插件轉(zhuǎn)換PDF

          安裝Acrobat DC時(shí),會(huì)自動(dòng)為IE、Google Chrome 和Firefox這三款瀏覽器添加“Adoba Arcobat”這款插件。(限Windows系統(tǒng))


          下面以Firefox瀏覽器為例,利用插件將某個(gè)網(wǎng)頁(yè)轉(zhuǎn)存為PDF。

          首先在右上角的選項(xiàng)菜單中找到“附件組件”。


          附件組件

          確保“Adoba Arcobat”插件為啟用狀態(tài)。


          啟用Adobe Acrobat

          這時(shí)在工具欄就可以看到插件圖標(biāo)了。


          通過(guò)瀏覽器隨便訪問(wèn)一個(gè)網(wǎng)站,在右鍵菜單中就會(huì)發(fā)現(xiàn)“Adobe Acrobat” >> “將網(wǎng)頁(yè)轉(zhuǎn)換為Adobe PDF”選項(xiàng)。


          點(diǎn)擊后,只需要選擇一個(gè)存儲(chǔ)路徑,等待數(shù)秒轉(zhuǎn)換即可完成。

          不需要人為再次介入,要比第一種方法更加高效。


          這種方式有點(diǎn)類似于“網(wǎng)頁(yè)內(nèi)容轉(zhuǎn)存至云筆記”。

          一冊(cè)君在測(cè)試知乎的網(wǎng)頁(yè)時(shí),有的內(nèi)容可以轉(zhuǎn)存成功,而有的不可以。

          希望大家留意到這一點(diǎn)。

          總結(jié)

          今天,我們介紹了使用“Acrobat”轉(zhuǎn)存網(wǎng)頁(yè)為PDF文件的方法。

          • 通過(guò)“工具 >> 創(chuàng)建PDF >> 網(wǎng)頁(yè)”,在軟件內(nèi)部通過(guò)網(wǎng)頁(yè)鏈接直接轉(zhuǎn)存;
          • 安裝“Acrobat”后,IE,Chrome,F(xiàn)irefox三款瀏覽器會(huì)安裝“Acrobat插件”,插件提供了“將網(wǎng)頁(yè)轉(zhuǎn)換為Adobe PDF”功能。此方式更加簡(jiǎn)單直觀,但支持的瀏覽器有限;

          以上。

          如果你喜歡“一冊(cè)筆記”,請(qǐng)記得分享,點(diǎn)贊和關(guān)注。

          未完待續(xù)。。。

          TML即超文本標(biāo)記語(yǔ)言是一種用于創(chuàng)建網(wǎng)頁(yè)的標(biāo)準(zhǔn)標(biāo)記語(yǔ)言。對(duì)于初學(xué)者來(lái)說(shuō)一般可以使用工具來(lái)生成html,如:DW,HB等,這些都是所見(jiàn)即所得的工具,在設(shè)計(jì)視圖將需要展現(xiàn)的文字、段落、圖片等內(nèi)容通過(guò)軟件排好版,在代碼視圖將由軟件自動(dòng)生成對(duì)應(yīng)的HTML代碼,這些代碼由客戶電腦上的瀏覽來(lái)解析執(zhí)行。

          HTML語(yǔ)言是一種優(yōu)美的語(yǔ)言,幾乎所有的標(biāo)記都是成對(duì)出現(xiàn)的,配合CSS樣式和JS腳本來(lái)控制頁(yè)面顯示的樣式及效果。有一定開發(fā)經(jīng)驗(yàn)的高手往往可以直接用代碼視圖來(lái)編寫網(wǎng)頁(yè),不管是軟件生成html還是手寫HTML代碼最終顯示的效果都是一致的。如下圖是由DW設(shè)計(jì)的網(wǎng)頁(yè),下方代碼對(duì)應(yīng)的就是HTML代碼,視圖效果和代碼是一一對(duì)應(yīng)的。

          <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">


          主站蜘蛛池模板: 国产丝袜一区二区三区在线观看| AV鲁丝一区鲁丝二区鲁丝三区| 日韩一区二区超清视频| 99精品一区二区免费视频 | 国产一区二区三区在线免费 | 最新中文字幕一区| 久久精品亚洲一区二区| 久久久久人妻一区二区三区| 国产一区在线播放| 亚洲国产欧美一区二区三区 | 国产一区二区三区乱码| 精品人妻系列无码一区二区三区| 免费精品一区二区三区在线观看| 国产日韩精品一区二区三区在线 | 国产在线一区二区三区| 日本免费一区尤物| 亚洲av日韩综合一区久热| 高清国产精品人妻一区二区| 欧美人妻一区黄a片| 色偷偷一区二区无码视频| 亚洲国产av一区二区三区| 在线|一区二区三区四区| 乱精品一区字幕二区| 久久精品一区二区东京热| 亚洲熟妇av一区二区三区漫画| 冲田杏梨高清无一区二区| 怡红院美国分院一区二区| 麻豆果冻传媒2021精品传媒一区下载 | 一区二区三区在线免费看| 国产日韩AV免费无码一区二区| 日韩电影在线观看第一区| 婷婷亚洲综合一区二区| 激情无码亚洲一区二区三区| 亚洲va乱码一区二区三区| 国产日韩精品视频一区二区三区 | 国产伦一区二区三区高清| 一区二区三区美女视频| 亚洲夜夜欢A∨一区二区三区| 另类一区二区三区| 亚洲一区二区观看播放| 日韩美一区二区三区|