Как вы программно редактируете PDF-файлы?

Adobe Acrobat имеет возможность редактировать PDF-файлы (то есть фактически удалять информацию, а не просто рисовать черный ящик поверх нее). Я хотел бы использовать эту функцию программно. Чтобы отредактировать с помощью графического интерфейса, выберите инструмент "Отметить для редактирования", нарисуйте его поверх текста, который нужно отредактировать, а затем "Применить изменения".

Есть ли способ сделать это программно, через AppleScript или каким-либо другим способом?

Я знаю (X,y) расположение текста, который нужно отредактировать.

Спасибо!

5 ответов

Решение

Чтобы правильно отредактировать PDF-файл, вам нужно изменить поток контента. Это очень сложно.

Если вы можете найти часть потока контента, которая рисует текст, который вы хотите удалить, вы на полпути.

Другая половина - это выяснение того, как изменить поток контента, чтобы не изменять остальную часть документа. Если следующий оператор рисования текста выполняется командой "tm" (установите текстовую матрицу, которая абсолютно позиционирует следующий фрагмент текста), это легко. Если нет... вы должны рассчитать точную ширину заменяемого текста (это могут сделать несколько различных библиотек PDF) и изменить команды рисования, чтобы пропустить такое количество материала.

Например:

BT
/ F1 10 Tf
1 0 0 1 30 720 Tm
(Вот некоторый текст, и вы хотите просто УДАЛИТЬ этот верхний регистр "редактировать" там)Tj
*
(Этот текст расположен относительно предыдущей строки)Tj
1 0 0 1 30 650 Tm
(Этот текст позиционируется абсолютно, начиная с 30, 650)Tj

Так что вам придется разбить это первым (...)Tj линия в (Here's some text, and you only want to)Tj, N 0 Td, а также (that upper case "redact" over there)Tj... где 'N' корректно регулирует положение следующей операции рисования текста так, что она попадает в ТОЧНО ТО ЖЕ ВРЕМЯ. Так что вам нужно знать точную ширину "УДАЛЕНО", используя ресурс шрифта /F1 (каким бы он ни был), размером до 10 точек.

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

(Это взято из первого текста, нарисованного в спецификации PDF)

[(Adobe Sys) 5 (t) 1 (ems Inc) 5 (orporated) 5 (20) 5 (08 \ 226 Все права)5( reser)-9(ved)]TJ

Чтобы правильно отредактировать "Incorporated", вам нужно определить, что он разбит на две строки, и отрегулировать расположение строки, следующей за ней, так, чтобы она находилась в точно том же месте.

И строки могут быть <DEADBEEF> шестнадцатеричные значения, а не (plain old ascii),

Получите идею? И я не раскрыл здесь все возможности, только самые распространенные.

Как я уже сказал: это очень сложно.


Есть плагин Acrobat под названием Appligent Redax (без подключения), который позволяет вам рисовать аннотации (или генерировать их с помощью шаблонов, регулярных выражений и т. Д.), А затем запускать их код для обработки редактирования. Должна быть возможность программно создавать свои аннотации и, возможно, даже активировать их плагин: JS в документе может запускать пункт меню.

Вы можете использовать GroupDocs.Redaction for .NET для программного редактирования текста в документах PDF. Вы можете выполнить точную фразу, с учетом регистра и редактирование регулярного выражения текста. Вот как вы можете выполнить точную редакцию фразы.

using (Document doc = Redactor.Load("D:\\candy.pdf"))
{
     doc.RedactWith(new ExactPhraseRedaction("candy", new ReplacementOptions("[redacted]")));
     // Save the document to "*_Redacted.*" file.
     doc.Save(new SaveOptions() { AddSuffix = true, RasterizeToPDF = false }); 
} 

Раскрытие информации: я работаю евангелистом разработчиков в GroupDocs.

Вот веб-страница, которая проходит через то, что вам нужно сделать. Как уже упоминалось, вы должны делать это в Javascript, так как это родной сценарий Acrobat.

http://acrobatusers.com/tutorials/2008/07/auto_redaction_with_javascript

Хотя я регулярно пользуюсь Acrobat, мне, как ни странно, никогда не приходилось писать его. Я проверил словарь для него, и похоже, что вам придется написать файл Javascript, сохранить его, а затем открыть его с помощью Applescript, если это то, что вы хотите сделать (скажем, как сервис).

tell application "Adobe Acrobat Professional"
   do script "this.info.title;"
end tell

Вот документация Adobe Javascript для Acrobat

http://livedocs.adobe.com/acrobat_sdk/9.1/Acrobat9_1_HTMLHelp/wwhelp/wwhimpl/common/html/wwhelp.htm?context=Acrobat9_HTMLHelp&file=JavaScript_SectionPage.70.1.html

В Adobe Acrobat вы можете сделать это с помощью ActionScript, который может быть вызван для ряда различных событий.

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

http://www.aspose.com/categories/.net-components/aspose.pdf-for-.net/default.aspx

http://www.aspose.com/categories/java-components/aspose.pdf-for-java/default.aspx

http://itextpdf.com/

iText - мой личный фаворит и стоит каждого пенни.

Редактирование PDF-файлов в целом является довольно сложной задачей.

Вы можете бесплатно редактировать PDF-страницы на doXiview (https://doxiview.cib.de). Опция редактирования находится справа.

Другой подход программно реализован с помощью набора инструментов CIB pdf (https://pdftoolbox.cib.de/) .

Другие вопросы по тегам