linux - 在 PDF 中嵌入 ICC 颜色配置文件

标签 linux pdf ghostscript color-profile color-management

我正在生成一个 PDF,其中所有图形都在 sRGB 颜色空间的\DeviceRGB 中绘制。我想使用 ICC 配置文件将 PDF 转换为不同的颜色配置文件并嵌入 ICC 配置文件,但我找不到执行此操作的好工具。

我已经尝试过 ImageMagick,但是光栅化 PDF 是不受欢迎的,我已经尝试过使用 Ghostscript。但是虽然这会转换颜色,但它不会嵌入 ICC 配置文件。

是否有任何适用于 Linux 的工具或库(最好是 Java 或 Scala)可以满足我的需求?

我尝试过的 Ghostscript 命令是:

gs -o cmyk.pdf -sColorConversionStrategy=CMYK -sDEVICE=pdfwrite \
   -dOverrideICC=true -sOutputICCProfile=CoatedFOGRA27.icc \
   -dRenderIntent=3 in.pdf

gs -dSAFER -dBATCH -dNOPAUSE -sDEVICE=pdfwrite -ColorConversionStrategy=CMYK \
   -dProcessColorModel=/DeviceCMYK -sOutputICCProfile=CoatedFOGRA27.icc \
   -sOutputFile=cmyk.pdf in.pdf 

以及上述的几个变体。我已经尝试过 Ghostscript 版本 9.10 和 9.16。

最佳答案

使用 Ghostscript v9.16 或更高版本:

阅读其有关 ICC 颜色配置文件支持的文档,可在此处获取:

这里有一个可能的命令来转换颜色空间并嵌入 ICC 配置文件:

gs -o cmyk-doc.pdf      \
   -sDEVICE=pdfwrite    \
   -dOverrideICC=true   \
   -sDefaultCMYKProfile=/path/to/mycmykprofile.icc \
   -sOutputICCProfile=/path/to/mydeviceprofile.icc \
   -dRenderIntent=3     \
   -dDeviceGrayToK=true \
    input-doc.pdf

(-dRenderIntent :可能的参数是 0(感知)、1(色度)、2 (饱和度)和 3(绝对色度)。)

注意事项

如果您在屏幕上(或打印时在纸上)查看使用上述命令转换的 PDF 文件并使用:

  • 未校准的显示器/屏幕;
  • 未校准的打印设备;
  • 非校准室内照明;或
  • 无法处理嵌入式 ICC 配置文件的 PDF 阅读器

你可能会失望。使用与输出配置文件预期的不匹配的错误 ICC 配置文件或纸张类型也会导致问题。

关于linux - 在 PDF 中嵌入 ICC 颜色配置文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31591554/

相关文章:

c - 尽管 lowfree 大小约为 523MB,kmalloc 仍失败

linux - 如果两个线程同时调用 fork() 会发生什么

c# - .NET 库打印 PDF 文件

pdf - 有什么加速 GhostScript 的技巧吗?

pdf - Ghostscript:如何决定将多页 PDF 转换为多个 TIFF 的输出分辨率

linux - 重新启动后,Hhvm 无法读取任何有意义的 pid 的 pid 文件/var/run/hhvm/pid

c - Linux block 设备驱动程序请求排序 - RaW?

c# - iTextSharp GetFieldPositions 到 SetSimpleColumn

php - 未捕获的异常 'Exception',消息为“FPDF错误PHP”

linux - 在 Linux 中使用 CUPS 的 GoDEX 打印机中的条码太宽