Как читать .pdf-файлы в Java?

Модератор: Модераторы разделов

Shushandr
Сообщения: 86
ОС: Gentoo

Как читать .pdf-файлы в Java?

Сообщение Shushandr »

Вот некоторые популярные открытые библиотеки для работы с PDF-файлами в Java:

OpenPDF: это свободная альтернатива iText, которая предоставляет API для создания и изменения PDF-документов.

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

PDF Clown: Эта библиотека предоставляет средства для чтения и записи PDF-файлов. Она поддерживает множество функций PDF, включая формы, ярлыки и встраиваемые шрифты. PDF Clown

iText: одна из наиболее мощных библиотек для работы с PDF в Java. Она позволяет создавать, изменять и извлекать информацию из PDF-документов. Однако, стоит отметить, что iText является коммерческой библиотекой, и для ее использования требуется приобрести лицензию.
Какие библиотеки стоит начать изучать в первую очередь? И почему?

Как (при помощи какой библиотеки) извлекает текст из .pdf поисковый движок lucene?

Учитывая, что lucene и pdfbox относятся оба к Apache Foundation, то наверное они друг о друге должны знать

Предлагают пробовать что-то такое:

Код: Выделить всё

import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.text.PDFTextStripper;

public class PdfReader {
   public String readPdf(String filePath) throws IOException {
       PDDocument document = PDDocument.load(new File(filePath));
       PDFTextStripper pdfStripper = new PDFTextStripper();
       String text = pdfStripper.getText(document);
       document.close();
       return text;
   }
}
Спасибо сказали:
Аватара пользователя
Bizdelnick
Модератор
Сообщения: 20936
Статус: nulla salus bello
ОС: Debian GNU/Linux

Re: Как читать .pdf-файлы в Java?

Сообщение Bizdelnick »

Shushandr писал:
10.01.2024 06:07
Какие библиотеки стоит начать изучать в первую очередь? И почему?
Идёте на их сайты, находите репозитории с исходниками. Видите, что PDFClown не разрабатывается с 2015 года, сразу отбрасываете этот вариант. OpenPDF и PDFBox обе довольно активны. Смотрите на объём кода и количество зависимостей, видите, что PDFBox заметно жирнее. Дальше смотрите на API: если OpenPDF умеет делать всё, что Вам надо, берёте её, если нет — тогда PDFBox.
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:
Shushandr
Сообщения: 86
ОС: Gentoo

Re: Как читать .pdf-файлы в Java?

Сообщение Shushandr »

Bizdelnick писал:
10.01.2024 13:55
сразу отбрасываете этот вариант
Смотрите, есть ли для неё пакет в операционке:
http://gpo.zugaina.org/Search?search=openpdf
нету. Отбрасываете и этот вариант,

и остаётся только:
https://packages.gentoo.org/packages/dev-java/pdfbox

Довольно много чего тащит:

Код: Выделить всё

[ebuild  N     ] dev-java/bcprov-1.76::gentoo  USE="-doc -source -test" 30 525 KiB
[ebuild  N     ] dev-java/jakarta-activation-1.2.2-r1:1::gentoo  USE="-doc -source" 0 KiB
[ebuild  N     ] dev-java/javax-servlet-api-2.5:2.5::gentoo  USE="-doc -source" 155 KiB
[ebuild  N     ] dev-java/commons-logging-1.3.0_pre20230319::gentoo  USE="-doc -log4j -source -test" 181 KiB
[ebuild  N     ] dev-java/bcutil-1.76::gentoo  USE="-doc -source -test" 0 KiB
[ebuild  N     ] dev-java/javax-mail-1.6.7-r1::gentoo  USE="-doc -source -test" 1 811 KiB
[ebuild  N     ] dev-java/fontbox-2.0.27::gentoo  USE="-doc -source -test" 15 402 KiB
[ebuild  N     ] dev-java/bcpkix-1.76::gentoo  USE="-doc -source -test" 0 KiB
[ebuild  N     ] dev-java/bcmail-1.76::gentoo  USE="-doc -source -test" 0 KiB
[ebuild  N     ] dev-java/pdfbox-2.0.27::gentoo  USE="tools -doc -source -test" 0 KiB
Ставит файлы

Код: Выделить всё

# equery files dev-java/pdfbox
 * Searching for pdfbox in dev-java ...
 * Contents of dev-java/pdfbox-2.0.27:
/usr
/usr/bin
/usr/bin/pdfbox
/usr/share
/usr/share/doc
/usr/share/doc/pdfbox-2.0.27
/usr/share/doc/pdfbox-2.0.27/NOTICE.txt.bz2
/usr/share/doc/pdfbox-2.0.27/README.md.bz2
/usr/share/doc/pdfbox-2.0.27/RELEASE-NOTES.txt.bz2
/usr/share/pdfbox
/usr/share/pdfbox/lib
/usr/share/pdfbox/lib/pdfbox-debugger.jar
/usr/share/pdfbox/lib/pdfbox-tools.jar
/usr/share/pdfbox/lib/pdfbox.jar
/usr/share/pdfbox/package.env
Если собрать с USE="doc" то ещё устанавливает директорию

Код: Выделить всё

/usr/share/doc/pdfbox-2.0.27/html/api
с файлом index.html
Последний раз редактировалось Shushandr 10.01.2024 19:41, всего редактировалось 2 раза.
Спасибо сказали:
Аватара пользователя
Bizdelnick
Модератор
Сообщения: 20936
Статус: nulla salus bello
ОС: Debian GNU/Linux

Re: Как читать .pdf-файлы в Java?

Сообщение Bizdelnick »

Shushandr писал:
10.01.2024 16:45
Смотрите, есть ли для неё пакет в операционке:
http://gpo.zugaina.org/Search?search=openpdf
нету. Отбрасываете и этот вариант,
Ну не знаю, как конкретно в Gentoo, а вообще в большинстве дистрибутивов с пакетированием java-софта обстоит крайне плохо, так что я б на это особо не ориентировался. Тем более что в java-мире, как я разумею, принято использовать всякие мавены-шмавены и грейдлы-…, которым глубоко плевать, что есть в операционке. То, что pdfbox есть в репе, а openpdf — нет, говорит скорее о том, что pdfbox старее, а не о каких-то качественных характеристиках.
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали: