Прочитать существующие поля в PDF - PullRequest
0 голосов
/ 05 октября 2010

Я создал PDF-файл с помощью iText.pdf - это файл формата A4, в котором определены некоторые поля.

    Paragraph paragraph = new Paragraph();
    Document document = new Document(PageSize.A4, 36, 72, 108, 180);
    PdfWriter.getInstance(document, new FileOutputStream("c:\\margin.pdf"));
    document.open();
    document.add(new Paragraph("Margin--->>roseinia.net"));
    document.close();

Теперь в другой программе я хочу прочитать поля выше pdf.Есть ли способ сделать это в iText или другой библиотеке?

Ответы [ 2 ]

2 голосов
/ 11 октября 2010

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

  • MediaBox - размер физического носителя, необходимый для страницы
  • CropBox - размер видимой страницы вviewer (по умолчанию MediaBox, если его нет)
  • BleedBox - граница отсечения для рендеринга в производственной среде (может включать пространство для сгибов)
  • TrimBox - предполагаемые размеры готовой страницы после обрезки
  • ArtBox - границы значимого содержимого страницы

ArtBox может быть тем, на что переводятся «поля».

0 голосов
/ 16 октября 2010

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

Однако есть несколько возможных решений проблемы:

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

new Meta("margins", buildStringOfMyMargins() );

Тогда вам придется снова анализировать строку.Помните, что вам нужно добавить метаинформацию перед тем, как вы doc.open ();

b) Напишите свой собственный ArtBox (как описано в постаменте).Это требует второго прохода с помощью PdfStamper для записи данных непосредственно в PdfDictionary

каждой страницы. C) Измените iText, добавив в него поле искусства, основанное на предоставленных вами полях.

2) Выполните анализ содержимогоместах.Текущий код com.itextpdf.text.pdf.parser. * Не обрабатывает штриховые рисунки, которые могут быть или не быть очень важными для вас.Вы должны будете определить ограничивающую рамку каждого элемента на данной странице и вычислить ограничивающую рамку, которая охватывает их все.Много работы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...