Ghostscript, чтобы удалить только цветной текст из PDF - PullRequest
1 голос
/ 27 апреля 2020

Я нахожусь в процессе чтения файлов PDF. Я хотел бы удалить любой цветной текст (т.е. оставить только черный текст и изображения). Я попробовал ghostscript

gs -o no-more-texts.pdf -sDEVICE=pdfwrite -dFILTERTEXT   Original.pdf

, он успешно удаляет весь текст и оставляет изображения нетронутыми. Как изменить команду gs для удаления только цветной текст (красный, синий ...).

если есть другие модули, способные сделать это, я открыт для предложений

1 Ответ

1 голос
/ 28 апреля 2020

Устройство, которое делает это, не имеет такой возможности, поэтому вы не можете изменить командную строку Ghostscript, чтобы делать то, что вы хотите.

Есть три способа решения этой проблемы в Ghostscript;

  • Вы можете изменить интерпретатор PDF, который написан на PostScript
  • Вы можете изменить устройство pdfwrite, которое написано на C
  • Вы можете изменить фильтрацию устройство, которое также написано в C.

Есть несколько моментов, которые вы должны учитывать, независимо от того, какой инструмент вы используете. Во-первых, что точно вы подразумеваете под «цветным текстом» или «черным текстом и изображениями»?

Спецификация PDF позволяет указывать цвет в широком разнообразии цветовых пространств. Серый, RGB, CMYK, Lab, CalGray, CalRGB, ICCBased, Separation, DeviceN. Кроме того, существуют индексированные цветовые пространства, которые могут иметь базовое пространство любого из предыдущих пространств, и цветовые пространства образца.

Что такое Вы собираетесь считать «черным» в каждом из этих мест? Очевидно, DeviceGray - это просто, 0 - это черный, все остальное - это оттенок серого, но как насчет RGB? Вы только собираетесь считать 0,0,0 черным? Что, если это пространство на базе ICC?

Текст может иметь два цвета, обводку и цвет заливки, и их можно указать по-разному. Они даже могут быть указаны в разных цветовых пространствах. Вам нужно подумать о том, как вы планируете справиться с этим.

...