微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Node.js - 如何编写变量文件名

如何解决Node.js - 如何编写变量文件名

我想运行一个 SVG-PDF 转换器,它处理文件夹中的所有文件并创建具有相应文件名的 PDF 输出文件

var fs = require('fs'),PDFDocument = require('pdfkit'),SVGtoPDF = require('svg-to-pdfkit'),glob = require("glob"),inputFiles = glob.sync('./input/**/*.svg');

for (let i = 0; i < inputFiles.length; i++) {
    var doc = new PDFDocument(),stream = fs.createWriteStream('./output/' + inputFiles[i] + '.pdf'),svg = fs.readFileSync(inputFiles[i],'utf-8');
    SVGtoPDF(doc,svg,0);
    doc.pipe(stream);
    doc.end();
};

显然它不会那样工作...... 如何在 createWriteStream 中使用变量文件名?

解决方法

var fileName = String(inputFiles[i]),outputString = fileName.replace("input","output"),outputStringComplete = outputString.replace("svg","pdf"),stream = fs.createWriteStream(outputStringComplete);
,

您可以执行类似操作以使用正则表达式实际获取文件名。您将获得文件名,然后您可以使用此文件名创建新文件。

const fileDetails = glob.sync('yourpathtodir');
const regex = new RegExp(/[^\\\/]+(?=\.[\w]+$)|[^\\\/]+$/); 
const fileNames = [];
fileDetails.forEach(el =>  fileNames.push(regex.exec(el)[0]));
console.log(fileNames);

for (let i = 0; i < fileNames.length; i++) {
    var doc = new PDFDocument(),stream = fs.createWriteStream(`./output/${fileNames[i]}.pdf`),svg = fs.readFileSync(`${fileNames[i]}.svg`,'utf-8'); // you might need to provide full name for file
    SVGtoPDF(doc,svg,0);
    doc.pipe(stream);
    doc.end();
};
,

简答:像这样使用反引号

fs.createWriteStream(`./somefolder/${fileName}.pdf`)

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。