Замените заданные строки в PDF-файле, сохранив исходный стиль [закрыто]JAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Замените заданные строки в PDF-файле, сохранив исходный стиль [закрыто]

Сообщение Anonymous »


Рассмотрим следующую ситуацию; У меня есть PDF-файл, содержащий следующие строки -

строка 1: я люблю **писать** код строка 2: Я люблю писать *java*-код строка 3: Мне нравится писать Java-код, который заменяет некоторые тексты (подчеркивание) в PDF. В строке 1 write выделен жирным шрифтом Arial.
в строке 2 java выделен курсивом шрифтом Nunito.
в строке 3 texts подчеркнут шрифтом Times New Roman.

Я пытаюсь заменить
записать с проверкой
java с perl
тексты с словами
сохраняя одинаковый шрифт и стиль для каждого из них. Я пытался добиться этого с помощью библиотеки Itext7 java и просмотрел множество ресурсов по SO, блогов и книг, но ни один из них не соответствует моим точным требованиям.

На данный момент я могу заменить заданные слова в PDF-файле тем же шрифтом (если PDF-файл содержит только один шрифт). Хотя размер извлеченного шрифта отличается от оригинала, мне пришлось поставить его вручную.

public static void main(String[] args) выдает IOException { Читатель PdfReader = новый PdfReader (ИСТОЧНИК); PdfWriter Writer = новый PdfWriter (НАЗНАЧЕНИЕ); PdfDocument pdfDocument = новый PdfDocument (читатель, писатель); TextPropertiesExtractionStrategy ExtractionStrategy = новый TextPropertiesExtractionStrategy(); новый PdfCanvasProcessor(extractionStrategy).processPageContent(pdfDocument.getPage(1)); System.out.println("Имя шрифта: " + extractStrategy.getFontName()); System.out.println("Размер шрифта: " + extractStrategy.getFontSize()); System.out.println("Цвет текста: " + extractStrategy.getTextColor().getColorSpace().toString()); } частный статический класс TextPropertiesExtractionStrategy реализует ITextExtractionStrategy { частная строка имя_шрифта; частный плавающий шрифт FontSize; частный Цвет textColor; частный шрифт PdfFont; @Override public void eventOccurred (данные IEventData, тип EventType) { если (данные экземпляра TextRenderInfo) { TextRenderInfo textRenderInfo = (TextRenderInfo) данные; // Получаем информацию о шрифте шрифт = textRenderInfo.getFont(); имя_шрифта = шрифт.getFontProgram().getFontNames().getFontName(); FontSize = textRenderInfo.getFontSize(); // Получаем информацию о цвете текста textColor = textRenderInfo.getFillColor(); } } @Override public Set getSupportedEvents() { вернуть ноль; } @Override публичная строка getResultantText() { вернуть ноль; } публичная строка getFontName() { вернуть имя шрифта; } общедоступный float getFontSize() { вернуть размер шрифта; } общественный PdfFont getFont() { вернуть шрифт; } общественный цвет getTextColor() { вернуть текстЦвет; } } Я открыт для любых других библиотек или языков с открытым исходным кодом, а также для Python [я также пробовал MuPdf], если он решает эту конкретную проблему.
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

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

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «JAVA»