如何解决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 举报,一经查实,本站将立刻删除。