3

На Debian Sid у меня есть PDF с синим фоном и желтым шрифтом. Я много искал в Super User, но не нашел ничего полезного для себя.

Я попытался преобразовать PDF в оттенки серого с помощью:

gs -o grayscale.pdf -sDEVICE=pdfwrite -sColorConversionStrategy=Gray -sProcessColorModel=DeviceGray -dCompatibilityLevel=1.4 colored.pdf

Проблема в том, что я получаю PDF с белыми шрифтами и темно-серым фоном, поэтому не могу его распечатать.

После этого я попробовал:

convert -density 96x96 gs2.pdf -density 96x96 -negate -compress zip inv.pdf

Я получил PDF с черными шрифтами (и это нормально) и серым фоном (и это не хорошо).

Что я могу сделать, чтобы получить PDF с белым фоном и черными шрифтами?

1 ответ1

4

ОБЩЕЕ ПРЕДУПРЕЖДЕНИЕ !!! работа над копией вашего файла !!!

(так что вы можете иметь второй шанс, если вы сделали ошибки)

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


  • ПРЕДВАРИТЕЛЬНАЯ ПРОВЕРКА:

откройте свой PDF-файл с помощью редактора, способного показать внутреннюю структуру PDF, например

Notepad ++

и убедитесь, что вы видите фрагменты кода, такие как

1.000 1.000 0.000 рг (это означает желтый)

0,000 0,000 1.000 рг (это означает синий, если ваш синий - чистый синий с триплетом RGB 0, 0, 255, в противном случае прочитайте остаток ответа, чтобы определить правильный триплет в pdf-код)

и так далее...

(фрагмент кода может измениться, например, в формате PDF, созданном с помощью внутренней функции экспорта PDF в openoffice, те же фрагменты кода представлены в следующих формах:

0 0 0 rg (it means *black*)
1 1 1 rg (it means *white*)

и так далее...

если вы видите эти фрагменты кода, вы можете начать изменять значения, в противном случае вам нужно распаковать текстовые потоки.

Вы можете выполнить эту задачу с

Pdftk

http://www.pdflabs.com/docs/install-pdftk/

pdftk file.pdf output uncompressed.pdf uncompress

и перепрессовать после завершения изменений

pdftk uncompressed.pdf output recompressed.pdf compress

Теперь, если вы видите эти фрагменты кода, вы можете изменить значения

ШАГ 1 (для редактирования PDF) -

первое, что вам нужно, это найти правильную эквивалентность между цветовыми значениями RGB текста и фона и внутренним pdf-представлением тех же цветов

Вы можете использовать бесплатные палитры цветов, как эти

определить значения RGB текста и цвета фона

как только у вас есть эти значения, вам нужно преобразовать в специальное внутреннее представление PDF

чтобы сделать это, я возражаю против этой пропорции:

1:255 = x:выбранный вами цвет

например: допустим, у вас есть этот триплет RGB для фона: 30,144,255

RGB триплет синий

Чтобы узнать соответствующие значения в pdf для вставки во фрагмент кода для изменения цвета фона pdf, вы должны: (Вы можете использовать http://www.wolframalpha.com/ для точного вычисления)

1:255=x:30 = 30/255 = 0.117 (approximated to first three decimals)

1:255=x:144 = 144/255 = 0.564 (approximated to first three decimals)

1:255=x:255 = 255/255 = 1

Итак, весь триплет в формате PDF, соответствующий 30 144 445 RGB, будет:

0,117 0,564 1000


# ШАГ 2 (для редактирования PDF)

мы ищем 0.117 0.564 1.000 в pdf-файле с notepad++ (обтекание и сопоставление только одного слова, которое необходимо проверить), и мы нашли внутреннее pdf-представление фона, и мы можем изменить цвет с лазурного на, скажем, белый

1.000 1.000 1.000

или же

1 1 1

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

так как мы знаем, что 0,000 0,000 1.000 рг означает синий, мы ищем это и можем измениться с 0,000 0,000 1.000 рг до 1.000 1.000 1.000 рг (белый) НО ...

в то же время вы также измените текст с желтого на черный

ищите 1.000 1.000 0.000 (желтый текст) и меняйте на черный 0.000 0.000 0.000

и теперь у нас есть векторный PDF с черным текстом и белым фоном

пожалуйста, не забудьте

    • Сожмите снова этот pdf-файл, который вы ммодифицировали, если вы распаковали pdftk
    • ремонт
pdftk file.pdf output fixed.pdf

есть другой способ, начиная с postscript, выполнить ту же задачу, но, поскольку у вас уже есть файл pdf, преобразование в postscript для выполнения аналогичной задачи было бы излишним шагом

оставьте отзыв, пожалуйста, и не стесняйтесь спрашивать больше

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .