添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

从linux命令行将PDF转换为GRAYSCALE格式供打印机使用

2 人关注

我试图将一个PDF文档转换为灰度,因为我需要打印机识别每一页是否含有颜色。

我在linux命令行上使用ghostscript。

  • 我将PDF转换为PS,以检索所有信息。

    pdftops -level3sep input.pdf

  • 它生成了一个.ps文件:input.ps

  • 我再次将这个PS文件转换为PDF,用ghostscript将其转换为灰阶。

    gs -o output.pdf -sDEVICE=pdfwrite -dColorConversionStrategy=/Gray -dProcessColorModel=/DeviceGray input.ps

  • 该命令生成了一个PDF文件。

    当我打开最后这个文件时,我看到所有的页面都是灰度的。测试彩色页面的命令说,这些页面也是灰阶的。

    gs -o - -sDEVICE=inkcov output.pdf
    

    对于每一页,它都向我返回CMYK值。

    Page 1
     0.00000  0.00000  0.00000  0.92538 CMYK OK
    Page 2
     0.00000  0.00000  0.00000  0.06737 CMYK OK
    Page 3
     0.00000  0.00000  0.00000  0.63738 CMYK OK
    Page 4
     0.00000  0.00000  0.00000  0.75010 CMYK OK
    

    and so on... CMYK: 0,0,0,[something] -> each page is in grayscale.

    但当我去打印文件时,打印机将每一页都识别为sRGB,并将它们算作彩色页,而不是灰度页。

    如果我用这个脚本检查每一页,它也会返回给我所有的页面都是sRGB。

    #!/bin/bash
    FILE=$1
    PAGES=$(pdfinfo ${FILE} | grep 'Pages:' | sed 's/Pages:\s*//')
    GRAYPAGES=""
    COLORPAGES=""
    DOUBLECOLORPAGES=""
    echo "Pages: $PAGES"
    while (test "$N" -le "$PAGES")
        COLORSPACE=$( identify -format "%[colorspace]" "$FILE[$((N-1))]" )
        echo "$N: $COLORSPACE"
        if [[ $COLORSPACE == "Gray" ]]
            GRAYPAGES="$GRAYPAGES $N"
            COLORPAGES="$COLORPAGES $N"
            # For double sided documents also list the page on the other side of the sheet:
            if [[ $((N%2)) -eq 1 ]]
                DOUBLECOLORPAGES="$DOUBLECOLORPAGES $N $((N+1))"
                #N=$((N+1))
                DOUBLECOLORPAGES="$DOUBLECOLORPAGES $((N-1)) $N"
        N=$((N+1))
    echo $DOUBLECOLORPAGES
    echo $COLORPAGES
    echo $GRAYPAGES
    

    The result is:

    andrea@release:~/fotocopia$ ./script.sh output.pdf
    Pages: 4
    1: sRGB
    2: sRGB
    3: sRGB
    4: sRGB
    1 2 1 2 3 4 3 4
    1 2 3 4
    

    那么问题来了:我怎样才能让打印机(而不是脚本)将页面识别为灰度?有没有一种方法可以通过linux命令行让我做到这一点?

    linux
    pdf
    printing
    command-line
    grayscale
    Release
    Release
    发布于 2015-02-04
    2 个回答
    Release
    Release
    发布于 2015-02-04
    已采纳
    0 人赞同

    I forgot to post the solution. I'm so sorry.

    该问题与GhostScript的转换无关,而是与用于打开PDF文件的软件有关。

    使用Chrome的嵌入式PDF阅读器,我遇到了这个问题,而使用原始的Adobe Reader插件(通过chrome扩展程序在chrome上重写),我能够正确地以灰度打印,并让打印机识别该格式。

    我希望这能帮助有同样问题的人

    KenS
    KenS
    发布于 2015-02-04
    0 人赞同

    首先,inkcov设备总是返回CMYK值,不管输入的颜色空间是什么。所以它返回K通道值的事实是正确的。