如何使用ghostscript命令压缩非当前目录的PDF并输出到指定目录?
GhostScript跨目录压缩PDF解决方案
跨目录读取输入PDF失败处理
- 先检查目录权限:运行Node服务的用户需要对
/books目录有读取权限,对目标输出目录有写入权限,可通过ls -l /<目录路径>命令查看权限配置。 - 优先使用绝对路径:避免相对路径的工作目录歧义,Linux/macOS下绝对路径以
/开头,Windows下注意盘符和反斜杠转义,示例路径C:\\books\\input.pdf。 - 快速排查错误:去掉命令中的
-dQUIET参数,运行后查看GhostScript输出的具体错误信息,可快速定位是路径不存在、权限不足还是文件格式问题。
跨目录输出压缩PDF方法
直接在-sOutputFile参数中指定目标输出的绝对路径即可,原生命令示例如下:
ghostscript -sDEVICE=pdfwrite -dCompatibilityLevel=1.4 -dPDFSETTINGS=/printer -dNOPAUSE -dQUIET -dBATCH -sOutputFile=/compressed/output.pdf /books/input.pdf
Node中ghostscript4js调用示例
直接传入输入输出的绝对路径构造参数即可,无需将PDF存放在server.js同级目录:
const gs = require('ghostscript4js'); // 替换为你实际的输入输出绝对路径 const inputPdf = '/books/待压缩文件.pdf'; const outputPdf = '/compressed/压缩后文件.pdf'; const gsArgs = [ '-sDEVICE=pdfwrite', '-dCompatibilityLevel=1.4', '-dPDFSETTINGS=/printer', '-dNOPAUSE', '-dQUIET', '-dBATCH', `-sOutputFile=${outputPdf}`, inputPdf ]; gs.execute(gsArgs, (err) => { if (err) { console.log('压缩出错:', err); return; } console.log('压缩完成,输出路径:', outputPdf); });
内容的提问来源于stack exchange,提问作者Iftekhar Riyad
相关产品推荐
相关产品推荐

