最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

使用Nodejs編寫一個腳本實(shí)現(xiàn)markdown轉(zhuǎn)pdf功能

 更新時間:2024年05月14日 08:29:21   作者:Moment  
Markdown?是一種輕量級的標(biāo)記語言,非常適合用來寫作和記錄,將?Markdown?轉(zhuǎn)換為?PDF?可以讓文檔在格式和樣式上更加統(tǒng)一,也方便在不同設(shè)備和平臺上查看和打印,在接下來的內(nèi)容中我們將講解如何使用?NodeJs?編寫一個?Markdown?轉(zhuǎn)?PDF?的腳本來實(shí)現(xiàn)我們這個想要的功能

前言

Markdown 是一種輕量級的標(biāo)記語言,非常適合用來寫作和記錄,但并不是所有人都習(xí)慣或能夠直接閱讀 Markdown 文件。將 Markdown 轉(zhuǎn)換為 PDF 可以讓文檔在格式和樣式上更加統(tǒng)一,也方便在不同設(shè)備和平臺上查看和打印,方便分享給不熟悉 Markdown 的用戶。

在接下來的內(nèi)容中我們將講解如何使用 NodeJs 編寫一個 Markdown 轉(zhuǎn) PDF 的腳本來實(shí)現(xiàn)我們這個想要的功能。

實(shí)現(xiàn)

首先我們來明確一下我們的需求,我們目前的情況是主需要讀取內(nèi)容,暫時還不需要讀取樣式什么的,但是我們還需要將 Markdown 里的圖片鏈接在 pdf 里能直接顯示。

我們需要安裝 markdown-pdf 來實(shí)現(xiàn)文檔轉(zhuǎn)換,使用 node-fetch 來實(shí)現(xiàn)下載圖片,并將圖片展現(xiàn)在 pdf 上。

pnpm add markdown-pdf node-fetch

node-fetch 是一個輕量級的模塊,提供了一個類似于瀏覽器原生 fetch API 的接口,用于在 Node.js 環(huán)境中發(fā)起 HTTP 請求。這個庫主要被設(shè)計(jì)用來使服務(wù)器端的代碼能夠以一種與前端開發(fā)者熟悉的方式來進(jìn)行網(wǎng)絡(luò)請求。

接下來我們將編寫一個簡單的 NodeJs 腳本,并讀取 markdown 文件,下載其中的圖片,并將其轉(zhuǎn)換為 PDF。

import fs from "fs";
import path from "path";
import fetch from "node-fetch";
import markdownPdf from "markdown-pdf";

async function prepareMarkdown(inputFile, outputFile) {
  let data = fs.readFileSync(inputFile, "utf8");
  const regex = /!\[.*?\]\((.*?)\)/g;
  let match;

  while ((match = regex.exec(data)) !== null) {
    const imageUrl = match[1];
    const imageName = path.basename(imageUrl);
    const imagePath = "./images/" + imageName;

    // 確保 images 目錄存在
    const directory = path.dirname(imagePath);
    if (!fs.existsSync(directory)) {
      fs.mkdirSync(directory, { recursive: true });
    }

    // 下載圖片,如果還未下載
    if (!fs.existsSync(imagePath)) {
      const response = await fetch(imageUrl);
      const buffer = Buffer.from(await response.arrayBuffer());
      fs.writeFileSync(imagePath, buffer);
    }

    // 替換 Markdown 中的圖片鏈接為本地路徑
    data = data.replace(imageUrl, imagePath);
  }

  // 將替換后的 Markdown 寫入到臨時文件
  fs.writeFileSync(outputFile, data);
}

// 將 Markdown 轉(zhuǎn)換為 PDF
async function markdownToPdf(inputFile, pdfFile) {
  const tempFile = "moment.md";
  await prepareMarkdown(inputFile, tempFile);
  markdownPdf()
    .from(tempFile)
    .to(pdfFile, () => {
      console.log("PDF 創(chuàng)建成功");

      fs.unlinkSync(tempFile);
    });
}

markdownToPdf("./如何將 NestJs 應(yīng)用部署到 vercel.md", "./moment.pdf");

在上面的這些代碼中,首先使用正則表達(dá)式 regex 匹配 Markdown 文件中的圖片鏈接格式 ![xxx](url)。此正則表達(dá)式將捕獲 Markdown 圖片的 URL。

從 url 中解析文件名,創(chuàng)建本地存儲路徑,檢查圖片是否下載,如果沒有下載則使用 fetch 獲取圖片內(nèi)容保存到本地,并將圖片路徑寫入到臨時路徑文件 outputFile。

之后將調(diào)用我們的 markdown-pdf 庫來實(shí)現(xiàn) markdown 轉(zhuǎn) pdf。

這個時候在我們終端中執(zhí)行如下命令:

node index.js

最終執(zhí)行效果如下圖所示:

它給我創(chuàng)建了一個 images 路徑,用于存放我們剛才下載到的圖片,也為我們創(chuàng)建了一個 pdf 文件,它的最終效果如下圖所示:

