2017-10-19 127 views
0

場景:我通過幾個.md文件迭代,首先在HTML,然後PDF轉換它們。 我需要我的管道(pdf之一)上的文件路徑,但我不知道該怎麼做。通過管道傳遞參數

編輯:

  1. 我不需要,因爲它們是通過管道輸送到重命名文件。
  2. 我想獲得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; 
     })); 
+0

你試圖得到什麼文件名的一部分?我假設你正試圖返回它的一部分來爲該文件提供一個目錄 - 這是gulp.dest中的一個函數。看看'路徑'插件https://nodejs.org/api/path.html#path_path_basename_path_ext它使這些事情更容易處理。例如,path.basename(fileName,'.pdf')可能是你正在尋找的東西,但我不確定你想要完成什麼,多一點信息會有幫助。 – Mark

+0

path.basename(file.path,' .pdf')是正確的 - 你不需要substr的東西,你需要var path = require('path')才能正常工作 – Mark

+0

嘿@Mark!我需要它提供pdf的文件路徑方法,它將被gulp-html-pdf模塊用作生成的pdf的標題頁。無論如何,對於substr提示;) – Dyd666

回答

1

從你的代碼,它看起來像你正試圖重命名這些文件,因爲它們是由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')); 
}); 
+1

嗨!不,不需要重命名文件。我只想得到處理過的文件的路徑,並將其輸入到'pdf'方法中;) – Dyd666

+0

對不起,看到你編輯的答案太晚了。我會試試看,謝謝! – Dyd666

+0

像魅力一樣工作,謝謝! – Dyd666