Комментарии 42
Разве можно редактировать текст в PDF? Разве это разрешено в бесплатных программах?
Спецификация не запрещает. Не очень просто, да, но возможно
В какой бесплатной программе можно редактировать текст в PDF?

Спасибо.
LibreOffice. На самом деле тут больше вопрос к самому файлу, текст ли там. Он может оказаться набором векторной графики или кучей жпегов. Но, имхо, если у вас в принципе возникла такая потребность, вы что-то делаете не так.

Увы, в LibreOffice едут шрифты, рамки, и все остальное. Пробовал редактировать примитивный PDF из двух страниц.


Понять смысл можно, но выглядит всё ужасно. До сих пор не существует приличной альтернативы Acrobat'у. :(

В статье, конечно, много передёргивание умолчаний, но в одном автор прав — в неудачных (и не очень редких) случаях "текст" в pdf может быть и не текст вовсе, а пачка ничего не значащих векторных примитивов.
Или как у нас в деревне был случай (какая-то дока от Samsung) — красиво расставленные отдельные слова. Смотрится как сплошной красивый текст, но сплошным текстом не является.
И там никакой акробат не поможет, ага.

Да, поэтому ABBYY в своём продукте наверное может сделать редактирование, так как они спецы по распознаванию текста. К сожалению, при всём желании их продуктом воспользоваться не могу, так как работаю в Linux, Windows у меня вообще нигде нет, даже в виртуалке.


PDF, кстати, может быть вообще набором отсканированных картинок.

Акробат, я так понимаю, распознает по технологии OCR любые примитивы и превратит в текст с абзацами.
Ну вот как он мне распознал Ваш вопрос с экрана, сохранённого в джипег:
Это абсолютно точная информация?
Или мысли вслух?

При этом Акробат назначает либо скрытый, либо автоматически созданный на основе трассировки шрифт в зависимости от режима OCR. Абзацы он не распознаёт, но понимает блоки текста со строками.

Это в статье написано. Вполне однозначно изложено в предпоследнем пункте: «Как отредактировать скан?»

P.S. Да простит меня фирма ABBYY, конечно же я имел в виду, что Finereader, а не Акробат, распознает и превратит. Прошу прощения за глупую описку.

Я однажды встретил PDF, где текст был набран побуквенно: т. е. бралась буква, например, «А» и размещалась по всей странице, потом бралась следующая, например, «Б» и т. д.

Увы, в LibreOffice едут шрифты, рамки, и все остальное. Пробовал редактировать примитивный PDF из двух страниц. Понять смысл можно, но выглядит всё ужасно. До сих пор не существует приличной альтернативы Acrobat'у. :(

Статья как раз о том, что ABBYY FineReader PDF умеет редактировать текст и делает это теперь не хуже Акробата. Попробуйте сами: триал можно скачать здесь

Да я понимаю, только нет у меня Windows. Не буду же я ее ставить ради необходимости несколько раз в год отредактировать PDF...

Беда в том, что FineReader ничуть не лучше Акробата. И там и там приходится искать ключ или номер. То и другое недоступно, если нет денег.
В какой бесплатной программе можно редактировать текст в PDF?

Раньше версия Master PDF Editor для Linux (но не для других ОС) была полностью бесплатна для использования, и последний бесплатный выпуск на данный момент всё ещё доступен с сайта производителя (ссылки в конце статьи). Конкретно эту версию не тестировал, но более старыми версиями пользуюсь много лет, хотя у меня довольно скромные запросы в плане функционала.
К сожалению, как и многие другие бесплатные приложения, не полностью, а «free for non-commercial use». Из полностью бесплатного на память приходит только векторный редактор Inkscape. Но он, в силу своей направленности, умеет работать только с отдельными страницами, поэтому приходилось на работе сочетать его с PDF Split & Merge. Конечно, не очень удобно, зато лицензионно чисто.
В бизнесе в пдф сохраняют тексту документов и презентаций для того, чтобы их не меняли. Если нужна возможность редактирования, то присылают исходные файлы. Бывают случае, когда исходники не сохранились, а нужно составить договор на основе текущего, но в таком случае нужен не параграф, а весь текст.
Вопрос — а для каких кейсов все-таки нужно редактирование абзацев?
PDF — это результат компиляции набора инструкций, отсюда и проблемы. Редактировать PDF так же сложно, как редактировать EXE.

Это не результат компиляции, а исходный код программы. PDF — это язык программирования PostScript, из которого убрали некоторые конструкции (например, условия и циклы). Что впрочем не делает работу с ним ни капли проще.

Вы уверены? Википедия, вот, приводит пример кода на этом языке:
%!PS
 /Courier             % name the desired font
 20 selectfont        % choose the size in points and establish 
                      % the font as the current one
 72 500 moveto        % position the current point at 
                      % coordinates 72, 500 (the origin is at the 
                      % lower-left corner of the page)
 (Hello world!) show  % stroke the text in parentheses
 showpage             % print all on the page

Не очень-то похоже на бинарное содержимое PDF.
Вы уверены? Википедия, вот, приводит пример кода на этом языке:

quwy Пример, который Вы привели, не похож на PDF. В PDF такие команды будут выглядеть так:


BT
72 500 TD
/F1 200 Tf
(Hello, world!) Tj
ET

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

Это не результат компиляции, а исходный код программы. PDF — это язык программирования PostScript, из которого убрали некоторые конструкции (например, условия и циклы). Что впрочем не делает работу с ним ни капли проще.

