Как вы программно редактируете PDF-файлы? - PullRequest
4 голосов
/ 18 мая 2011

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

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

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

Спасибо!

Ответы [ 4 ]

4 голосов
/ 18 мая 2011

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

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

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

Например:

BT
/F1 10 Tf
1 0 0 1 30 720 Tm
(Here's some text, and you only want to REDACT that upper case "redact" over there)Tj
*
(This text is positioned relative to the previous line)Tj
1 0 0 1 30 650 Tm
(This text is positioned absolutely, starting at 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 All rights)5( reser)-9(ved)]TJ

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

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

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

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


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

2 голосов
/ 25 мая 2011

Вот веб-страница, которая рассказывает о том, что вам нужно сделать. Как уже упоминалось, вы должны делать это в 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

1 голос
/ 26 мая 2019

Вы можете использовать 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.

1 голос
/ 18 мая 2011

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

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

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

http://itextpdf.com/

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

...