我在linux下看pdf格式的文件,是否需要下载Adobe Reader?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了我在linux下看pdf格式的文件,是否需要下载Adobe Reader?相关的知识,希望对你有一定的参考价值。

具体应该怎么做呢?

foxit for linux不是开放源码的,所以不能用在非x86架构上(比如我的本本,内牛满面)

我是用
xpdf或evince
debian和ubuntu的话,直接在软件仓库里找就可以。redhat系的发行版也有这两个软件,但是因为我没用过,不好说。其他的发行版,国内用的人不太多,再者如果你能用到其他的发行版估计也不会来这问问题了,早去google了。
evince是gnome默认安装的,kde也有默认的pdf阅读器,不过忘了叫什么了。

另外,阅读中文pdf的时候可能出现乱码,需要安装cjk字符集支持
参考技术A linux用Foxit Reader

这个支持linux

比较专业
参考技术B 要吧,我也下过pdf,要Adobe Reader才能看

从 linux 命令行将 PDF 转换为打印机的灰度格式

【中文标题】从 linux 命令行将 PDF 转换为打印机的灰度格式【英文标题】:Convert PDF to GRAYSCALE format for printer from linux command line 【发布时间】:2015-02-04 13:00:49 【问题描述】:

我正在尝试将 PDF 文档转换为灰度,因为我需要打印机识别是否包含颜色的每一页。

我正在使用来自 linux 命令行的 ghostscript。

    我将 PDF 转换为 PS 以 grep 所有信息:

    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

等等... CMYK: 0,0,0,[something] -> 每个页面都是灰度的。

但是当我去打印文档时,打印机会将每一页识别为 sRGB,并将它们计为彩色页面,而不是灰度页面。

如果我用这个脚本检查每个页面,它会返回所有页面也是 sRGB:

#!/bin/bash

FILE=$1
PAGES=$(pdfinfo $FILE | grep 'Pages:' | sed 's/Pages:\s*//')

GRAYPAGES=""
COLORPAGES=""
DOUBLECOLORPAGES=""

echo "Pages: $PAGES"
N=1
while (test "$N" -le "$PAGES")
do
    COLORSPACE=$( identify -format "%[colorspace]" "$FILE[$((N-1))]" )
    echo "$N: $COLORSPACE"
    if [[ $COLORSPACE == "Gray" ]]
    then
        GRAYPAGES="$GRAYPAGES $N"
    else
        COLORPAGES="$COLORPAGES $N"
        # For double sided documents also list the page on the other side of the sheet:
        if [[ $((N%2)) -eq 1 ]]
        then
            DOUBLECOLORPAGES="$DOUBLECOLORPAGES $N $((N+1))"
            #N=$((N+1))
        else
            DOUBLECOLORPAGES="$DOUBLECOLORPAGES $((N-1)) $N"
        fi
    fi
    N=$((N+1))
done

echo $DOUBLECOLORPAGES
echo $COLORPAGES
echo $GRAYPAGES

结果是:

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命令行的方法可以让我这样做?

提前致谢

【问题讨论】:

【参考方案1】:

我忘记发布解决方案了。真的很抱歉。

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

使用 Chrome 嵌入式 PDF 阅读器时我遇到了这个问题,而使用原始 Adob​​e Reader 插件(通过 chrome 扩展在 chrome 上覆盖)我能够以灰度正确打印并让打印机识别格式。

希望对遇到同样问题的人有所帮助

【讨论】:

【参考方案2】:

首先,inkcov 设备总是返回 CMYK 值,无论输入的颜色空间如何。所以它返回 K 通道值的事实是正确的。

几乎不可能在没有看到 PDF 文件的情况下猜测为什么您的打印机或脚本认为页面是 sRGB。

您不应该对 PDF 文件进行双重转换,那样更容易出现问题!你没有说你用 grep 提取什么样的信息,但很可能它可以直接从 PDF 文件中获得。如果您想要灰度 PDF,只需将原始 PDF 转换为新 PDF。

你也没有说你使用什么版本的 Ghostscript 来做这个转换,我似乎记得 9.15 中有一个错误可能有这个效果。您可能需要考虑查看当前代码。

【讨论】:

我的 GhostScript 版本是 9.10。即使我直接转换文件,而不使用 ps 文件步骤,同样的问题仍然存在。 旧版本的 GS 无法使用您提供的命令行正确地将颜色重新映射到您想要的颜色空间。至少您必须添加 -dUseCIEColor。我强烈建议升级。 我将ghostscript升级到了9.14版本,但似乎也有同样的问题。 -dUseCIEColor 也不行。有什么想法吗? 当前发布的版本是9.15,9.16将在几周内发布。我建议您使用当前代码,因为我相信它可以工作(当然,您必须从 git 存储库中克隆代码并自己构建它)。如果没有看到您的输入文件,我不可能给出更好的建议。如果您认为输出 PDF 文件确实不是以灰度创建的,那么您可以随时打开错误报告。不过,您仍然需要提供该文件。

以上是关于我在linux下看pdf格式的文件,是否需要下载Adobe Reader?的主要内容,如果未能解决你的问题,请参考以下文章

PDF文件如何定位,以备再次打开时能接着往下看?

Android 中读取pdf格式文件 (大神们,你们怎么看……)

如何将Win格式文件转Linux格式

如何把 Markdown 文件转化为 PDF

在linux环境下,java怎么实现从word格式转换为pdf格式

如何在PDF上看电子书