Gulp - Zip содержимое подпапок & amp; назвать эти архивы в честь них

Нет, это невозможно для iTextSharp. Лучшим подходом будет использование Word Object, чтобы открыть документ, выполнить mailmerge, а затем сохранить эти документы в формате HTML. Теперь вы можете использовать iTextSharp для анализа html и создания PDF.

0
задан Petr Chutny 18 January 2019 в 02:56
поделиться

2 ответа

Мой коллега предложил мне это решение, которое работает, так что теперь я использую его.

const gulp = require('gulp');
const zip = require('gulp-zip');

var fs = require('fs');
var path = require('path');

// Functions

function getFolders(dir) {
    return fs.readdirSync(dir)
      .filter(function(file) {
        return fs.statSync(path.join(dir, file)).isDirectory();
      });
}

// Tasks

// Zip each folder in /lessons and place the archive in the /lessons root
gulp.task('zip-lessons', () => {
    let folders = getFolders('lessons/');
    console.log(folders)
    var tasks = folders.map(function(folder) {
      gulp.src(`lessons/${folder}/**`)
        .pipe(zip(`${folder}.zip`))
        .pipe(gulp.dest('lessons'))
    })
});
0
ответ дан Petr Chutny 18 January 2019 в 02:56
поделиться

Вы можете использовать модуль узла path, чтобы получить имя подкаталога следующим образом:

const path = require('path');
const dirName = path.parse('./folderA/folderB').base // -> 'folderB'

И передать dirName в zip():

const { task, src, dest } = require('gulp');
const path = require('path');
const zip = require('gulp-zip');
const glob = require('glob');

const subDirs = glob.sync('./lessons/*');

task('zipLessions', (done) => {
  subDirs.forEach(subDir => {
    const dirName = path.parse(subDir).base;
    src(subDir + '/*')
      .pipe(zip(`${dirName}.zip`))
      .pipe(dest('./lessons'))
  })
  done()
})
0
ответ дан Mark 18 January 2019 в 02:56
поделиться