ConvertDjvu.js 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839
  1. const fs = require('fs-extra');
  2. const path = require('path');
  3. const ConvertPdf = require('./ConvertPdf');
  4. class ConvertRtf extends ConvertPdf {
  5. check(data, opts) {
  6. const {inputFiles} = opts;
  7. return this.config.useExternalBookConverter &&
  8. inputFiles.sourceFileType && inputFiles.sourceFileType.ext == 'djvu';
  9. }
  10. async run(data, opts) {
  11. if (!this.check(data, opts))
  12. return false;
  13. await this.checkExternalConverterPresent();
  14. const {inputFiles, callback, abort} = opts;
  15. const outFile = `${inputFiles.filesDir}/${path.basename(inputFiles.sourceFile)}`;
  16. const pdfFile = `${outFile}.pdf`;
  17. let perc = 0;
  18. await this.execConverter(this.ddjvuPath, ['-format=pdf', '-quality=85', '-verbose', inputFiles.sourceFile, pdfFile], () => {
  19. perc = (perc < 100 ? perc + 1 : 40);
  20. callback(perc);
  21. }, abort);
  22. const pdfFileSize = (await fs.stat(pdfFile)).size;
  23. if (pdfFileSize > 2*this.config.maxUploadFileSize) {
  24. throw new Error(`Файл для конвертирования слишком большой|FORLOG| ${pdfFileSize} > ${2*this.config.maxUploadFileSize}`);
  25. }
  26. return await super.run(null, Object.assign({}, opts, {pdfFile, skipCheck: true}));
  27. }
  28. }
  29. module.exports = ConvertRtf;