Windows: Что произойдет, если я закончу буквы дисков? (их 26!) [закрыто]

Что произойдет, если я закончу буквы дисков? хочу изменить их цвета. Например, предположим, что все мои страницы используют оттенки ...

Я использую iText в Java, чтобы выбрать несколько страниц из большого PDF-документа и сохранить их как новый, меньший PDF. В то же время я хотел бы изменить их цвета.

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


Марк Сторер спрашивает:

Чего именно вы пытаетесь достичь?

Превратите это ... в это:

gray pagegreen page

I есть некоторые документы , в которых я уже использую iText для выбора меньшего набора страниц из документа на основе пользовательского ввода - сокращение более 100 страниц примерно до 5. В то же время я хочу производить зеленые, синие, желтые, розовые и т. д. их варианты. Не каждая страница в оттенках серого, но все важные, так что я могу настроить их цветовое пространство, если это необходимо.


Обновление:

Следуя предложению Марка Сторера о режимах наложения, вот что у меня есть:

    val reader = new PdfReader(file.toURL)
    val document = new Document
    val writer = PdfWriter.getInstance(document, outputStream)
    document.open()

    /* draw a white background behind the page, so the
       blend always has something to transform, otherwise
       it just fills. */
    val canvas = writer.getDirectContent
    canvas.setColorFill(new CMYKColor(0.0f, 0.0f, 0.0f, 0.0f))
    canvas.rectangle(10f, 0f, 100f, 100f)
    canvas.fill

    /* Put the imported page on top of that */
    val page = writer.getImportedPage(reader, 1)
    canvas.addTemplate(page, 0, 0)

    /* Fill a box with colour and a blending mode */
    canvas.setColorFill(new CMYKColor(0.6f,0.1f,0.0f,0.5f))
    val gstate = new PdfGState
    gstate.setBlendMode(PdfGState.BM_SCREEN)
    canvas.setGState(gstate)
    canvas.rectangle(0f, 0f, 100f, 100f)
    canvas.fill

    document.close()

(Это в Scala, но библиотека iText такая же, как и в Java)

Проблема в том, что все доступные в iText режимы смешивания являются «разделяемыми» режимами: они работают с каждым цветовым каналом независимо. Это означает, что я могу отдельно настроить значения голубого, пурпурного, желтого или черного, но я не могу превратить серый в зеленый.

Для этого мне нужно использовать режим смешивания цветов, который является «неотделимым» ", т.е. цветовые каналы влияют друг на друга. Насколько я могу судить, iText этого не предлагает - ни один из неделимых режимов смешивания не указан среди констант в PdfGState . Я' m, используя iText 5.0.5, которая является последней версией на момент написания этой статьи.

Есть ли способ получить доступ к этим режимам наложения в iText или даже взломать их? Есть ли другой способ достижения результата?


Обновление:

Даже установка режима наложения «Цвет» не работает. Я сделал это в коде, чтобы заставить его:

    val gstate = new PdfGState
    gstate.put(PdfName.BM, new PdfName("Color"))
    canvas.setGState(gstate)

и я проверил полученный PDF-файл в текстовом редакторе, чтобы убедиться, что он говорит правильно. К сожалению, результат на экране просто не работал. Я понятия не имею, почему, согласно спецификации PDF, это должен быть правильный режим наложения.


Марк Сторер спрашивает:

«Цвет» не сработал? Веселый. Можно посмотреть PDF?

Вот PDF .

Разместив его в Интернете, я теперь вижу, что режим «Цвет» работает в Chrome правильно, но не работает. t работать в Acrobat 9 Pro (CS4). Так что техника правильная, но Adobe не справляется с рендерингом!

Интересно, нет ли какого-то способа «сгладить» эффект режима наложения, чтобы PDF-файл содержал объект желаемого цвета напрямую, а не наложение, предназначенное для получите правильный цвет.

Идея: перевернуть это вверх дном. Использовать существующую страницу в качестве альфа-канала на странице с заполнением полностью желаемого цвета, а не наоборот.

Как? Я не уверен, что GState применимо к добавлению шаблона?

Кроме того, для импортированной страницы сначала потребуется добавить белый фон, иначе она просто будет заливать цветом везде, где нет объекта, а не смешивать.

Я пробовал сделать это:

    val canvas = writer.getDirectContent
    canvas.setColorFill(new CMYKColor(0.6f,0.1f,0.0f,0.0f))
    canvas.rectangle(10f, 0f, 500f, 500f)
    canvas.fill

    val template = canvas.createTemplate(500f, 500f)
    template.setColorFill(new CMYKColor(0f, 0f, 0f, 0f))
    template.rectangle(0f, 0f, 500f, 500f)
    template.fill

    val page = writer.getImportedPage(reader, 1)
    template.addTemplate(page, 0, 0)

    val gstate = new PdfGState
    gstate.put(PdfName.BM, new PdfName("Color"))
    canvas.setGState(gstate)
    canvas.addTemplate(template, 0, 0)

И вот созданный им PDF . Не совсем верно ни в Chrome, ни в Acrobat :)

Edit : Глупый я. Я изменил режим на «Яркость», создав этот файл . Как и раньше, это выглядит правильно в Chrome, но не в Acrobat.


Я только что проверил, и даже Adobe Reader X не отображает его должным образом. Что, вероятно, означает, что то, что я прошу, невозможно. : (


Решение

Леонард Розенталь из Adobe вернулся ко мне и разъяснил проблему: "

6
задан 12 revs 19 November 2013 в 15:04
поделиться