通过管道传递参数
问题描述:
场景:我通过几个.md
文件迭代,首先在HTML
,然后PDF
转换它们。 我需要我的管道(pdf
之一)上的文件路径,但我不知道该怎么做。通过管道传递参数
编辑:
- 我不需要,因为它们是通过管道输送到重命名文件。
- 我想获得
pdf
管道上的处理文件的文件路径, ,因为我想在管道中使用它(如代码所示)。
var pdf= require('gulp-html-pdf');
return gulp.src(path.join(config.ROOT, '**/docs/**/*.md'))
// doing stuff...
.pipe(gulp.dest(function(file) {
return file.base;
}))
// Converting it to PDF
.pipe(
// i need the file path here, in order to use it for the PDF options
pdf({
"format": "A4",
"border": {
"top": "0cm", // default is 0, units: mm, cm, in, px
"right": "2.5cm",
"bottom": "0cm",
"left": "2.5cm"
},
"header": {
"height": "3cm",
"contents": '<header style="text-align: center;">' + FILE PATH + '</header>'
},
"footer": {
"height": "3cm",
"contents": '<footer style="height:3cm; text-align:right; padding-top:1cm">Page: {{page}}</span>/<span>{{pages}}</footer>'
},
"phantomArgs": []
}))
// Saving PDF
.pipe(gulp.dest(function(file) {
var fileName = file.path.substr(file.path.lastIndexOf('docs\\') + 5);
console.log("...creating ", fileName);
return file.base;
}));
答
从你的代码,它看起来像你正试图重命名这些文件,因为它们是由HTML通过管道输送到PDF格式。
如果是这种情况,那么gulp-rename包几乎可以肯定你在做什么。
编辑
吞气,HTML,PDF格式不支持的文件通过文件的选项,因此无法直接使用它。
您可以使用gulp-each和html-pdf软件包在gulp-html-pdf中引用您自己的解决方案。像这样的东西应该有希望让你在那里:
var gulp = require('gulp')
var each = require('gulp-each')
var pdf = require('html-pdf')
var rename = require('gulp-rename')
gulp.task('toPDF', function() {
return gulp.src('*.html')
.pipe(each(function(content, file, callback) {
// path name is:
var path = file.path
// create pdf with options and convert back to buffer
pdf.create(content, {/* file by file options*/})
.toBuffer(function (err,buffer){
if(err){
//pass error back
callback(err, null)
}
// return the buffer
callback(null, buffer);
})
}))
// change file extention
.pipe(rename(function (path) { path.extname = '.pdf'}))
.pipe(gulp.dest('output'));
});
你试图得到什么文件名的一部分?我假设你正试图返回它的一部分来为该文件提供一个目录 - 这是gulp.dest中的一个函数。看看'路径'插件https://nodejs.org/api/path.html#path_path_basename_path_ext它使这些事情更容易处理。例如,path.basename(fileName,'.pdf')可能是你正在寻找的东西,但我不确定你想要完成什么,多一点信息会有帮助。 – Mark
path.basename(file.path,' .pdf')是正确的 - 你不需要substr的东西,你需要var path = require('path')才能正常工作 – Mark
嘿@Mark!我需要它提供pdf的文件路径方法,它将被gulp-html-pdf模块用作生成的pdf的标题页。无论如何,对于substr提示;) – Dyd666