首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ubuntu 18.10和docker上的ghostscript pdf/a转换问题

ubuntu 18.10和docker上的ghostscript pdf/a转换问题
EN

Stack Overflow用户
提问于 2019-04-26 22:41:13
回答 1查看 530关注 0票数 0

我使用以下命令使用Ghostscript将pdf1.3转换为pdf/a-1b:

代码语言:javascript
复制
gs -dPDFA -dBATCH -dNOPAUSE -dNOOUTERSAVE -sColorConversionStrategy=sRGB -sDEVICE=pdfwrite -sOutputFile=output.pdf PDFA_def.ps input.pdf

自定义PDFA_def.ps以使用srgb icc配置文件。除了这个变化,它是GS9.26附带的标准def文件。

现在到了棘手的部分: 1-在ubuntu 18.10,gs9.26上本地运行这个转换,它工作得很好,并且我得到了一个有效的pdf/a2-在docker容器中运行相同的命令(ubuntu 18.10。Gs9.26)也会创建一个pdf/a,这被认为是有效的

但是,在第一个场景中,我可以使用mustang (https://github.com/ZUGFeRD/mustangproject)处理该文件,以创建有效的电子发票。在第二种情况下(docker容器),这会失败,因为mustang认为该文件不是有效的pdf。

检查这两个pdf文件,我会期望它们是相同的,因为我在它上面运行相同的转换。然而,它们并不是。dockerfile中创建的PDF文件要小10个字节,并且在文件本身中显示了一些不同的元信息。

我怀疑一定有一些“隐藏的依赖项”,使得GS在我的主机系统上的行为与docker容器不同,但这感觉完全错误,我已经没有进一步调试的方法了。

有没有人知道,GS是否有更多的依赖项,可能会导致相同的命令产生不同的结果?

EN

回答 1

Stack Overflow用户

发布于 2019-04-27 02:52:57

答案是“可能”。这取决于Ghostscript是如何为初学者构建的。

我假设您使用的是一个包,而不是自己从源代码构建。在这种情况下,有许多依赖项,包括: FreeType、LibJPEG、JBIG2dec、LibTIFF、JPEG-XR、LCMS2、LibPNG、OpenJPEG、Expat、zlib、潜在的IJS、CUPS和X-Window,这取决于内置的设备。

这些库中的任何一个或全部可以是系统共享库,而不是使用Artifex提供的特定版本构建的。它们在两个系统上也可以是不同的版本。

也就是说,我认为这“不太可能”是你的问题。但是,如果不看PDF文件,我就不能告诉你为什么会有区别。元数据中的差异是意料之中的,因为它包含日期/时间戳。

我真的需要看到原始和两个输出PDF文件的例子才能进一步评论。

编辑

看看这些文件,它们是压缩的(毫不奇怪),如果输入流中有微小的差异,这显然会导致大小的差异。因此,第一个任务是解压缩文件。

这样做,我看到,基本上,他们之间没有区别。其中一个操作系统使用的时区比UTC晚7小时,另一个操作系统使用的是UTC,因此其中一个系统的时间戳为(例如)

2019-04-26T19:49:01Z

另一种是使用

2019-04-26T12:51:35-07:00

因此,不是Z(表示UTC),而是-07:00,这是额外的10个字节的来源。除此之外,唯一的ID是不同的(正如您想象的那样),流的长度值对于包含日期的流是不同的,startxref也是不同的,因为流的长度不同。

这两个文件都声称与PDF/A-1b兼容。简而言之,我看不出它们之间有什么真正的区别。由于您正在使用工具进一步处理文件,我建议您尝试从您的工作系统中获取PDF文件,并尝试在非工作系统上处理它,反之亦然,在我看来,问题可能是后期处理而不是PDF文件本身。也许您在两个系统上具有该工具的不同版本。

对于它可能的价值,可以诱导Ghostscript直接创建ZUGFeRD文件,请参阅this错误报告和this提交到存储库。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55869953

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档