boazsegev / combine_pdf

A Pure ruby library to merge PDF files, number pages and maybe more...
MIT License
733 stars 154 forks source link

combine_pdf/parser.rb:188:in `[]': no implicit conversion of Symbol into Integer (TypeError) #240

Open shahafabileah opened 2 months ago

shahafabileah commented 2 months ago

Thanks for all your work on CombindPDF. It's been great to use!

Here's one PDF that CombinePDF seems to have trouble parsing. AHN AGB.pdf

I try to parse the attached PDF like this:

CombinePDF.load(file_path, allow_optional_content: true)

I get this error:

/app/vendor/bundle/ruby/3.2.0/gems/combine_pdf-1.0.24/lib/combine_pdf/parser.rb:188:in `[]': no implicit conversion of Symbol into Integer (TypeError)

      @info_object = @root_object[:Info] ? (@root_object[:Info][:referenced_object] || @root_object[:Info]) : false
                                                                ^^^^^^^^^^^^^^^^^^

Looks like this is the line of code: https://github.com/boazsegev/combine_pdf/blob/fe11372f16dfd1a18d50f88280b1e4c102f178ce/lib/combine_pdf/parser.rb#L188

I gather that @root_object[:Info] is expected to be a hash, but it's not in this case.

I found that re-saving the document as a new PDF (in Preview on OSX) gets by this problem. I don't know if the original PDF is valid or not, i.e. if the issue is with the PDF or with the gem.