Javascript 通过管道传递参数
场景:我正在迭代几个Javascript 通过管道传递参数,javascript,gulp,html-pdf,Javascript,Gulp,Html Pdf,场景:我正在迭代几个.md文件,首先在HTML中转换它们,然后在PDF中转换它们。 我需要一个管道上的文件路径(即pdfone),但我不知道怎么做 编辑: 我不需要重命名这些文件,因为它们是通过管道传输的 我想获取pdf管道上已处理文件的文件路径, 因为我想在管道中使用它(如代码所示) var pdf=require('gulp-html-pdf'); 返回gulp.src(path.join(config.ROOT,***/docs/***.md')) //做事情。。。 .pipe(gulp.
.md
文件,首先在HTML
中转换它们,然后在PDF
中转换它们。
我需要一个管道上的文件路径(即pdf
one),但我不知道怎么做
编辑:
pdf
管道上已处理文件的文件路径,
因为我想在管道中使用它(如代码所示)var pdf=require('gulp-html-pdf');
返回gulp.src(path.join(config.ROOT,***/docs/***.md'))
//做事情。。。
.pipe(gulp.dest(函数(文件)){
返回file.base;
}))
//将其转换为PDF
.烟斗(
//我需要这里的文件路径,以便将其用于PDF选项
pdf({
“格式”:“A4”,
“边界”:{
“顶部”:“0cm”,//默认值为0,单位:mm、cm、in、px
“右”:“2.5cm”,
“底部”:“0厘米”,
“左”:“2.5厘米”
},
“标题”:{
“高度”:“3cm”,
“内容”:“”+文件路径+“”
},
“页脚”:{
“高度”:“3cm”,
“目录”:“页面:{{Page}/{{Page}”
},
“幻影图像”:[]
}))
//保存PDF
.pipe(gulp.dest(函数(文件)){
var fileName=file.path.substr(file.path.lastIndexOf('docs\\')+5);
log(“…创建”,文件名);
返回file.base;
}));
根据您的代码,您似乎正在尝试重命名文件,因为这些文件通过管道从HTML传输到pdf
如果是这样的话,那么几乎可以肯定的是,这个包裹就是你想要的
编辑
gulp 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中的函数所做的。看看“路径”插件,它使这些东西更容易使用。例如,path.basename(文件名,'.pdf'可能是您正在寻找的,但我不确定您到底想要实现什么。多了解一点信息会有帮助。path.basename(文件名,'.pdf')要正确-您不需要substr内容。您需要var path=require('path'))为了让它工作。嘿@Mark!我需要的是提供pdf方法的文件路径,gulp html pdf模块将使用该路径作为生成的pdf的标题页。无论如何,感谢substr提示;)嗨!不,不需要重命名文件。我只想获得处理过的文件的路径,并将其输入到
pdf
方法;)抱歉,看到您编辑的答案太晚了。我试试看,谢谢!太好了@Dyd666。我注意到在gulp rename函数中不需要返回。我将编辑我的答案以澄清。
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'));
});