兩天有個(gè)客戶需要把網(wǎng)頁(yè)轉(zhuǎn)為pdf,之前也沒(méi)開發(fā)過(guò)類似的工具,就在百度搜索了一波,主要有下面三種
在百度(我一般用必應(yīng))搜索“在線網(wǎng)頁(yè)轉(zhuǎn)pdf”就有很多可以做這個(gè)事的網(wǎng)站,免費(fèi)的如
各種pdf的操作都有,免費(fèi)使用,速度一般。
官網(wǎng)地址https://tools.pdf24.org/zh
PDF24 Tools
開源免費(fèi)項(xiàng)目,使用golang寫的,提供在線轉(zhuǎn)
官網(wǎng)地址http://doctron.lampnick.com/
doctron在線體驗(yàn)demo
還有挺多其他的,可以自己搜索,但是都不符合我的預(yù)期。
Doctron,這是我今天要介紹的重頭戲。
Doctron是基于Docker、無(wú)狀態(tài)、簡(jiǎn)單、快速、高質(zhì)量的文檔轉(zhuǎn)換服務(wù)。目前支持將html轉(zhuǎn)為pdf、圖片(使用chrome(Chromium)瀏覽器內(nèi)核,保證轉(zhuǎn)換質(zhì)量)。支持PDF添加水印。
管他的,先把代碼下載下來(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)逐一介紹。
功能位置:工具 >> 創(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)。
轉(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)換效果
安裝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)。
今天,我們介紹了使用“Acrobat”轉(zhuǎn)存網(wǎng)頁(yè)為PDF文件的方法。
以上。
如果你喜歡“一冊(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">
*請(qǐng)認(rèn)真填寫需求信息,我們會(huì)在24小時(shí)內(nèi)與您取得聯(lián)系。