GNU/Linux >> Znalost Linux >  >> Linux

Převod PDF do CMYK (s rozpoznáním identifikace CMYK)

Dobře, tady je alespoň něco...

Původně jsem to potřeboval, abych se ujistil, že moje soubory PDF jsou v CMYK a mají text jako „obyčejný černý“ C:0, M:0, Y:0, K:100 – protože jsem měl problémy s tiskárnami dříve, kde si stěžovali na moje Latexové PDF obsahující "bohatou černou" pro text (který tak stojí více). A obvykle volím identify protože se zdá být jediným nástrojem, který dokáže analyzovat soubory PDF a barvy (a je také relativně snadno zapamatovatelný).

Přečetl jsem si technický tip:Použití Ghostscriptu k převodu a kombinování souborů | Linux Journal; kde se doporučuje použít tiffsep zařízení gs získat separace. A to pro mě plní stejnou roli jako identify; Mohu jen:

$ gs -sDEVICE=tiffsep -dNOPAUSE -dBATCH -dSAFER -r150x150 -sOutputFile=p%08d.tif test.pdf 

$ ls p*
p00000001.Black.tif  p00000001.Magenta.tif  p00000001.Yellow.tif  p00000001.Cyan.tif   p00000001.tif

$ eog p00000001.tif

... a pak mohu jen 'iterovat' přes separační obrázky pomocí levé/pravé šipky - a hned je zřejmé, jestli je to 'obyčejná černá' nebo 'sytá černá'.

Takže to ukazuje, že bez ohledu na to, co identify ukazuje, test.pdf od pdflatex ve skutečnosti má jako barvu textu 'obyčejnou černou', jak se předpokládá (ostatní separace jsou prázdné) - nicméně uděláte něco jako:

# do a conversion of original PDF
$ gs -dPDFA -dBATCH -dNOPAUSE -dNOOUTERSAVE -dUseCIEColor -sProcessColorModel=DeviceCMYK -sDEVICE=pdfwrite -sOutputFile=out_pdfa.pdf test.pdf

# do a separation on the converted pdf
$ gs -sDEVICE=tiffsep -dNOPAUSE -dBATCH -dSAFER -r150x150 \
  -dFirstPage=1 -dLastPage=1 -sOutputFile=p%08d.tif out_pdfa.pdf

# view
$ eog p00000001.tif

... odhalí, že konkrétní out_pdfa.pdf ve skutečnosti má „sytou černou“ – tj. inkoust pro text přesahuje všechny čtyři výtažky! (identify také zobrazuje tento jako RGB).

Takže doufám, že toto gs/tiffsep technika je spolehlivější než identify :)

Poznámka:Používám Ubuntu Natty, který dodává GhostScript 9.01 – ale ten má ošklivou chybu s tiffsep :Chyba 691857 – tiffsep ve verzi 9 havaruje (chybí lab.icc). To bylo opraveno pro 9.02 - a 9.02 bylo vydáno jako ghostscript v oneiric. Chcete-li použít 9.02 pod Natty, sledoval jsem, jak aktualizovat jeden balíček pomocí apt-get? - Fóra Ubuntu:

sudo nano /etc/apt/sources.list # add deb http://archive.ubuntu.com/ubuntu/ oneiric main restricted
sudo apt-get update
sudo apt-get install ghostscript # this upgrades only gs and dependencies 
sudo nano /etc/apt/sources.list  # remove/comment oneiric repo
sudo apt-get update && sudo apt-get upgrade # should be back to normal here

Všimněte si, že s chybnou verzí 9.01 by i tento příkaz selhal:

$ GS_LIB=/usr/share/ghostscript/9.01/iccprofiles/ gs -sICCProfilesDir=/usr/share/ghostscript/9.01/iccprofiles/ -sDEVICE=tiffsep -dNOPAUSE -dBATCH -dSAFER -sOutputFile=p%08d.tif out_pdfa.pdf

