【问题标题】:Node.js - How to write variable file namesNode.js - 如何编写变量文件名
【发布时间】:2021-06-02 18:57:45
【问题描述】:

我想运行一个 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, 0);
    doc.pipe(stream);
    doc.end();
};

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

【问题讨论】:

  • 什么是错误,您的期望是什么?
  • @ApoorvaChikara 我想处理多个文件。例如,在“输入”文件夹和一个空的“输出”文件夹中以“circle.svg”、“triangle.svg”和“square.svg”开头。运行脚本后,“输出”文件夹应包含“circle.pdf”、“triangle.pdf”和“square.pdf”。
  • 好的,一个问题,您想将svg文件转换为PDF并复制到其他文件夹吗?

标签: javascript node.js arrays fs node-pdfkit


【解决方案1】:
var fileName = String(inputFiles[i]),
    outputString = fileName.replace("input", "output"),
    outputStringComplete = outputString.replace("svg", "pdf"),
    stream = fs.createWriteStream(outputStringComplete);

【讨论】:

  • 虽然这段代码可能会为这个问题提供一个解决方案,但最好添加关于它为什么/如何工作的上下文。这可以帮助未来的用户参考并最终将这些知识应用到他们自己的代码中。解释代码时,您也可能会得到用户的积极反馈/赞成。
【解决方案2】:

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

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, 0);
    doc.pipe(stream);
    doc.end();
};

【讨论】:

    【解决方案3】:

    简答:像这样使用反引号

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-01-30
      • 2019-08-28
      • 2015-07-22
      • 2014-09-21
      • 2021-11-17
      • 2015-06-06
      • 2012-03-18
      相关资源
      最近更新 更多