Вот метод, основанный на командной строке, для извлечения цветовых профилей ICC из PDF. Он использует скрипт Python pdf-parser.py, написанный исследователем безопасности Дидье Стивенсом, который можно скачать здесь.
Однако этот инструмент не является специализированным инструментом для извлечения ICC. (Я не знаю такого инструмента.) Это универсальный инструмент командной строки для исследования PDF-файлов.
Поэтому вам нужно пройти различные шаги, чтобы добиться извлечения.
Шаг 1. Определите идентификатор объекта PDF профиля ICC.
Вы должны использовать -s
для поиска строки ICCBased
. (Файлы PDF без встроенного профиля ICC не будут иметь этого ключевого слова [за исключением возможного использования его в их текстовом содержимом...].)
pdf-parser -s ICCBased my.pdf
Мой тестовый PDF вернул это:
obj 18 0
Type:
Referencing: 21 0 R
Кажется, что профиль ICC можно найти в объекте PDF 21.
Шаг 2. Посмотрите на объект PDF, найденный на шаге 1.
Вы должны использовать -o 21
, чтобы увидеть, что такое объект PDF 21:
pdf-parser.py -o 21 my.pdf
Мой тестовый PDF возвращает это:
obj 21 0
Type:
Referencing:
Contains stream
<<
/Alternate /DeviceRGB
/Filter /FlateDecode
/Length 2574
/N 3
>>
Ладно, похоже, мы приближаемся...
Шаг 3. Создайте дамп потока, содержащегося в объекте PDF, содержащем профиль.
На шаге 2 мы получили две важные информации:
- Объект 21 PDF содержит поток (содержимое которого не показано при использовании параметра
-o 21
для pdf-parser.py
).
- Поток объектов должен быть распакован с помощью
/FlateDecode
, чтобы добраться до его содержимого.
Следовательно, мы должны запустить pdf-parser.py
сейчас с двумя дополнительными аргументами:
-d filename
, чтобы сбросить поток объекта PDF 21 в файл.
-f
, чтобы фильтровать/разжимать поток объектов при сохранении его в файл.
- Команда для запуска:
pdf-parser.py -o 21 -f -d 21.stream my.pdf
Шаг 4. Проверьте, что было извлечено
Теперь мы выгрузили поток объекта PDF 21 в файл с именем 21.stream
. Посмотрим, что в нем содержится:
file 21.stream
21.stream: Microsoft ICM Color Profile
Похоже, нам это удалось. :-)
Шаг 5: Откройте цветовой профиль
Я посмотрю, принимает ли моя система Mac OS X этот профиль:
mv 21.stream 21.icm
open 21.icm
OSX использует 'Утилита синхронизации цвета', чтобы открыть файл и отобразить окно. Щелчок по элементам списка открывает различные информационные панели в нижней части окна:
Шаг 6. Используйте iccdump
Argyll для вывода содержимого профиля ICC в виде текста.
Обратите внимание, что ArgyllCMS Грэма Гилла, программное обеспечение для управления цветом с открытым исходным кодом, доступное для Linux, Mac OSX и Windows, поставляется с целым набором инструментов командной строки. Один из них iccdump
. Мы можем использовать его для просмотра свойств только что выигранного файла 21.icm
:
iccdump 21.icm
icc:
Header:
size = 3144 bytes
CMM = 'Lino'
Version = 2.1.0
Device Class = Display
Color Space = RGB
Conn. Space = XYZ
Date, Time = 9 Feb 1998, 6:49:00
Platform = Microsoft
Flags = Not Embedded Profile, Use anywhere
Dev. Mnfctr. = 'IEC '
Dev. Model = 'sRGB'
Dev. Attrbts = Reflective, Glossy
Rndrng Intnt = Perceptual
Illuminant = 0.964203, 1.000000, 0.824905 [Lab 100.000000, 0.000498, -0.000436]
Creator = 'HP '
tag 0:
sig 'cprt'
type 'text'
offset 336
size 51
Text:
No. chars = 43
0x0000: Copyright (c) 1998 Hewlett-Packard Company
tag 1:
sig 'desc'
type 'desc'
offset 388
size 108
TextDescription:
ASCII data, length 18 chars:
0x0000: sRGB IEC61966-2.1
No Unicode data
ScriptCode Data, Code 0x0, length 18 chars
0x0000: 73 52 47 42 20 49 45 43 36 31 39 36 36 2d 32 2e 31 00
tag 2:
sig 'wtpt'
type 'XYZ '
offset 496
size 20
XYZArray:
No. elements = 1
tag 3:
sig 'bkpt'
type 'XYZ '
offset 516
size 20
XYZArray:
No. elements = 1
tag 4:
sig 'rXYZ'
type 'XYZ '
offset 536
size 20
XYZArray:
No. elements = 1
tag 5:
sig 'gXYZ'
type 'XYZ '
offset 556
size 20
XYZArray:
No. elements = 1
tag 6:
sig 'bXYZ'
type 'XYZ '
offset 576
size 20
XYZArray:
No. elements = 1
tag 7:
sig 'dmnd'
type 'desc'
offset 596
size 112
TextDescription:
ASCII data, length 22 chars:
0x0000: IEC http://www.iec.ch
No Unicode data
ScriptCode Data, Code 0x0, length 22 chars
0x0000: 49 45 43 20 68 74 74 70 3a 2f 2f 77 77 77 2e 69 65 63 2e 63 68 00
tag 8:
sig 'dmdd'
type 'desc'
offset 708
size 136
TextDescription:
ASCII data, length 46 chars:
0x0000: IEC 61966-2.1 Default RGB colour space - sRGB
No Unicode data
ScriptCode Data, Code 0x0, length 46 chars
0x0000: 49 45 43 20 36 31 39 36 36 2d 32 2e 31 20 44 65 66 61 75 6c 74 20
...
tag 9:
sig 'vued'
type 'desc'
offset 844
size 134
TextDescription:
ASCII data, length 44 chars:
0x0000: Reference Viewing Condition in IEC61966-2.1
No Unicode data
ScriptCode Data, Code 0x0, length 44 chars
0x0000: 52 65 66 65 72 65 6e 63 65 20 56 69 65 77 69 6e 67 20 43 6f 6e 64
...
tag 10:
sig 'view'
type 'view'
offset 980
size 36
Viewing Conditions:
XYZ value of illuminant in cd/m^2 = 19.644501, 20.371796, 16.808899
XYZ value of surround in cd/m^2 = 3.928894, 4.074387, 3.361786
Illuminant type = D50
tag 11:
sig 'lumi'
type 'XYZ '
offset 1016
size 20
XYZArray:
No. elements = 1
tag 12:
sig 'meas'
type 'meas'
offset 1036
size 36
Measurement:
Standard Observer = 1931 Two Degrees
XYZ for Measurement Backing = 0.000000, 0.000000, 0.000000 [Lab 0.000000, 0.000000, 0.000000]
Measurement Geometry = Unknown
Measurement Flare = 1.0%
Standard Illuminant = D65
tag 13:
sig 'tech'
type 'sig '
offset 1072
size 12
Signature
Technology = Cathode Ray Tube Display
tag 14:
sig 'rTRC'
type 'curv'
offset 1084
size 2060
Curve:
No. elements = 1024
tag 15:
sig 'gTRC'
type 'curv'
offset 1084
size 2060
Curve:
No. elements = 1024
tag 16:
sig 'bTRC'
type 'curv'
offset 1084
size 2060
Curve:
No. elements = 1024
P.S.
ArgyllCMS содержит инструмент командной строки extracticc
, который может извлекать встроенный профиль ICC из файла TIFF. У него нет инструмента для извлечения профиля из файла PDF.
person
Kurt Pfeifle
schedule
13.12.2014