...
sfopen: gs_parse_file_name failed.
sfopen: gs_parse_file_name failed.
... gsicc_open_search(): Could not find lab.icc ...

.. a u 9.02 není potřeba zadávat sICCProfilesDir explicitně.


sdaau, příkaz, který jste použili při pokusu o převod PDF do CMYK, nebyl správný. Zkuste místo toho toto:

 gs \
   -o test-cmyk.pdf \
   -sDEVICE=pdfwrite \
   -sProcessColorModel=DeviceCMYK \
   -sColorConversionStrategy=CMYK \
   -sColorConversionStrategyForImages=CMYK \
    test.pdf 

Aktualizovat

Pokud převod barev nefunguje podle vašich představ a zobrazí se zpráva jako „Nelze převést barevný prostor na šedou, strategie se vrací na LeaveColorUnchanged“ pak...

  1. váš Ghostscript je pravděpodobně novější vydání z řady verzí 9.x a
  2. váš zdrojový soubor PDF pravděpodobně používá vložený profil barev ICC

V tomto případě přidejte -dOverrideICC na příkazový řádek a zjistěte, zda změní výsledek podle potřeby.

Aktualizace 2

Chcete-li zabránit tomu, aby se na obrázcích objevovaly artefakty JPEG (kde předtím žádné nebyly), přidejte:

-dEncodeColorImages=false

do příkazového řádku.

(To platí pro téměř všechny GS PDF->PDF zpracování nejen pro tento případ. Protože GS ve výchozím nastavení vytváří zcela nový soubor s nově zkonstruovanými objekty a novou strukturou souborů, když je požádán o vytvoření výstupu PDF – nepoužije pouze předchozí objekty jako „hloupější“ procesor PDF, jako je pdftk dělá {pdftk má však další výhody, nepochopte mé tvrzení špatně!} . GS standardně používá kompresi JPEG – podívejte se na aktuální dokumentaci Ps2pdf a vyhledejte "ColorImageFilter" se dozvíte více podrobností...)


Mám nesouvisející problém, ale momentálně také bojuji s CMYK PDF.

Napsal jsem tento malý skript zde (jmenuje se pdf2pdfx):

#!/bin/bash

gs \
-dPDFX \
-dBATCH \
-dNOPAUSE \
-dNOOUTERSAVE \
-sDEVICE=pdfwrite \
-sColorConversionStrategy=CMYK \
-dProcessColorModel=/DeviceCMYK \
-dPDFSETTINGS=/prepress \
-sOutputFile="${1%%.pdf}_X-3.pdf" \
PDFX_def.ps \
"$1"

a můj PDFX_def.ps obsahuje následující (odstranil jsem ICC profil a definoval FOGRA39, to by mělo být v pořádku):

%!
% $Id$
% This is a sample prefix file for creating a PDF/X-3 document.
% Feel free to modify entries marked with "Customize".

% This assumes an ICC profile to reside in the file (ISO Coated sb.icc),
% unless the user modifies the corresponding line below.

systemdict /ProcessColorModel known {
  systemdict /ProcessColorModel get dup /DeviceGray ne exch /DeviceCMYK ne and
} {
  true
} ifelse
{ (ERROR: ProcessColorModel must be /DeviceGray or DeviceCMYK.)=
  /ProcessColorModel cvx /rangecheck signalerror
} if

% Define entries to the document Info dictionary :

% /ICCProfile (/usr/share/color/icc/ISOcoated_v2_300_eci.icc) def  % Customize or remove.

