使用 Ghostscript 8.70 降级 PDF 版本:pdfmark 目标页面比最后一页多出 34 个点

使用 Ghostscript 8.70 降级 PDF 版本:pdfmark 目标页面比最后一页多出 34 个点

背景

  • 我的要求是在 LAMP 堆栈(PHP 7.3)中按需为 PDF 文档添加水印的功能。
  • 该 Web 应用程序将一组 PDF 文档加载到 MySQL 表中。这些文档最初是 PDF 文件,包含各种版本的 PDF。
  • 我的水印解决方案基于本文使用FPDF
  • 我遇到了这个问题邮政
  • 因此我将 Ghostscript 添加到流程中,将所有文档降级为 PDF 1.4。

Ghostscript 命令

 gs -sDEVICE=pdfwrite -dCompatibilityLevel=1.4 -dNOPAUSE -dQUIET -dBATCH -sOutputFile=/tmp/63d319f2d1018.pdf /tmp/63d319f2cfb51.pdf

一个问题文档的错误

  • 对于大多数文档来说,流程正在运行并添加水印。
  • 但是,有一份文档(到目前为止)出现了这个错误(抱歉格式不对):

错误:/rangecheck in --makepattern-- 操作数堆栈:--dict:11/20(L)-- --dict:14/23(L)-- --dict:14/23(L)-- --nostringval-- false --dict:14/15(L)-- --nostringval-- 执行堆栈:%interp_exit .runexec2 --nostringval-- --nostringval-- --nostringval-- 2 %stopped_push --nostringval-- --nostringval-- --nostringval-- false 1 %stopped_push 1862 1 3 %oparray_pop 1861 1 3 %oparray_pop 1845 1 3 %oparray_pop --nostringval-- --nostringval-- 24 1 34 --nostringval-- %for_pos_int_continue --nostringval-- --nostringval-- false 1 %stopped_push --nostringval-- --nostringval-- --nostringval-- %array_continue --nostringval-- false 1 %stopped_push --nostringval-- %loop_continue --nostringval-- --nostringval-- --nostringval-- --nostringval-- 1811 4 10 %oparray_pop --nostringval-- 字典堆栈: --dict:1150/1684(ro)(G)-- --dict:1/20(G)-- --dict:76/200(L)-- --dict:76/200(L)-- --dict:106/127(ro)(G)-- --dict:286/300(ro)(G)-- --dict:22/25(L)-- --dict:4/6(L)-- --dict:25/40(L)-- --dict:3/5(L)-- 当前分配模式为本地 最后一个操作系统错误:2 GPL Ghostscript 8.70:不可恢复的错误,退出代码 1 GPL Ghostscript 8.70:错误:pdfmark 目标页面 34 指向最后一页 22 之外。

有没有更好的 Ghostscript 命令?或者更好的方法?

相关内容