× К оглавлению На главную Об авторе

   Дата и время публикации:

Проблема и решениe

1. Проблема

Заключается в отсутствие прямых методов для вставки содержимого ячеек таблицы из файла PDF, как проводили ранее с из LibreOffice Writer в Calc, что и натолкнула явтора на поиски иных путей решения данной проблемы за пределам офисного набора LibreOffice. Результат попытки прямой вставки которого показан на рисунке 1.1

Рисунок 1.1

Одним из таких решением является проект tabula, который позволяет распознавать табличные данные в файлах PDF и экспортировать их в электронные таблицы LibreOffice c использованием универсального текстового формата CVS и сохранением структуры таблицы.

2. Решение

2.1 Загружаем файл tabula-jar.zipстраницы проекта, раскрываем командой unzip, как показано в дампе 2.1

Дамп 2.1

user@home:~$ wget \
> https://github.com/tabulapdf/tabula/releases/download/v1.2.1/tabula-jar-1.2.1.zip && \
> unzip tabula-jar-1.2.1.zip        
… 
Длина: 36799860 (35M) [application/octet-stream]
Сохранение в: «tabula-jar-1.2.1.zip»

tabula-jar-1.2.1.zip                                 100%[==================================================================================>]  35,09M  2,06MB/s    за 58s     

2020-04-27 14:12:27 (623 KB/s) - «tabula-jar-1.2.1.zip» сохранён [36799860/36799860]

Archive:  tabula-jar-1.2.1.zip
   creating: tabula/
  inflating: tabula/AUTHORS.txt      
  inflating: tabula/LICENSE.txt      
  inflating: tabula/README.txt       
  inflating: tabula/tabula.jar 
Примечание. Для обеспечения совместимости и удовлетворение некоторых зависимостей необходимо установить пакеты openjdk-11-jdk и unzip
     user@home:~$ sudo apt install openjdk-11-jdk unzip 
     

В данном примере приводится ссылка на файл tabula-jar.zip для версии 1.2.1, поэтому соотносите указанный путь https://github.com/tabulapdf/tabula/releases/download/... с текущей версией на странице проекта .

2.2 Затем, из распакованной директории tabula запускаем сей чудесный продукт, как показано в дампе 2.2

Дамп 2.1

user@home:~/.tabula$ java -Dfile.encoding=utf-8 -Xms256M -Xmx1024M -jar tabula/tabula.jar 
======================================================
Server now listening at: http://127.0.0.1:8080

You may now open a web browser to the above URL.
When you're done using the Tabula interface, you may
return to this window and press "Control-C" to close it.
======================================================

2020-04-27 14:15:57.281:INFO:oejsh.ContextHandler:main: Started o.e.j.w.WebAppContext@3108bc{/,file:/tmp/jetty-0.0.0.0-8080-tabula.jar-_-any-6153653854291570071.dir/webapp/,AVAILABLE}{file:/home/user/.tabula/tabula/tabula.jar}
2020-04-27 14:15:57.281:WARN:oejsh.RequestLogHandler:main: !RequestLog
2020-04-27 14:15:57.304:INFO:oejs.ServerConnector:main: Started ServerConnector@27b5d803{HTTP/1.1}{0.0.0.0:8080}
2020-04-27 14:15:57.305:INFO:oejs.Server:main: Started @7783ms    

Запуск которого должен заканчиваться подобным образом,как показано в дампе 2.2

2.2 В навигационной строке предпочитаемого браузера WEB http://127.0.0.1:8080/. При этом для автоматического запуска браузера, в аргументах запуска tabula/tabula.jar можно указать опцию Dtabula.openBrowser=true . Результат приведен на рисунке 2.1

Рисунок 2.1

2.3 Импортируем файл PDF нажатием кнопки "Browse" и загружаем файл в строку поиска, как показано на рисунке 2.2

Рисунок 2.2

По завершении процедуры ВВОДА импортируемого файла PDF нажать кнопку "Import", в результате отработки которой будет произведен её запуск, как показано на рисунке 2.3

Рисунок 2.3

В результате должны иметь следующую картинку в браузере, как показано на рисунке 2.4

Рисунок 2.4

В котором, с помощью удерживания левой кнопки мыши, выделена область таблицы, содержимое которой будет извлекаться позднее.

2.4 Для повторения выделения области таблицы на других страницах импортируемого файла PDF следут нажать кнопку "Repeat this Selection".

Рисунок 2.5

Как показано на рисунке 2.5, отмену выбранных областей табличных данных можно произвести путем нажатия на обведенный красным крестик, а для извлечения выделенных табличных данных нажимаем на зеленую большую кнопку "Preview & Export Extracted Data". В результате будет отображена форма просмотра табличных данных "Preview of Extracted Tabular Data", как показано на рисунке 2.6

Рисунок 2.6

2.5 Процедуру экспорта завершаем нажатием кнопки "Export", в результате чего извлекаемые данные окажутся в файле CSV, который можно открыть в электронных таблицах, например в LibreOffice Calc, как показано на рисунке 2.7

Рисунок 2.7

2.7 В диалоге "Text Import" устанавливаем символом разделителя — запятую (,), а кодировку — UTF-8, как показано на рисунке 2.7

Рисунок 2.8

2.8 Нажимаем кнопку "Ok" и наслаждаемся импортированными табличными данными из таблицы файла PDF в офисном наборе LibreOffice Calc, как показано на рисунке 2.9

Рисунок 2.9

 

3. Библиография

3.1 GitHub: tabulapdf/tabula

3.2 Datawrapper. How to extract data out of a PDF