使用代笔打印PDF时如何去除背景灰色?



我的任务是使用Windows OS和Python打印PDF文件。因此,当我通过HP打印机打印时,我得到了该PDF的精确副本,但背景为灰色。

我使用PyFPDF库生成PDF。它工作正常。这是 PDF 文件的输出。如果我通过Adobe Acrobat Reader打印,则没有灰色背景。但是当我使用ghostscript打印时,它带有灰色背景。

import subprocess
import win32print
generated_pdf_name = 'some_pdf_name.pdf'
current_printer = win32print.GetDefaultPrinter()
query = f'{os.path.join("GHOSTSCRIPT", "bin", "gswin64c.exe")} -dPrinted -dBATCH -dNOPAUSE -dFitPage -q -dNumCopies=1 -dNoCancel -sDEVICE=mswinpr2 -dDeviceGrayToK=false -sOutputFile="%printer%{current_printer}" "{os.path.join(generated_pdf_name)}"'
subprocess.call(query, shell=True)

在这里我使用了MS Windows打印机,所以-sDEVICE=mswinpr2.我也尝试过gsprint.但它没有在我的 PDF 文件中显示图像。这就是我搬进ghostscript.它打印了此PDF文件的所有内容,但唯一的问题是灰色背景。

看看灰色彩色打印输出,我需要没有灰色背景的纯输出。我错过了以上什么吗?

看起来您的"PDF 文件"只不过是扫描图像,但由于您没有提供实际的 PDF 文件,因此无法分辨。

我的猜测(也就是说,可以在没有看到原始PDF的情况下(是整个内容都是图像,而"白色背景"并不是真正的白色,而是"近乎白色"。

mswinpr2 设备的工作原理是将 PDF 文件呈现为位图,然后将该位图发送到打印机(Acrobat Reader 的工作方式完全不同(。我猜想将"不太白"渲染为 RGB 会使它更不白,这会导致背景变得稍微更灰,以至于在打印时它明显是灰色的。

基本上有两个选项;您可以修复原始PDF文件,使背景真正为白色,或者您可以使用不同的ICC配置文件进行渲染,这将导致为背景渲染不同的颜色。

使用不同的 ICC 配置文件在 Ghostscript 文档中进行了介绍。

最新更新