Ruby, ANSI C - работа с текстовыми форматами

Возникла потребность с обработкой pdf файлов. Работаю в LMDE 5 - Linux Mint, Ruby version 2.7.4.

Нужна информация про способы обработки текстовых файлов txt, pdf и других форматов стандартными средствами языка программирования Ruby. Меня интересует язык, а не фреймворк Rails!

Пробовал gem: pdf-reader 2.10.0., как самую популярную библиотеку. При установке данной библиотеки возникло предупреждение об отсутствии нужной версии gem 2.7.0, у меня версия 3.2.5

Я понимаю, что можно установить старую версию библиотеки и все заработает, но это означает, что pdf-reader давно не обновлялось и это беда со многими библиотеками для языка Ruby!

Поэтому у меня вопрос:

  • Способен ли Ruby стандартными средствами работать и редактировать формат pdf и другие? C .txt он работает…
  • Возможно ли обойтись без linux api? Или как написать библиотеку на Си и потом создать gem для Ruby?

Может кто писал свои библиотеки и импортировал их в скриптовые языки?

Благодарю за ответ.

pdf это не текстовый файл, это сложный формат для документов.

А что делать надо с ним?

А зачем оно тут? Ну разве что конечно все функции чтения/записи файлов в любом языке вызывают внутри api ОС.

Для пдф? Для начала изучить спецификацию, потом найти много свободных месяцев/лет.

Библиотеку для языка Ruby.

Причем тут язык, я спрашивал о том, что библиотека делать должна. Не важно какой язык, пдф это сложный формат и за пару дней норм библиотеку для работы с пдф не сделать.

Так а делать-то что именно надо с пдф?

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

Простой редактор, но желательно с графической оболочкой. Программа будет работать под линукс…

Это как?
У меня работает.

$ ruby -v
ruby 3.1.2p20 (2022-04-12 revision 4491bb740a) [x86_64-linux]
$ gem -v
3.3.7

$ gem install pdf-reader
Fetching pdf-reader-2.10.0.gem
Fetching ruby-rc4-0.1.5.gem
Fetching hashery-2.1.2.gem
Fetching Ascii85-1.1.0.gem
Fetching afm-0.2.2.gem
Fetching ttfunk-1.7.0.gem
Successfully installed ttfunk-1.7.0
Successfully installed ruby-rc4-0.1.5
Successfully installed hashery-2.1.2
Successfully installed Ascii85-1.1.0
Successfully installed afm-0.2.2
Successfully installed pdf-reader-2.10.0
Parsing documentation for ttfunk-1.7.0
Installing ri documentation for ttfunk-1.7.0
Parsing documentation for ruby-rc4-0.1.5
Installing ri documentation for ruby-rc4-0.1.5
Parsing documentation for hashery-2.1.2
Installing ri documentation for hashery-2.1.2
Parsing documentation for Ascii85-1.1.0
Installing ri documentation for Ascii85-1.1.0
Parsing documentation for afm-0.2.2
Installing ri documentation for afm-0.2.2
Parsing documentation for pdf-reader-2.10.0
Installing ri documentation for pdf-reader-2.10.0
Done installing documentation for ttfunk, ruby-rc4, hashery, Ascii85, afm, pdf-reader after 1 seconds
6 gems installed

$ cat script.rb 
require 'pdf-reader'

reader = PDF::Reader.new("document.pdf")

puts reader.pdf_version
puts reader.info
puts reader.metadata
puts reader.page_count

$ ruby script.rb 
1.4
{:Keywords=>"", :Subject=>"......., :CreationDate=>"D:20080111143811-05'00'""}
<?xpacket begin="" id="W5M0MpCehiHzreSzNTczkc9d"?>
<x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 4.0-c316 44.253921, Sun Oct 01 2006 17:14:39">
  .............
      <rdf:Description rdf:about=""
            xmlns:dc="http://purl.org/dc/elements/1.1/">
         <dc:format>application/pdf</dc:format>
         <dc:creator>
            <rdf:Seq>
               <rdf:li>David Flanagan</rdf:li>
            </rdf:Seq>
         </dc:creator>
         <dc:title>
            <rdf:Alt>
               <rdf:li xml:lang="x-default">The Ruby Programming Language</rdf:li>
            </rdf:Alt>
         </dc:title>
      </rdf:Description>
   </rdf:RDF>
</x:xmpmeta>
<?xpacket end="w"?>
446

Tags · yob/pdf-reader · GitHub
image

Здравствуйте, спасибо за ответ, буду пробовать… Проблема возникла с версией Ruby.
Установлена версия языка:

ruby 2.7.4p191 (2021-07-07 revision a21a3b7d23) [x86_64-linux-gnu].

gem -v 3.2.5

Скорее всего проблема была в этом, насчет обновления: - Да вы правы, я ошибся…
На систему я ставил Ruby простой командой: sudo apt install ruby-full.

Скажите пожалуйста, есть ли способ установки последней версии руби без rbenv и RVM?
Сам я имел дело только с Rvm, есть еще snap-пакеты, но не хотелось к ним прибегать.

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

Язык интересный, так что буду изучать.

Благодарю Вас, что не остались равнодушным и помогли с ответом.

Я бы asdf использовал. Что такое «Менеджер версий» | Hexlet Guides

Или если проект надолго, и в нем нужно что-то, кроме самого интерпретатора (веб-сервер, бд, …), то обычно стоит добавить докер со всем необходимым (или обертки над ним типа как ddev для php, не знаю есть ли подобное популярное для руби).

1 лайк

К сожалению, пока не получилось. После обновления терминала показывает дефолтную версию. Завтра буду пробовать…

Там надо asdf.sh загружать в .bashrc и т.п. как показано в инструкции по установке.