[ /GTS_PDFXVersion (PDF/X-3:2002) % Must be so (the standard requires).
  /Title (Title)                  % Customize.
  /Trapped /False                 % Must be so (Ghostscript doesn't provide other).
  /DOCINFO pdfmark

% Define an ICC profile :

currentdict /ICCProfile known {
  [/_objdef {icc_PDFX} /type /stream /OBJ pdfmark
  [{icc_PDFX} <</N systemdict /ProcessColorModel get /DeviceGray eq {1} {4} ifelse >> /PUT pdfmark
  [{icc_PDFX} ICCProfile (r) file /PUT pdfmark
} if

% Define the output intent dictionary :

[/_objdef {OutputIntent_PDFX} /type /dict /OBJ pdfmark
[{OutputIntent_PDFX} <<
  /Type /OutputIntent              % Must be so (the standard requires).
  /S /GTS_PDFX                     % Must be so (the standard requires).
  /OutputCondition (Commercial and specialty printing) % Customize
  /Info (none)                     % Customize
  /OutputConditionIdentifier (FOGRA39)      % Customize
  /RegistryName (http://www.color.org)   % Must be so (the standard requires).
  currentdict /ICCProfile known {
    /DestOutputProfile {icc_PDFX}  % Must be so (see above).
  } if
>> /PUT pdfmark
[{Catalog} <</OutputIntents [ {OutputIntent_PDFX} ]>> /PUT pdfmark

Identifikujte a poté správně sestavte barevný prostor CMYK. Před:

[email protected] ~/orpheus/werbung/action $ identify -verbose action_schulungsvideo_v3_print.pdf
Image: action_schulungsvideo_v3_print.pdf
  Format: PDF (Portable Document Format)
  Class: DirectClass
  Geometry: 612x859+0+0
  Resolution: 72x72
  Print size: 8.5x11.9306
  Units: Undefined
  Type: TrueColor
  Endianess: Undefined
  Colorspace: RGB
  Depth: 16/8-bit
  Channel depth:
    red: 8-bit
    green: 8-bit
    blue: 8-bit
  Channel statistics:
    Red:
      min: 0 (0)
      max: 65535 (1)
      mean: 53873.6 (0.822058)
      standard deviation: 19276.7 (0.294144)
      kurtosis: 1.854
      skewness: -1.82565
    Green:
      min: 0 (0)
      max: 65535 (1)
      mean: 55385.6 (0.84513)
      standard deviation: 19274.6 (0.294112)
      kurtosis: 2.09868
      skewness: -1.91651
    Blue:
      min: 0 (0)
      max: 65535 (1)
      mean: 51020 (0.778516)
      standard deviation: 20077.7 (0.306367)
      kurtosis: 0.860627
      skewness: -1.52344
  Image statistics:
    Overall:
      min: 0 (0)
      max: 65535 (1)
      mean: 53426.4 (0.815235)
      standard deviation: 19546.7 (0.298263)
      kurtosis: 1.59453
      skewness: -1.75701
  Rendering intent: Undefined
  Interlace: None
  Background color: white
  Border color: rgb(223,223,223)
  Matte color: grey74
  Transparent color: black
  Compose: Over
  Page geometry: 612x859+0+0
  Dispose: Undefined
  Iterations: 0
  Compression: Undefined
  Orientation: Undefined
  Properties:
    date:create: 2011-09-14T15:38:57+02:00
    date:modify: 2011-09-14T15:38:57+02:00
    pdf:HiResBoundingBox: 612.283x858.898+0+0
    pdf:Version: PDF-1.5 
    signature: 210bfc9cf90e3b9505385f8b2267da1665b5c2de28bb5223311afba01718bbeb
  Artifacts:
    verbose: true
  Tainted: False
  Filesize: 1.577MBB
  Number pixels: 526KB
  Pixels per second: 52.57MB
  User time: 0.020u
  Elapsed time: 0:01.009
  Version: ImageMagick 6.6.5-6 2011-04-08 Q16 http://www.imagemagick.org

po:

[email protected] ~/orpheus/werbung/action $ pdf2pdfx action_schulungsvideo_v3_print.pdf
GPL Ghostscript 9.04 (2011-08-05)
Copyright (C) 2011 Artifex Software, Inc.  All rights reserved.
This software comes with NO WARRANTY: see the file PUBLIC for details.
Processing pages 1 through 1.
Page 1


[email protected] ~/orpheus/werbung/action $ identify -verbose action_schulungsvideo_v3_print_X-3.pdf 
Image: action_schulungsvideo_v3_print_X-3.pdf
  Format: PDF (Portable Document Format)
  Class: DirectClass
  Geometry: 612x859+0+0
  Resolution: 72x72
  Print size: 8.5x11.9306
  Units: Undefined
  Type: ColorSeparation
  Base type: ColorSeparation
  Endianess: Undefined
  Colorspace: CMYK
  Depth: 16/8-bit
  Channel depth:
    cyan: 8-bit
    magenta: 8-bit
    yellow: 8-bit
    black: 8-bit
  Channel statistics:
    Cyan:
      min: 0 (0)
      max: 65535 (1)
      mean: 8331.78 (0.127135)
      standard deviation: 14902.2 (0.227392)
      kurtosis: 1.62171
      skewness: 1.7799
    Magenta:
      min: 0 (0)
      max: 62194 (0.94902)
      mean: 6739.34 (0.102836)
      standard deviation: 14517.5 (0.221523)
      kurtosis: 2.08183
      skewness: 1.93276
    Yellow:
      min: 0 (0)
      max: 65535 (1)
      mean: 13310.1 (0.203098)
      standard deviation: 17022.5 (0.259746)
      kurtosis: 0.991135
      skewness: 1.45216
    Black:
      min: 0 (0)
      max: 56540 (0.862745)
      mean: 7117.47 (0.108606)
      standard deviation: 16803.7 (0.256408)
      kurtosis: 3.02752
      skewness: 2.16554
  Image statistics:
    Overall:
      min: 0 (0)
      max: 65535 (1)
      mean: 8874.66 (0.135419)
      standard deviation: 15850.6 (0.241864)
      kurtosis: 2.17614
      skewness: 1.88139
  Total ink density: 292%
  Rendering intent: Undefined
  Interlace: None
  Background color: white
  Border color: cmyk(223,223,223,0)
  Matte color: grey74
  Transparent color: black
  Compose: Over
  Page geometry: 612x859+0+0
  Dispose: Undefined
  Iterations: 0
  Compression: Undefined
  Orientation: Undefined
  Properties:
    date:create: 2011-09-14T15:39:30+02:00
    date:modify: 2011-09-14T15:39:30+02:00
    pdf:HiResBoundingBox: 612.28x858.9+0+0
    pdf:Version: PDF-1.3 
    signature: 0416db7487ea147b974ece5748bc4284e82bfc3fb7cd07a4de050421ba112076
  Artifacts:
    verbose: true
  Tainted: False
  Filesize: 2.103MBB
  Number pixels: 526KB
  Pixels per second: 5.25708PB
  User time: 0.000u
  Elapsed time: 0:01.000
  Version: ImageMagick 6.6.5-6 2011-04-08 Q16 http://www.imagemagick.org

Toto je na 64bitovém Gentoo s gs 9.04. Možná to pomůže?

Zdrojové PDF pochází z exportu pdf inkscape, barvy byly omezeny na barvy pokryté ECI ISO coated v2. Používám to jako řešení pro chybějící export CMYK inkscape a chybějící výstup PDF/X připravený pro předtiskovou přípravu...


Linux
  1. Zmenšete velikost PDF pomocí tohoto triku s příkazovým řádkem

  2. PDF čtečka s rozdělenou obrazovkou pro Linux

  3. sshfs Resetování připojení peerem s identifikačním souborem

  1. Jak převést HTML do PDF pomocí HTMLDoc na Debianu 10

  2. Rozdělit PDF podle záložek?

  3. Optimalizujte soubory PDF (pomocí Ghostscriptu nebo jiného)

  1. Sloučit soubory pdf s číselným řazením

  2. Jak převést PDF do JPG pomocí příkazového řádku v Linuxu?

  3. Jak extrahovat text pomocí OCR z PDF na Linuxu?