下面给你一份 《Node.js 实现 TXT ⇄ PDF 相互转换的完整方案 + 代码详解》,包含:

✔ TXT → PDF
✔ PDF → TXT(提取文字)
✔ 使用两套库(pdfkitpdf-parse
✔ 关键注意事项(换行、编码、中文字体嵌入)
✔ 可直接运行完整代码示例


🚀 一、环境准备

安装两个核心包:

npm install pdfkit pdf-parse

说明:

作用
生成 PDF(TXT → PDF)pdfkit
解析 PDF(PDF → TXT)pdf-parse

📌 二、TXT → PDF(Node.js 生成 PDF 文件)

注意:默认 PDFKit 不支持中文,需要加载字体!

① 创建目录结构

project/
 ├─ index.js
 ├─ input.txt
 └─ fonts/
      └─ NotoSansSC-Regular.otf   // 推荐使用开源中文字体

常用免费中文字体(Google Noto):

https://fonts.google.com/noto/specimen/Noto+Sans+SC

下载后放入 fonts 目录即可。


✅ ② TXT → PDF 完整代码(可直接运行)

// convert-txt-to-pdf.js
const fs = require('fs');
const PDFDocument = require('pdfkit');

function txtToPdf(inputPath, outputPath) {
  const text = fs.readFileSync(inputPath, "utf-8");

  const doc = new PDFDocument({
    font: "fonts/NotoSansSC-Regular.otf",
    margin: 50
  });

  doc.pipe(fs.createWriteStream(outputPath));

  doc.font("fonts/NotoSansSC-Regular.otf")
     .fontSize(12)
     .text(text, {
        lineGap: 4,
        paragraphGap: 10
     });

  doc.end();

  console.log("TXT 转 PDF 成功:", outputPath);
}

// 调用
txtToPdf("input.txt", "output.pdf");

📌 支持中文、换行、自动分页
📌 100% 可运行


🚀 三、PDF → TXT(提取 PDF 内容)

使用 pdf-parse 提取纯文本内容。

📌 支持中文(PDF 内必须嵌入字体)
无法提取图片中的文字(那必须用 OCR)


✅ PDF → TXT 完整代码

// convert-pdf-to-txt.js
const fs = require('fs');
const pdfParse = require('pdf-parse');

async function pdfToTxt(inputPath, outputPath) {
  const buffer = fs.readFileSync(inputPath);

  const data = await pdfParse(buffer);

  fs.writeFileSync(outputPath, data.text, "utf-8");

  console.log("PDF 转 TXT 成功:", outputPath);
}

// 调用
pdfToTxt("output.pdf", "parsed.txt");


📌 四、PDF → TXT 解析得到的内容结构

pdf-parse 返回一个对象:

{
  numpages: 3,
  numrender: 3,
  info: { ... },
  metadata: {},
  text: "...解析出的文本..."
}

你主要用 data.text


🧩 五、TXT ⇄ PDF 缺陷 & 注意事项

1. PDFKit 默认不支持中文

必须加载中文字体:

doc.font("fonts/NotoSansSC-Regular.otf");

否则中文会变成方块(□)。


2. PDF → TXT 可能会丢失格式

PDF 本质上是绝对定位的排版文件:

  • 换行可能不完全准确
  • 多栏排版的顺序可能混乱
  • 表格不会转换成表格(变成纯文本)

3. 图片中的文字不能提取

必须使用 OCR,例如:

  • tesseract.js
  • 云 OCR 接口(腾讯/阿里/百度)

如果你需要,我可以给你提供 Node.js OCR 提取 PDF 中文的完整代码


🏁 六、整合:写一个双向转换 CLI 工具(附完整代码)

如需一个:

node convert.js --txt input.txt --pdf out.pdf
node convert.js --pdf input.pdf --txt out.txt