如何使用node.js减小PDF的文件大小
#javascript #node #pdf

Woovi,我们允许我们的客户使用任意大小上传文档,而无需他们减少侧面的文件大小。

因此,在打开帐户时,我们需要对这些文档进行此减少。为此,我们使用GhostscriptNode.js创建了一个自动解决方案来处理压缩。

import { existsSync } from 'fs';
import fs from 'fs/promises';
import path from 'path';
import { promisify } from 'util';

const execPromise = promisify(exec);

const cwd = process.cwd();

const compressPdf = async (base64: string): Promise<string> => {
  try {
    const tempFolder = path.join(cwd, "temp");
    const hasTempFolder = existsSync(tempFolder);

    if (!hasTempFolder) {
      await fs.mkdir(tempFolder);
    }

    const originalFilePath = path.join(cwd, "temp", "original.pdf");
    const compressFilePath = path.join(cwd, "temp", "compress.pdf");

    await fs.writeFile(originalFilePath, base64, "base64");

    await execPromise(
      `gs -sDEVICE=pdfwrite -dCompatibilityLevel=1.4 -dPDFSETTINGS=/ebook -dNOPAUSE -dQUIET -dBATCH -sOutputFile="${compressFilePath}" ${originalFilePath}`
    );

    const compressFileBase64 = await fs.readFile(compressFilePath, "base64");

    await fs.unlink(originalFilePath);
    await fs.unlink(compressFilePath);

    return compressFileBase64;
  } catch (error) {
    throw error;
  }
};

上面的功能创建一个临时文件夹来存储已处理的文件并使用Ghostscript参数执行压缩。原始文件保存在此临时文件夹中,Ghostscript用于生成文件的压缩版本。然后,将压缩文件读取并转换为base64字符串。


Woovi是一家创业公司,使购物者能够按照自己的意愿付款。为了实现这一目标,Woovi为商人提供即时付款解决方案接受订单。

如果您想与我们合作,我们是hiring


Dan Dennis上的Unsplash

照片