我发现了一些仓库,它们看起来不像仍然在维护:
我尝试了approach与libreoffice,但pdf输出是如此糟糕,它是不可用的(文本上的差异。网页等)。如果可能的话,我想避免启动任何后台进程和/或将文件保存在服务器上。最好的解决方案是我可以使用缓冲区。出于隐私原因,我不能使用任何外部服务。doc buffer -> pdf buffer
libreoffice
doc buffer -> pdf buffer
如何在nodejs中转换docs于pdf?
woobm2wo1#
对于那些今天可能会遇到这个问题的人:有一个很酷的工具叫做Gotenberg- Docker-powered stateless API,用于将HTML,Markdown和Office文档转换为PDF。它支持通过unoconv转换DOC。我碰巧是Gotenberg的JS/TS客户端的作者-gotenberg-js-client欢迎您使用:)
UPD:
Gotenberg有新网站-https://gotenberg.dev
r6hnlfcb2#
当我创建一个应用程序时,我需要将用户上传的doc或docx文件转换为pdf文件以进行进一步分析。我使用npm包libreoffice-convert来实现此目的。libreoffice-convert需要在Linux机器上安装libreoffice。下面是我使用的示例代码。此代码是用javascript编写的,用于基于nodejs的应用程序。
const libre = require('libreoffice-convert'); const path = require('path'); const fs = require('fs').promises; let lib_convert = promisify(libre.convert) async function convert(name="myresume.docx") { try { let arr = name.split('.') const enterPath = path.join(__dirname, `/public/Resume/${name}`); const outputPath = path.join(__dirname, `/public/Resume/${arr[0]}.pdf`); // Read file let data = await fs.readFile(enterPath) let done = await lib_convert(data, '.pdf', undefined) await fs.writeFile(outputPath, done) return { success: true, fileName: arr[0] }; } catch (err) { console.log(err) return { success: false } } }
你会得到一个非常好的PDF质量。
webghufk3#
要将文档转换为PDF,我们可以使用Universal Office Converter (unoconv)命令行实用程序。它可以通过任何软件包管理器安装在您的操作系统上,例如使用apt-get将其安装在ubuntu上
sudo apt-get install unoconv
根据禁毒办的文件如果您手动安装了unoconv,请确保安装了所需的LibreOffice或OpenOffice软件包下面的示例演示如何调用unoconv实用程序
unoconv -f pdf sample_document.py
它生成包含sample_document.py内容的PDF文档如果你想使用一个nodeJS程序,那么你可以通过子进程调用命令下面的代码演示了如何使用子进程来使用unoconv创建PDF
const util = require('util'); const exec = util.promisify(require('child_process').exec); async function createPDFExample() { const { stdout, stderr } = await exec('unoconv -f pdf sample.js'); console.log('stdout:', stdout); console.log('stderr:', stderr); } createPDFExample();
d6kp6zgx4#
根据@shubham singh提供的答案,发布了一个稍微修改过的excel版本。我试了一下,效果很好。
const fs = require('fs').promises; const path = require('path'); const { promisify } = require('bluebird'); const libre = require('libreoffice-convert'); const libreConvert = promisify(libre.convert); // get current working directory let workDir = path.dirname(process.mainModule.filename) // read excel file let data = await fs.readFile( `${workDir}/my_excel.xlsx` ); // create pdf file from excel let pdfFile = await libreConvert(data, '.pdf', undefined); // write new pdf file to directory await fs.writeFile( `${workDir}/my_pdf.pdf`, pdfFile );
krcsximq5#
Docx to pdf一个将docx文件转换为pdf的库。安装:
npm install docx-pdf --save
用途
var docxConverter = require('docx-pdf'); docxConverter('./input.docx','./output.pdf',function(err,result){ if(err){ console.log(err); } console.log('result'+result); }); its basically docxConverter(inputPath,outPath,function(err,result){ if(err){ console.log(err); } console.log('result'+result); });
输出应该是output.pdf,它将在您提供的输出路径上生成
jei2mxaa6#
const { spawn } = require('child_process');const soffice = spawn('soffice ',['--convert-to',' pdf',inputFilePath,'--headless']);
6条答案
按热度按时间woobm2wo1#
对于那些今天可能会遇到这个问题的人:
有一个很酷的工具叫做Gotenberg- Docker-powered stateless API,用于将HTML,Markdown和Office文档转换为PDF。它支持通过unoconv转换DOC。
我碰巧是Gotenberg的JS/TS客户端的作者-gotenberg-js-client
欢迎您使用:)
UPD:
Gotenberg有新网站-https://gotenberg.dev
r6hnlfcb2#
当我创建一个应用程序时,我需要将用户上传的doc或docx文件转换为pdf文件以进行进一步分析。我使用npm包libreoffice-convert来实现此目的。libreoffice-convert需要在Linux机器上安装libreoffice。下面是我使用的示例代码。此代码是用javascript编写的,用于基于nodejs的应用程序。
你会得到一个非常好的PDF质量。
webghufk3#
要将文档转换为PDF,我们可以使用Universal Office Converter (unoconv)命令行实用程序。
它可以通过任何软件包管理器安装在您的操作系统上,例如使用apt-get将其安装在ubuntu上
根据禁毒办的文件
如果您手动安装了unoconv,请确保安装了所需的LibreOffice或OpenOffice软件包
下面的示例演示如何调用unoconv实用程序
它生成包含sample_document.py内容的PDF文档
如果你想使用一个nodeJS程序,那么你可以通过子进程调用命令
下面的代码演示了如何使用子进程来使用unoconv创建PDF
d6kp6zgx4#
根据@shubham singh提供的答案,发布了一个稍微修改过的excel版本。我试了一下,效果很好。
krcsximq5#
Docx to pdf一个将docx文件转换为pdf的库。
安装:
用途
输出应该是output.pdf,它将在您提供的输出路径上生成
jei2mxaa6#
const { spawn } = require('child_process');
const soffice = spawn('soffice ',['--convert-to',' pdf',inputFilePath,'--headless']);