Установите цветовое пространство смешивания прозрачности уровня страницы в Device RGB - PullRequest
0 голосов
/ 13 февраля 2019

Мое требование состоит в том, чтобы установить цветовое пространство смешивания прозрачности на уровне страницы в Device RGB.Я пытаюсь использовать pdfBox для достижения этой цели.Снимок экрана получен из программы чтения Adobe Acrobat (Print Production -> Flatten Previewer -> изменить цветовое пространство прозрачности уровня страницы), где вы можете установить значение из раскрывающегося списка.

Я попытался установить режим наложения, используя PDGraphicState из PDFBOX.Это правильный способ достижения прозрачности на уровне страницы, показанный на скриншоте?

PDGraphicsState gState = new PDGraphicsState(page.getArtBox());
gState.setBlendMode(BlendMode.OVERLAY);
PDExtendedGraphicsState pde = new PDExtendedGraphicsState();
pde.copyIntoGraphicsState(gState);
final COSName blendMode =page.getResources().add(pde);

Но это не работает.У меня есть некоторый другой код, который использует «PDExtendedGraphicState»

, который будет добавлен на страницу с помощью page.getResources (). Add (graphicsState) Но PDExtendedGraphicState не имеет никакого метода для setBlend Mode.Поэтому я создал новый объект PDExtendedGraphicState и сделал «copyIntoGraphicsState».

Я что-то упустил или неправильный подход?

Заранее спасибо.

EDIT До Открыть файл в Adobe Acrobat Pro DC.Откройте: Инструменты -> Печатная продукция -> предварительный просмотр.Попробуйте открыть и закрыть предварительный просмотр.Вы можете увидеть цветовые сдвиги. До

После Откройте тот же файл (Before.pdf) в Acrobat Pro DC.Откройте: Инструменты -> Печатная продукция -> Предварительный просмотр Flattener -> Поиск цветового пространства с прозрачностью на уровне страницы (см. Скриншот) -> изменить -> выбрать Device RGB из выпадающего меню -> применить.Теперь вы получите после .pdf, который я добавил здесь.После этого, если вы откроете вывод Preview, как указано выше, вы не увидите смещение цветов. После

Ответы [ 2 ]

0 голосов
/ 22 февраля 2019

Чтобы установить DeviceRGB как прозрачное цветовое пространство смешивания для документа.Мы использовали:

group.setItem(COSName.S, COSName.TRANSPARENCY);
group.setItem(COSName.CS, COSName.DEVICERGB);
page.getCOSObject().setItem(COSName.GROUP, group)

Это решает проблему.Спасибо, ребята, за то, что предложили разные подходы.

0 голосов
/ 18 февраля 2019

Часть проблемы здесь, я думаю, в том, что есть режимы наложения (нормальный, затемнение, умножение, цветовой прожиг и т. Д.), А затем цветовое пространство наложения прозрачности на уровне страницы (DeviceRGB или DeviceCMYK).Последний может быть установлен в InDesign (для этого есть пункт меню), но здесь требуется настройка этого параметра с помощью PDFBox или другого инструмента.Таким образом, это не режим наложения или смешения, это настройка цветового пространства (которое установлено как «none» в PDF OP для изменения).

В моем тестировании прозрачность, смешивающаяся между двумя объектами RGB, не 'не работает правильно, если для этого параметра установлено значение «none», и работает правильно, если для него установлено значение «DeviceRGB» или соответствующее цветовое пространство RGB без изменений в режиме наложения или смешивания.

Похоже, что оба Enfocus PitStop Proи Callas pdfToolbox может установить этот параметр, но было бы полезно, если бы PDFBox мог сделать это также.

...