У меня есть PDF, который имеет мое имя как неприятный водяной знак через довольно длинный файл PDF. Я пытался заменить текст в LibreOffice, Тянут с пробелами, но в то время как мое имя действительно появляется как текст, находка и заменяет функцию, кажется, заправляет мой компьютер, берущий значительную RAM и процессорное время, чтобы сделать.
Существует ли командная строка способ удалить строки из PDF? Хм... может sed
это?
Поскольку во многих случаях это - просто текст, можно часто удалять его просто с sed
или на самом деле любой текстовый редактор – скажем, это говорит “водяной знак”:
sed 's/watermark//g' in.pdf >out.pdf
Если Ваш файл PDF сжат, это не работает, необходимо распаковать его сначала, например, с pdftk
(Как я могу установить pdftk в Ubuntu 18.04 и позже?):
pdftk in.pdf output out.pdf uncompress
Если sed
вывод не читаем с Вашим предпочтительным читателем PDF, попытайтесь восстановить его с pdftk
:
pdftk out.pdf output out_pdftk.pdf
Дальнейшее чтение: Как отредактировать PDFs?
Источник: Как удалить водяной знак из PDF с помощью pdftk • Суперпользователь
Извините, ответ, данный @dessert, является так неправильным, как это могло быть как общие рекомендации. Это не будет работать на общий случай текстовой замены в PDFs (водяные знаки или не), и необходимо будет быть очень удачливыми для очень редких случаев PDFs, с которым Вы встречаетесь, было это, будет работать. (Кроме того, водяные знаки, вставленные LibreOffice часто, преобразовываются в векторную графику или растровую графику, даже если они появляются как текст при печати или просмотре на экране...., но этот случай, который я не буду обсуждать дальше - ниже, я имею дело только с реальным текстовым содержанием в PDF.)
Причины этого - они:
Что, кажется, текст ASCII в визуальном представлении его содержания в средстве просмотра PDF, очень вероятно не будет текст ASCII в исходном коде PDF. Вместо этого это может быть закодированное шестнадцатеричное число.
Кроме того, отдельные символы строки ASCII могли бы быть помещены на странице в последовательном порядке, но они могут легко быть размещены индивидуально с каждым имеющим его собственную координатную информацию, опрыснутую промежуточный отдельные символы...
Кроме того, шестнадцатеричное кодирование ASCII (и неASCII) таблица символов ("отображение") не будет предсказуема, и это может измениться от шрифта до шрифта.
Следовательно во всех этих случаях Ваша команда sed не успешно выполнится - даже после распаковки PDF.
Вот пример для "строкового" Водяного знака, как это может появиться в PDF, созданном с LibreOffice:
56.8 726.989 Td /F2 16 Tf[<01>29<0203>-2<0405>6<06>-1<020507>]TJ
Я разделю для Вас, что это означает:
56.8 726.989 Td
: Td
оператор состоит в том, чтобы переместить текстовое расположение на странице; 56.8 726.989
x-/y-coordinates должны описать что точное положение.
/F2 16 Tf
: Tf
оператор состоит в том, чтобы установить определенный шрифт, а также его размер как в настоящее время активный; в этом случае это - шрифт, отмеченный в другом месте с именем /F2
и его размер должен быть 16
pt.
[<01>29<0203>-2<0405>6<06>-1<020507>]TJ
: TJ
оператор состоит в том, чтобы показать текст, одновременно допуская отдельное расположение глифа. Значение шестнадцатеричных отрывков, включенных угловыми скобками, следующее, согласно 'charmap' таблице, специфичной для того PDF и используемого шрифта:
<01>
: это 'W'
.
<0203>
: это 'at'
.
<0405>
: это 'er'
.
<06>
: это 'm'
.
<020507>
: это 'ark'
.
Числа, промежуточные эти шестнадцатеричные отрывки (29
, -2
, 6
и -1
) значения исправления, которые определяют отдельные интервалы различных символов.
Теперь Вы показываете мне, как Вы заменили бы ту "строку" чем-то еще при помощи sed
... Помните, Вы не знаете кодирование заранее, ни числа исправления размещения, когда Вы имеете дело с произвольным PDF. Можно только узнать путем открытия его исходного кода в редакторе и анализа его содержания.
Нет, нет никакой командной строки способа надежно удалить нежелательные строки из PDF!
Можно только сделать это если...
(a)... Вы - эксперт PDF, который квалифицирован для чтения исходного кода PDF;
(b)... Вы готовы проанализировать рассматриваемый файл PDF индивидуально;
(c)... Вы используете текстовый редактор для изменения его содержания после распаковки исходного кода PDF.
ПРЕДУПРЕЖДЕНИЕ: ответ, в настоящее время отмечаемый, как 'принято', возможно, работал на определенный PDF OP. Однако это не будет работать в общем случае. Не берите "рецепт", о котором это помещает объявление предоставленный!