Можно ли при печати инвертировать цвета текста и фона в PDF?

18

У меня есть существующий PDF с полностью черным фоном, и весь текст белый.

Есть ли способ заставить текст печатать черным, а черный фон вообще не печатать?

У меня есть Bluebeam и Adobe PDF.

Рон
источник

Ответы:

12

Как ни странно, есть «законные» варианты использования для этого, особенно люди со слабым зрением. Acrobat и другие программы чтения могут переопределять цвета для отображения (например, Ctrl-I в Evince и через меню «Доступность» в Acrobat Reader X), но, как ни странно, не для печати. Однако вы можете использовать конвертер pdf2ps GhostScript (или поддельный драйвер принтера PS, который просто записывает файл), чтобы получить файл postscript, а затем отредактировать файл, вставив

{1 exch sub} settransfer 

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

AlwaysLearning
источник
1
Я сделал что-то вроде этого (в Windows), установив драйвер принтера PostScript, а затем приказал ему печатать в файл для захвата вывода. Та же концепция должна работать на других ОС. Следует отметить, что файлы PostScript - это просто текстовые файлы, которые можно редактировать в большинстве текстовых редакторов.
Мартино
Используя комбинацию pdf2psи ps2pdfя могу экспортировать исходный PDF-файл в инвертированный PDF-файл. Мне просто любопытно, что делает предложенная линия и можно ли «вернуться» обратно к исходным цветам.
tigerjack89
3

Существует простой и технический способ .

Технический способ заключается в том, что если у вас установлен Ghostscript и его .../binпапка добавлена ​​в вашу PATH, вы просто должны иметь возможность инвертировать цвета вашего PDF, вызывая что-то похожее на следующее из командной строки:

gswin64 -o C:/outputfile.pdf -sDEVICE=pdfwrite -c "{1 exch sub}{1 exch sub}{1 exch sub}{1 exch sub} setcolortransfer" -f C:/inputfile.pdf

Обратите внимание, что gswin64(расположенный в .../binпапке) может вызываться, gswin32если вы загрузили 32-разрядную версию, или что-то еще, если вы используете систему * nix вместо Windows, и что вам, очевидно, следует заменить C:/outputfile.pdfи C:/inputfile.pdfфактическими путями вашего входной файл и предполагаемое расположение выходного файла. Также позаботьтесь о том, чтобы, по моему опыту, иногда возникали некоторые проблемы, если в ваших каталогах путей есть пробелы, даже если вы ставите кавычки вокруг них.

Также стоит отметить, что в некоторых версиях Ghostscript может произойти сбой, если вы не поместите {1 exch sub}{1 exch sub}{1 exch sub}{1 exch sub} setcolortransferстроку в отдельный .psфайл и не добавите этот .psфайл в свою команду.

(Это действительно более конкретная версия Mateen Ulhaqответа выше)

Простой способ заключается в том, что если вы не можете быть обеспокоены выполнением любого из вышеперечисленного, вы можете использовать веб-сайт InvertPDF.com , который сделает все это (плюс немного больше) за вас. Это мой собственный сайт, и я наткнулся на эту тему, пока пытался ее создать. Я очень надеюсь, что этот ответ облегчит задачу следующему человеку, пытающемуся достичь аналогичного результата или создающему свой автономный сценарий.

Джек Кроуфорд
источник
2

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

convert -density 300 -negate "input.pdf[1-999]" output.pdf

Замените 300на нужный вам DPI и 1-999желаемый диапазон страниц.

ПРИМЕЧАНИЕ . Эта команда предназначена для более старой версии ImageMagick, и вам необходимо убедиться, что установлены устаревшие утилиты.

Наследие Утилиты

bdr9
источник
@ fixer1234 Спасибо, что обратили на это мое внимание. Я добавил ссылку на эту страницу в интернет-архиве.
bdr9
1

В Acrobat Reader X

Правка-> Настройки-> Специальные возможности Выберите: Заменить цвета документа. Выберите: Пользовательский цвет.

Установите оставшиеся параметры в соответствии с личными предпочтениями.

Примечание: это не меняет документ, только ваш вид и способ его печати.

Bas
источник
Не печатает иначе, чем оригинал AFAICT
mike65535
1

Ни одно из ранее опубликованных решений не помогло мне, поэтому я написал этот простой сценарий bash. Это зависит от pdftkи awk. Просто скопируйте код в файл и сделайте его исполняемым. Затем запустите это как:

$ /path/to/this_script.sh /path/to/mypdf.pdf

Сценарий:

#!/bin/bash                                                                      
pdftk "$1" output - uncompress | \                                               
awk '                                                                            
  /^1 1 1 / {                                                                    
    sub(/1 1 1 /,"0 0 0 ",$0);                                                   
    print;                                                                       
    next;                                                                        
  }                                                                              

  /^0 0 0 / {                                                                    
    sub(/0 0 0 /,"1 1 1 ",$0);                                                   
    print;                                                                       
    next;                                                                        
  }                                                                              

  { print }' | \                                                                 
pdftk - output "${1/%.pdf/_inverted.pdf}" compress

Этот скрипт работает для меня, но ваш пробег может отличаться. В частности, иногда цвета указаны в форме 1.000 1.000 1.000вместо 1 1 1. Сценарий может быть легко изменен по мере необходимости. При желании могут быть добавлены дополнительные цветовые преобразования.

Джон Коул
источник
0

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

"C:\Program Files\gs\gs9.20\bin\gswin64c" -o inverted.pdf -sDEVICE=pdfwrite -c "{1 exch sub}{1 exch sub}{1 exch sub}{1 exch sub} setcolortransfer" -f %1
convert -brightness-contrast 3,-18 -compress lzw  -density 300 -colorspace Gray inverted.pdf output.pdf

Требуется установить Ghostscript для первой команды (пожалуйста, укажите правильный путь). Требуется, чтобы ImageMagick с устаревшими утилитами был установлен для второй команды.

Матин Улхак
источник
0

Многие предлагали использовать метод Edit-> Preference-> Accessibility, но, к сожалению, он не работал для меня. После тестирования и изучения настроек PDF мне удалось получить то, что я хотел!

  • Перейти к печати (Ctrl + P)
  • Нажмите Расширенные настройки
  • Проверьте настройки: пользовательские
  • Нажмите на Выход из левой панели
  • Под Цвет: выберите Composite Grey
  • Установите флажок Отрицание
  • Нажмите ОК

Это должно сработать!

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

Наконец, если вы собираетесь распечатать документ в виде другого PDF-файла, в разделе « Размер страницы и обработка» нажмите « Подогнать» и установите оба флажка - « Выберите размер бумаги при необходимости » и « Используйте нестандартный формат бумаги при необходимости» . (Чтобы избежать нежелательных пробелов)

Надеюсь, это поможет!

Синь Йи
источник
Это зависит от вашего драйвера принтера
Марк Jeronimus
-1

Использование ImageMagick работало для меня, хотя выходной файл примерно в 50 раз больше входного.

convert -density 300 -negate input_file.pdf output_file.pdf
Catchaca
источник
Командная строка (в luinux) была: convert -density 300 -negate input_file.pdf output_file.pdf
Catchaca