国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

爬取html生成pdf

light / 2418人閱讀

摘要:首先看了這篇文章前端使用爬蟲生成小書并合并,發(fā)現(xiàn)最后的沒(méi)有書簽,很難受,所以主要在此基礎(chǔ)上加了加書簽的功能。

首先看了這篇文章前端使用puppeteer 爬蟲生成《React.js 小書》PDF并合并,發(fā)現(xiàn)最后的pdf沒(méi)有書簽,很難受,所以主要在此基礎(chǔ)上加了加書簽的功能。

爬去的示例網(wǎng)站為React.js 小書,僅做學(xué)習(xí)交流

針對(duì)網(wǎng)頁(yè)生成pdf

使用puppeteer爬取網(wǎng)頁(yè)并生成pdf

puppeteer中文文檔

const puppeteer = require("puppeteer");

(async () => {
  const browser = await puppeteer.launch();
  const page = await browser.newPage();
  await page.goto("https://news.ycombinator.com", {waitUntil: "networkidle2"});
  await page.pdf({path: "hn.pdf", format: "A4"});

  await browser.close();
})();
合成pdf

pdf-merge:合并pdf

依賴于pdftk

如何給pdf加上書簽

pdftk:一個(gè)處理pdf的工具

安裝后將bin目錄添加到環(huán)境變量

利用update_info_utf8給pdf增加書簽:

pdftk "d:OpenSourceMygenpfdforrsbReact 小書(無(wú)書簽).pdf" update_info_utf8 "d:OpenSourceMygenpfdforrsbookmarks.txt" output "d:OpenSourceMygenpfdforrsbReact 小書.pdf"

書簽是什么

也就是bookmarks.txt

書簽格式:

BookmarkBegin
BookmarkTitle: PDF Reference (Version 1.5)
BookmarkLevel: 1
BookmarkPageNumber: 1
BookmarkBegin
BookmarkTitle: Contents
BookmarkLevel: 2
BookmarkPageNumber: 3
確定書簽頁(yè)碼

pdfjs-dist:獲取單個(gè)pdf頁(yè)數(shù),用于bookmarks.txt中指定頁(yè)碼

生成書簽
const pageArr = result.map(c => c.numPages);
let txt = ""
for (let index = 0; index < pageArr.length; index++) {
    let temp = `BookmarkBegin
BookmarkTitle: ${titleArr[index]}
BookmarkLevel: 1
BookmarkPageNumber: ${pageIndex}
`
    txt += temp
    pageIndex += pageArr[index]
}
fs.writeFileSync("bookmarks.txt", txt);
加上書簽

參考pdf-merge源碼,增加runshell.js用于在node中執(zhí)行pdftk的命令

runshell.js如下:

"use strict";
const child = require("child_process");
const Promise = require("bluebird");
const exec = Promise.promisify(child.exec);

module.exports = (scripts) => new Promise((resolve, reject) => {
    exec(scripts)
        .then(resolve)
        .catch(reject);
});

執(zhí)行pdftk update_info_utf8

const nobkname = "React 小書(無(wú)書簽).pdf"
const hasbkname = "React 小書.pdf"
mergepdf(nobkname).then(buffer => {
    console.log("starting add bookmarks!")
    runshell(`pdftk "${__dirname}/${nobkname}" update_info_utf8 "${__dirname}/bookmarks.txt" output "${__dirname}/${hasbkname}"`).then(() => {
        console.log("completed add bookmarks!")
        fs.unlinkSync(`${__dirname}/${nobkname}`);
        fs.unlinkSync(`${__dirname}/bookmarks.txt`);
        console.log("all completed!")
    })
})

文件路徑需要用雙引號(hào)

源碼:genpfdforrsb

問(wèn)題

合并后的pdf頁(yè)碼不是連續(xù)的,還是單個(gè)pdf的頁(yè)碼

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://m.specialneedsforspecialkids.com/yun/100781.html

相關(guān)文章

  • Puppeteer初探--爬取生成《ES6標(biāo)準(zhǔn)入門》PDF

    摘要:首先介紹是一個(gè)庫(kù),他提供了一組用來(lái)操縱的默認(rèn)也就是無(wú)的,也可以配置為有有點(diǎn)類似于,但是官方團(tuán)隊(duì)進(jìn)行維護(hù)的,前景更好。使用,相當(dāng)于同時(shí)具有和的能力,應(yīng)用場(chǎng)景會(huì)非常多。 首先介紹Puppeteer Puppeteer是一個(gè)node庫(kù),他提供了一組用來(lái)操縱Chrome的API(默認(rèn)headless也就是無(wú)UI的chrome,也可以配置為有UI) 有點(diǎn)類似于PhantomJS,但Puppet...

    JerryWangSAP 評(píng)論0 收藏0
  • 使用Node.js爬取任意網(wǎng)頁(yè)資源并輸出高質(zhì)量PDF文件到本地~

    摘要:上面只爬取了京東首頁(yè)的圖片內(nèi)容,假設(shè)我的需求進(jìn)一步擴(kuò)大,需要爬取京東首頁(yè)中的所有標(biāo)簽對(duì)應(yīng)的跳轉(zhuǎn)網(wǎng)頁(yè)中的所有的文字內(nèi)容,最后放到一個(gè)數(shù)組中。 showImg(https://segmentfault.com/img/bVbtVeV?w=3840&h=2160); 本文適合無(wú)論是否有爬蟲以及Node.js基礎(chǔ)的朋友觀看~ 需求: 使用Node.js爬取網(wǎng)頁(yè)資源,開(kāi)箱即用的配置 將爬取到的...

    seasonley 評(píng)論0 收藏0
  • 使用Node.js爬取任意網(wǎng)頁(yè)資源并輸出高質(zhì)量PDF文件到本地~

    摘要:上面只爬取了京東首頁(yè)的圖片內(nèi)容,假設(shè)我的需求進(jìn)一步擴(kuò)大,需要爬取京東首頁(yè)中的所有標(biāo)簽對(duì)應(yīng)的跳轉(zhuǎn)網(wǎng)頁(yè)中的所有的文字內(nèi)容,最后放到一個(gè)數(shù)組中。 showImg(https://segmentfault.com/img/bVbtVeV?w=3840&h=2160); 本文適合無(wú)論是否有爬蟲以及Node.js基礎(chǔ)的朋友觀看~ 需求: 使用Node.js爬取網(wǎng)頁(yè)資源,開(kāi)箱即用的配置 將爬取到的...

    xiaoxiaozi 評(píng)論0 收藏0
  • 使用Node.js爬取任意網(wǎng)頁(yè)資源并輸出高質(zhì)量PDF文件到本地~

    摘要:上面只爬取了京東首頁(yè)的圖片內(nèi)容,假設(shè)我的需求進(jìn)一步擴(kuò)大,需要爬取京東首頁(yè)中的所有標(biāo)簽對(duì)應(yīng)的跳轉(zhuǎn)網(wǎng)頁(yè)中的所有的文字內(nèi)容,最后放到一個(gè)數(shù)組中。 showImg(https://segmentfault.com/img/bVbtVeV?w=3840&h=2160); 本文適合無(wú)論是否有爬蟲以及Node.js基礎(chǔ)的朋友觀看~ 需求: 使用Node.js爬取網(wǎng)頁(yè)資源,開(kāi)箱即用的配置 將爬取到的...

    wangym 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<