如何将pdf表数据导出到csv?

时间:2016-03-14 09:27:31

标签: ruby ruby-on-rails-4 ruby-on-rails-3.2 pdf-reader

我使用的是Rails 4.2,Ruby 2.2,Gem:'pdf-reader'。

我的应用程序将读取包含表格数据的pdf文件,并将其导出为CSV,我已经完成了。当我将结果与表头和表内容匹配时,它们处于错误的位置,是的因为pdf表不是一个实际的表,我们需要在这背后写一些额外的逻辑,这是我要求的。

marks.pdf的内容类似如下所示

学校名称:ABC

计划:MicroBiology Year:Second

|滚动否|数学|
| ----------- | -------- |
1000001 | 65个
| ----------- | -------- |

任何帮助都将不胜感激。

下面给出了读取PDF并导出为CSV的工作代码

class ExportToCsv
  # method useful to export pdf to csv
  def convert_to_csv
    pdf_reader = PDF::Reader.new("public/marks.pdf")
     csv = CSV.open("output100.tsv","wb", {:col_sep => "\t"})
      data_header = ""
      pdf_reader.pages.each do |page|
         page.text.each_line do |line|
            # line with characters
            if /^[a-z|\s]*$/i=~line
              data_header = line.strip
            else
              # line with number
              data_row = line.split(/[0-9]/).first     
              csv_line = line.sub(data_row,'').strip.split(/[\(|\)]/)
              csv_line.unshift(data_row).unshift(data_header)
              csv << csv_line
            end
          end
        end
     end
  end

由于安全原因,我无法附上原始pdf,对不起。您可以按照以下屏幕截图生成pdf。

pdf的屏幕如下: enter image description here

生成的Csv的屏幕如下: enter image description here

所需的pdf应如下图所示 enter image description here

0 个答案:

没有答案