Ghostscript /crop box在Linux中无法正确打印

Posted

技术标签:

【中文标题】Ghostscript /crop box在Linux中无法正确打印【英文标题】:Ghoscript /cropbox not printing correctly in linux 【发布时间】:2013-04-26 04:54:25 【问题描述】:

我正在使用 usps 中的国内运输标签 api 来生成 pdf 格式的国内运输标签。我设法裁剪了 pdf 文件的顶部,这是 usps 所需的标签,而忽略了底部,这是运输中不需要的收据。

我使用 Ghostscript /Cropbox 来裁剪我只想要成功的部分,但是当我尝试在 linux cups 中打印裁剪后的 pdf 文件时,我会打印整个未裁剪的 pdf,而不是裁剪后的 pdf 文件。为什么它仍然打印整个文件而不是只打印裁剪的部分?。

这是我用来裁剪 usps 运输标签的脚本。

gs -o cropped.pdf -sDEVICE=pdfwrite -c "[/CropBox [50.4 460.5 484.4 750.5] /PAGES pdfmark" -f uncropped.pdf

然后将其方向更改为纵向,我使用 pdftk

pdftk cropped.pdf cat 1L output cropped_portrait.pdf

要在 linux cups 中打印它,我使用的是命令。

lp cropped_portrait.pdf

但是当我打印它时,它打印的是 uncropped.pdf 文件而不是cropped_portrait.pdf。 为什么这样做?我什至删除了 uncropped.pdf 并尝试再次打印,但它仍然打印 uncropped.pdf。

这是未裁剪和裁剪的 USPS 运输标签的两个文件。

未裁剪的 PDF 文件

裁剪的 PDF 文件

希望你能帮我解决这个问题,

谢谢

【问题讨论】:

间接回答,但 USPS 有一个框,您可以检查告诉它不要打印收据部分。 【参考方案1】:

大概是缩小后的PDF文件显示正确,所以Ghostscript生成PDF文件没有问题。

至于为什么打印过程不尊重 CropBox,实际上没有理由这样做。 PDF 中有很多框,打印应用程序没有真正的方法知道您要使用哪个框。因此,打印应用程序通常默认使用您未更改的 MediaBox(请注意,更改 CropBox 不会更改 PDF 文件的内容,只会更改显示的内容)。

现在,如果您的 CUPS 链正在使用 Ghostscript 渲染 PDF 文件,或者将其转换为 PostScript,则可以解决此问题,您需要在命令行中添加 -dUseCropBox。但是我不是 CUPS 专家,所以我不能告诉你如何去做。如果 CUPS 不使用 Ghostscript,那么它可能仍然可以指示正在执行转换的任何对象使用 CropBox,但您必须找出涉及的应用程序并针对该应用程序适当地更改命令。

【讨论】:

是的,谢谢你,我通过在裁剪 pdf 文件后添加 -dUseCropBox 让它工作了。当您在 linux cups 中打印时,使用cropbox 而不使用 -dUseCropBox 似乎根本不起作用。另一种方法是将 pdf 文件转换为 png 并在 linux cups 中打印。

以上是关于Ghostscript /crop box在Linux中无法正确打印的主要内容,如果未能解决你的问题,请参考以下文章

ValueError:在使用 tf.image.crop_to_bounding_box 时,张量转换为具有 dtype float32 的张量请求 dtype int32

GhostScript PS 到 PDF 的转换 - 裁剪了一些部分

将 python 行翻译成 c++ opencv

CV2和PIL按box信息实现图像裁剪

Pillow学习笔记一——入门

VS Code突出显示正确的Flex Box语法错误