圖片和我們編寫的內(nèi)容都能正常顯示,那如果要給我們的內(nèi)容中添加一些樣式就非常好看了。

總結(jié)

通過上面的內(nèi)容我們實(shí)現(xiàn)了一個 markdown 轉(zhuǎn) pdf 的過程,之后如果真的有需要的話,可以加入一些樣式之類的,讓我們的外觀變得好看,我們也可以編寫好一些 css 樣式,讓他成為我們編寫簡歷的神器

到此這篇關(guān)于使用Nodejs編寫一個腳本實(shí)現(xiàn)markdown轉(zhuǎn)pdf功能的文章就介紹到這了,更多相關(guān)Nodejs markdown轉(zhuǎn)pdf內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 解決node-webkit 不支持html5播放mp4視頻的方法

    解決node-webkit 不支持html5播放mp4視頻的方法

    本文給大家分享的是解決node-webkit 不支持html5播放mp4視頻的方法,其原因大概是因?yàn)閚ode-webkit沒有購買mp4格式的專利授權(quán),恩,我們來想個辦法來解決這個事情吧。
    2015-03-03
  • 使用 Node.js 操作 SQLite的方法

    使用 Node.js 操作 SQLite的方法

    SQLite是一個輕量級的嵌入式關(guān)系型數(shù)據(jù)庫,適合小型項(xiàng)目、原型開發(fā)和本地?cái)?shù)據(jù)存儲,在 Node.js 中使用 SQLite 非常方便,常用的第三方庫,本文給大家介紹使用Node.js操作SQLite的方法,感興趣的朋友一起看看吧
    2025-09-09
  • Node.js 使用 gRPC從定義到實(shí)現(xiàn)過程詳解

    Node.js 使用 gRPC從定義到實(shí)現(xiàn)過程詳解

    gRPC是一個高性能、開源的遠(yuǎn)程過程調(diào)用(RPC)框架,由 Google 開發(fā),它支持多種編程語言,旨在簡化和優(yōu)化分布式系統(tǒng)中的服務(wù)通信,本文給大家介紹Node.js 使用 gRPC從定義到實(shí)現(xiàn)過程,感興趣的朋友跟隨小編一起看看吧
    2024-07-07
  • Nodejs調(diào)用Dll模塊的方法

    Nodejs調(diào)用Dll模塊的方法

    這篇文章主要介紹了Nodejs調(diào)用Dll模塊的方法,在文中給大家提到了nodejs通過ffi調(diào)用dll模塊的代碼,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價值,需要的朋友可以參考下
    2018-09-09
  • 前端+nodejs+mysql實(shí)現(xiàn)前后端聯(lián)通的完整代碼

    前端+nodejs+mysql實(shí)現(xiàn)前后端聯(lián)通的完整代碼

    Node.js主要屬于后端技術(shù),但也可以用于前端開發(fā)的某些場景,下面這篇文章主要介紹了前端+nodejs+mysql實(shí)現(xiàn)前后端聯(lián)通的完整代碼,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2025-04-04
  • Node.js中child_process實(shí)現(xiàn)多進(jìn)程

    Node.js中child_process實(shí)現(xiàn)多進(jìn)程

    這篇文章主要介紹了Node.js中child_process實(shí)現(xiàn)多進(jìn)程,需要的朋友可以參考下
    2015-02-02
  • Node.js 路由的實(shí)現(xiàn)方法

    Node.js 路由的實(shí)現(xiàn)方法

    這篇文章主要介紹了Node.js 路由的實(shí)現(xiàn)方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-06-06
  • nodejs配置express服務(wù)器運(yùn)行自動打開瀏覽器詳細(xì)步驟

    nodejs配置express服務(wù)器運(yùn)行自動打開瀏覽器詳細(xì)步驟

    在nodejs中使用express來搭建框架可以說是非常的簡單方便,下面這篇文章主要給大家介紹了關(guān)于nodejs配置express服務(wù)器運(yùn)行自動打開瀏覽器的相關(guān)資料,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2024-01-01
  • npx的使用及原理分析

    npx的使用及原理分析

    這篇文章主要介紹了npx的使用及原理,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-02-02
  • Node.js系列之安裝配置與基本使用(1)

    Node.js系列之安裝配置與基本使用(1)

    這篇文章主要為大家詳細(xì)介紹了Node.js系列之安裝配置與基本使用,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-08-08

最新評論

云阳县| 景泰县| 余江县| 大埔县| 南部县| 全椒县| 宣恩县| 内丘县| 澄迈县| 鸡西市| 汉寿县| 徐汇区| 麻江县| 同仁县| 濉溪县| 剑阁县| 乐亭县| 株洲县| 类乌齐县| 黔南| 将乐县| 麦盖提县| 封丘县| 庆阳市| 浦江县| 胶州市| 龙江县| 安康市| 五常市| 泰州市| 万源市| 镇雄县| 北辰区| 赫章县| 福清市| 安乡县| 北宁市| 扬中市| 荥经县| 安义县| 正蓝旗|