Как заменить текст в PDF, используя Java - PullRequest
0 голосов
/ 15 октября 2018

То, что я пытаюсь достичь, это заменить текст в PDF-файл.У меня есть следующий код:

PdfReader reader = new PdfReader("test.pdf");

PdfDictionary dict = reader.getPageN(1);
PdfObject object = dict.getDirectObject(PdfName.CONTENTS);

if (object instanceof PRStream)
{
    PRStream stream = (PRStream) object;
    byte[] data = PdfReader.getStreamBytes(stream);
    System.out.println(new String(data));
    stream.setData(new String(data).replace("application", "HELLO WORLD").getBytes());
}
PdfStamper stamper = new PdfStamper(reader, new FileOutputStream("test-output.pdf"));
stamper.close();
reader.close();

Когда я пытаюсь распечатать, чтобы увидеть данные (System.out.println (новая строка (данные))) , " application »отображается как« ap) -4 (plica) -3 (ion », поэтому я не смог заменить текстЛюбая идея или другой метод, который может достичь того, что я пытаюсь достичь?

1 Ответ

0 голосов
/ 15 октября 2018

Вы не сможете сделать это с помощью iText.

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

На самом деле вы ничего не можете с этим поделать.Если текст есть, вы не можете его изменить.


Все это, несмотря на это, обычно вы можете ДОБАВИТЬ новое содержимое (текст, изображения и т. Д.)) в существующий PDF.Так что ... если вы можете немного изменить юниверс и создать PDF-файл с пустым пространством правильного размера, вы можете вернуться позже и использовать класс PdfStamper для "печати" на другом слое графического содержимого.

Подробнее об этом можно прочитать в документации iText и в этом прекрасном вопросе:

Как добавить содержимое в PDF с помощью iText PdfStamper

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