# Logstash read pdf by ruby-Filter

**URL:** <https://discuss.elastic.co/t/logstash-read-pdf-by-ruby-filter/253542>\
**Category:** Logstash\
**Created:** [October 28, 2020, 10:06am UTC](https://discuss.elastic.co/t/logstash-read-pdf-by-ruby-filter/253542 "2020-10-28T10:06:28Z")\
**Posts on this page:** 4\
**Page:** 1

<div class="post-metadata">

**Author:** ![xiaoping1993](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/xiaoping1993/32/77996_2.png) [@xiaoping1993](https://discuss.elastic.co/u/xiaoping1993)\
**Post date:** [October 28, 2020, 10:06am UTC](https://discuss.elastic.co/t/logstash-read-pdf-by-ruby-filter/253542/1 "2020-10-28T10:06:28Z")

</div>

I want use logstash to read the pdf、docx ....  
I think the ruby-Filter can solve the problem  
so I do some try:  
1）create a function pdf\_to\_text(pdf\_filename)  
require 'docsplit'  
def pdf\_to\_text(pdf\_filename)  
Docsplit.extract\_text([pdf\_filename], ocr: false, output: Dir.tmpdir)  
txt\_file = File.basename(pdf\_filename, File.extname(pdf\_filename)) + '.txt'  
txt\_filename = Dir.tmpdir + '/' + txt\_file  
extracted\_text = File.read(txt\_filename)  
File.delete(txt\_filename)  
extracted\_text  
end  
2）use the function  
pdf\_to\_text('C:/Ruby27-x64/sample2.pdf')  
but appear the below error  
Traceback (most recent call last):  
12: from C:/Ruby27-x64/bin/irb.cmd:31:in `<main>' 11: from C:/Ruby27-x64/bin/irb.cmd:31:in `load'  
10: from C:/Ruby27-x64/lib/ruby/gems/2.7.0/gems/irb-1.2.6/exe/irb:11:in `<top (required)>' 9: from (irb):10 8: from (irb):3:in `pdf\_to\_text'  
7: from C:/Ruby27-x64/lib/ruby/gems/2.7.0/gems/docsplit-0.7.6/lib/docsplit.rb:52:in `extract_text' 6: from C:/Ruby27-x64/lib/ruby/gems/2.7.0/gems/docsplit-0.7.6/lib/docsplit/text_extractor.rb:32:in `extract'  
5: from C:/Ruby27-x64/lib/ruby/gems/2.7.0/gems/docsplit-0.7.6/lib/docsplit/text\_extractor.rb:32:in `each' 4: from C:/Ruby27-x64/lib/ruby/gems/2.7.0/gems/docsplit-0.7.6/lib/docsplit/text_extractor.rb:38:in `block in extract'  
3: from C:/Ruby27-x64/lib/ruby/gems/2.7.0/gems/docsplit-0.7.6/lib/docsplit/text\_extractor.rb:54:in `extract_from_pdf' 2: from C:/Ruby27-x64/lib/ruby/gems/2.7.0/gems/docsplit-0.7.6/lib/docsplit/text_extractor.rb:108:in `extract\_full'  
1: from C:/Ruby27-x64/lib/ruby/gems/2.7.0/gems/docsplit-0.7.6/lib/docsplit/text\_extractor.rb:101:in `run' Traceback (most recent call last): 17: from C:/Ruby27-x64/bin/irb.cmd:31:in `'  
16: from C:/Ruby27-x64/bin/irb.cmd:31:in `load' 15: from C:/Ruby27-x64/lib/ruby/gems/2.7.0/gems/irb-1.2.6/exe/irb:11:in `\<top (required)\>'  
14: from C:/Ruby27-x64/lib/ruby/2.7.0/irb.rb:400:in `start' 13: from C:/Ruby27-x64/lib/ruby/2.7.0/irb.rb:471:in `run'  
12: from C:/Ruby27-x64/lib/ruby/2.7.0/irb.rb:471:in `catch' 11: from C:/Ruby27-x64/lib/ruby/2.7.0/irb.rb:472:in `block in run'  
10: from C:/Ruby27-x64/lib/ruby/2.7.0/irb.rb:537:in `eval_input' 9: from C:/Ruby27-x64/lib/ruby/2.7.0/irb/ruby-lex.rb:150:in `each\_top\_level\_statement'  
8: from C:/Ruby27-x64/lib/ruby/2.7.0/irb/ruby-lex.rb:150:in `catch' 7: from C:/Ruby27-x64/lib/ruby/2.7.0/irb/ruby-lex.rb:151:in `block in each\_top\_level\_statement'  
6: from C:/Ruby27-x64/lib/ruby/2.7.0/irb/ruby-lex.rb:151:in `loop' 5: from C:/Ruby27-x64/lib/ruby/2.7.0/irb/ruby-lex.rb:166:in `block (2 levels) in each\_top\_level\_statement'  
4: from C:/Ruby27-x64/lib/ruby/2.7.0/irb.rb:538:in `block in eval_input' 3: from C:/Ruby27-x64/lib/ruby/2.7.0/irb.rb:704:in `signal\_status'  
2: from C:/Ruby27-x64/lib/ruby/2.7.0/irb.rb:559:in `block (2 levels) in eval_input' 1: from C:/Ruby27-x64/lib/ruby/2.7.0/irb.rb:607:in `handle\_exception'  
C:/Ruby27-x64/lib/ruby/2.7.0/irb.rb:607:in `split': invalid byte sequence in UTF-8 (ArgumentError)

by a way:my system is window10 and the ruby version is 2.7.2p137

---

<div class="post-metadata">

**Author:** ![Wolfram\_Haussig](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/wolfram_haussig/32/70528_2.png) [@Wolfram\_Haussig](https://discuss.elastic.co/u/Wolfram_Haussig)\
**Post date:** [October 28, 2020, 12:14pm UTC](https://discuss.elastic.co/t/logstash-read-pdf-by-ruby-filter/253542/2 "2020-10-28T12:14:08Z")

</div>

Hi,

Welcome to this forum!

According to your trace this error is not from LogStash but from your local Ruby installation and the interactive shell, right? Did you install docsplit using `gem install docsplit`?

Also, please be aware that LogStash brings its own Ruby version which might be a different version and has its own gem store.

Best regards  
Wolfram

---

<div class="post-metadata">

**Author:** ![xiaoping1993](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/xiaoping1993/32/77996_2.png) [@xiaoping1993](https://discuss.elastic.co/u/xiaoping1993)\
**Post date:** [October 28, 2020, 12:24pm UTC](https://discuss.elastic.co/t/logstash-read-pdf-by-ruby-filter/253542/3 "2020-10-28T12:24:35Z")

</div>

yes,I try it on my local Ruby installation and the interactive shell

---

<div class="post-metadata">

**Author:** ![system](https://us1.discourse-cdn.com/elastic/original/3X/1/a/1ac57faf039f6b580b3f104ef42a2a89e41014de.png) [@system](https://discuss.elastic.co/u/system)\
**Post date:** [November 25, 2020, 12:24pm UTC](https://discuss.elastic.co/t/logstash-read-pdf-by-ruby-filter/253542/4 "2020-11-25T12:24:36Z")

</div>

This topic was automatically closed 28 days after the last reply. New replies are no longer allowed.
