PDF Color(u)r Analysis (без самого Acrobat?)

Есть ли библиотека/инструмент, в котором перечислены все цвета, используемые в документе PDF?

Я уверен, что сам Acrobat сделал бы это, но мне нужна альтернатива (в идеале что-то, что можно было бы написать в сценарии).

Итак, идея в том, что если у вас есть очень простой PDF-документ с четырьмя цветами, вывод может выглядеть так:

RGB(100,0,0)
RGB(105,0,0)
CMYK(0,0,0,1)
CMYK(1,1,1,1)

person shearichard    schedule 19.01.2010    source источник


Ответы (6)


Вы можете исследовать внутренности с помощью pdfbox, но вам придется написать некоторый код, чтобы найти и каталогизировать все эти цвета. .

person bmargulies    schedule 19.01.2010
comment
Это не будет работать для всех документов PDF. Просто рассмотрите градиенты и прозрачность как два возможных варианта. - person OnceUponATimeInTheWest; 28.08.2013

Большинство инструментов PDF имеют доступ к этой информации, но не имеют API для доступа к ней. Вы можете взять любой инструмент и добавить его в

person mark stephens    schedule 20.01.2010

Apago PDFspy создает файл XML, содержащий все виды метаданных, извлеченных из файлов PDF. Он сообщает об использовании цвета, включая плашечные цвета.

person Dwight Kelly    schedule 16.03.2010

Недавно мы добавили функцию под названием GetPageColorSpaces(0) в библиотеку Quick PDF — www.quickpdflibrary.com, чтобы получить большую часть информации ColorSpace, используемой в документе.

Вот пример вывода.

Ресурс, \"QuickPDFCS2eb0f578\",Разделение,\"HKS 52 E\",DeviceCMYK,0.95,0,0.55,0
Ресурс,\"QuickPDFCSb7b05308\",Разделение,\"Черный\",DeviceCMYK,0, 0,0,1
Ресурс, \"QuickPDFCSd9f10810\",Разделение,\"Pantone 117 C\",DeviceCMYK,0,0.18,1,0.15
Ресурс,\"QuickPDFCS9314518c\",Разделение,\" Все\",Ресурс DeviceCMYK,0,1,0,0.5
,\"QuickPDFCS333d463d\",Разделение,\"noplate\",Ресурс DeviceCMYK,1,0,0,0
,\"QuickPDFCSb41cafc4\ ",Separation,\"noprint\",DeviceCMYK,0,1,0,0
Resource,\"Cs10\",DeviceN,Black,Colorant,-1,-1,-1,-1
Ресурс,\"Cs10\",DeviceN,P1495,Colorant,-1,-1,-1,-1
Ресурс,\"Cs10\",DeviceN,CalRGB,Colorant,-1,-1,-1 ,-1
Ресурс,\"Cs10\",Разделение,\"P1495\",DeviceCMYK,0,0.31,0.69,0
XObject,\"R29\",Изображение,,DeviceRGB,-1, -1,-1,-1

person Andrew Cash    schedule 25.03.2012

Отказ от ответственности: я работаю в Atalasoft.

Наш продукт DotImage с надстройка PDF Reader, может это сделать. Самый простой способ — растрировать страницу, а затем просто использовать любой из наших инструментов анализа изображений, чтобы получить цвета.

В этом примере показано, как это сделать, если вы хотите сгруппировать похожие цвета — развернутый пример будет работать только для PNG и JPEG, но если вы загрузите код, включить надстройку и получить PDF также будет тривиально (позвольте мне Знай, если тебе нужна помощь)

Источник здесь:

http://www.atalasoft.com/cs/blogs/31appsin31days/archive/2008/05/30/color-scheme-generator.aspx

Запустите его здесь:

http://www.atalasoft.com/31apps/ColorSchemeGenerator

person Lou Franco    schedule 21.01.2010

Если вы работаете с конкретными и простыми документами PDF из ограниченного источника, вы можете найти цвета, читая поток содержимого. Однако это не может быть общим решением.

Например, документы PDF могут содержать градиенты или прозрачность. Если ваш документ содержит конструкцию такого типа, вы, скорее всего, получите широкий диапазон цветов, а не определенный набор.

Точно так же многие PDF-документы содержат растровые изображения. Учитывая, что их необходимо будет интерполировать для отображения с разными разрешениями, набор цветов в отображаемом PDF-файле может быть больше или отличаться (хотя, очевидно, в целом похож) на встроенное растровое изображение.

Точно так же многие PDF-документы содержат конструкции в нескольких цветовых пространствах, которые отображаются в разных цветовых пространствах. Например, PDF-файл может содержать растровое изображение DeviceRGB, линию цвета CMYK на основе ICC и прямоугольник на основе Lab. Отображаемая версия может быть в sRGB для дисплея или CMYK для печати. Каждый из них будет влиять на точный набор цветов.

Таким образом, единственный 100% правильный ответ будет связан с конкретным рендерингом PDF-файла с определенным разрешением в определенном цветовом пространстве. Из результирующего растрового изображения вы можете определить цвета, которые были использованы.

Существует множество библиотек PDF, которые будут выполнять этот тип рендеринга, включая DotImage (упомянутый в другом ответе) и ABCpdf .NET (над которым я работаю).

person OnceUponATimeInTheWest    schedule 28.08.2013