Я пытаюсь заменить текст в файле 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 (новая строка (данные))), «заявление» отображается как «ап) -4 (плика) -3 (тион», это причина, по которой мне не удалось заменить текст, любую идею или другой метод, который может достичь того, чего я пытаюсь достичь?
Здесь уже есть много вопросов по теме замены текста при переполнении стека. Если вы поищете их, вы увидите в ответах, что ваша проблема иллюстрирует одну из проблем, которые могут быть у вас.
Вы пробовали использовать Apache PDFBox? (я использовал его один раз, но только для создания PDF-файлов)
Возможный дубликат Как отключить замену текстовых символов их графическим изображением при печати PDF-файла?




Вы не сможете сделать это с помощью iText.
Поверьте, это одно из самых разочаровывающих открытий в отношении PDF-файлов: вы можете создавать их с помощью iText, но вы не можете вернуться позже и заменить текст чем-то другим, как в вашем примере.
Вы действительно мало что можете с этим поделать. Когда текст есть, вы не можете его изменить.
Несмотря на все это, вы обычно можете ДОБАВИТЬ нового содержимого (текст, изображения и т. д.) В существующий PDF. Итак ... если вы можете немного изменить вселенную и создать PDF-файл с пустым пространством правильного размера, вы можете вернуться позже и использовать класс PdfStamper для «штамповки» на другом слое графического содержимого.
Подробнее об этом можно найти в Документация iText и в этом прекрасном вопросе:
Как добавить контент в PDF с помощью iText PdfStamper
Иногда вы также можете встретить деловых людей (некоторые на уровне директора), которые спросят: «Что вы имеете в виду, что вы не можете изменять PDF-файлы? Мы занимаемся редактированием PDF-файлов в течение долгого времени!». А потом вы обнаружите, что они действительно использовали документы Microsoft Word, экспортированные и открытые с помощью бесплатного Adobe Reader. * Вздох *
PDF описывает графическое содержание страницы. Он должен быть в «окончательной форме». В зависимости от генерируемой программы текст не всегда хранится в легкодоступном виде. Например, вы видите информацию о кернинге. Вы мало что можете с этим поделать.