eumorozov Как выше сказано, это действительно не результат компиляции. Но отождествлять PDF с PostScript тоже неправильно. Нужно понимать, что PDF-документ — это набор объектов, расположенных на фиксированных местах (смещении, offset) в файле. Объекты могут иметь разные назначения. Один из объектов в документе — это контент страницы. Такой объект имеет поток stream, в котором записан поток команд. Вот как раз такой поток команд и определяет видимую часть страницы. Правила записи потока команд действительно взяты из PostScript и имеют много общего.

Должно быть, вы говорите про compressed PDF?

PereslavlFoto Нет. Возможно, вас смутила фраза про объекты и смещения? Это характерно абсолютно для всех PDF. Любой PDF можно представить и как compressed, и в обычном, читаемом виде (decompressed). Вопрос только в размере файла, который, очевидно, в сжатом состоянии будет меньше.

Да, меня смутила фраза про смещения. Потому что я правил PDF, стирая там отдельные команды и меняя bounding box.

А вот можно ли попросить вашего совета про устройство PDF файлов? Если да, я личное сообщение напишу.
А вот можно ли попросить вашего совета про устройство PDF файлов? Если да, я личное сообщение напишу.

PereslavlFoto мы планируем сделать отдельный пост и рассказать про устройство PDF. Если совет нужен сейчас, то пишите, конечно.

Мне доводилось редактировать PDF в текстовом редакторе. Проблемы не возникали.
Так я и EXE могу подредактировать в текстовом редакторе. Вопрос не в том, можно или нельзя, а в том, насколько это геморройно, особенно если нужно не просто букву заменить.
Мне доводилось редактировать PDF в текстовом редакторе. Проблемы не возникали.

PereslavlFoto Скорее всего, вы просто меняли один символ один на другой, и при этом сам документ не был заархивирован. Тогда вы понимаете, что редактируете, и как это сделать, не нарушив байтовое смещение PDF-объектов. Но это возможно в очень редких случаях...

Я брал decompressed PDF, стирал команды окрашивания векторных рисунков и исправлял bounding box. Байтовое смещение нарушалось, однако это не имело значения.

Когда работаешь с нулевым бюджетом и не можешь купить программы, остаётся только ghostscript и руки. :-)

A propos, не знаете ли, какой программой можно оставить в PDF векторный рисунок (обводку и заливку), однако убрать переключения цветов? Задача в том, чтобы переключать цвет не внутри PDF файла, а до того, как он начнёт выводиться. То есть вот в редакторе изначально была обводка и заливка чёрного цвета, а мне надо, чтобы была обводка и заливка незаданного цвета.

Спасибо.
Я брал decompressed PDF, стирал команды окрашивания векторных рисунков и исправлял bounding box. Байтовое смещение нарушалось, однако это не имело значения.

PereslavlFoto Большинство просмотрщиков умеют восстанавливать байтовые смещения объектов, если они не очень большие. При таком редактировании документа главное не перестараться...


A propos, не знаете ли, какой программой можно оставить в PDF векторный рисунок (обводку и заливку), однако убрать переключения цветов? Задача в том, чтобы переключать цвет не внутри PDF файла, а до того, как он начнёт выводиться. То есть вот в редакторе изначально была обводка и заливка чёрного цвета, а мне надо, чтобы была обводка и заливка незаданного цвета.

PereslavlFoto Уточните, что значит "чтобы была обводка и заливка незаданного цвета"? То есть она как бы была, но прозрачного цвета? Или все-таки ее не было? Или чтобы она была такого цвета, как векторные примитивы, нарисованные до нужного объекта? PDF дает простор для воображения.


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

Вообразим, что мы с вами начертили прямоугольник и залили его заливкой. Мы сделали это в векторном редакторе. Прямоугольник у нас красного цвета, заливка красного цвета. Мы вывели результат в PDF.

Теперь мы верстаем документ в pdfLaTeX и включаем в него эту PDF-иллюстрацию. Нам надо, чтобы цвет прямоугольника был не красный и чтобы цвет заливки был не красный. Нам надо, чтобы цвет этой монохромной иллюстрации задавался в вёрстке.

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

Иными словами, нужно, чтобы цвет был задан до включения PDF-иллюстрации и чтобы цвет никак не менялся внутри PDF-иллюстрации, не был задан в ней.

Я умею сделать это руками и не умею в программе…

(Кажется, это ваш вариант «как векторные примитивы, нарисованные до».)
Вообразим, что мы с вами начертили прямоугольник и залили его заливкой. Мы сделали это в векторном редакторе. Прямоугольник у нас красного цвета, заливка красного цвета. Мы вывели результат в PDF.

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


У Вас достаточно специфичный сценарий, вряд ли какая-то программа сможет делать именно то, что вам нужно: так как в PDF отсутствие цвета означает дефолтный черный цвет, многие редакторы все равно его явно запишут в поток команд.


Передадим вас запрос продуктовой команде FineReader.

PDF — это результат компиляции набора инструкций, отсюда и проблемы. Редактировать PDF так же сложно, как редактировать EXE.

quwy Тут вынуждены не согласиться. Результатом компиляции должен быть набор инструкций, который сможет выполнять какая-то программа (например, PDF-viewer). Но это не так. PDF-редакторы читают и пишут PDF, не переделывая его в промежуточный набор команд.

Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.