我找了很多东西。我别无选择,除非在这里问这个。你们知道一个在线转换器,它有API或Gem/s,可以将PDF转换成Excel或CSV文件吗?
我也不确定这里是不是问这个的最好的地方。
我的应用程序在Rails 4.2中。PDF文件包含一个头部和一个包含大约10列的大表。
更多信息:用户通过表单上传PDF,然后我需要抓取PDF解析到CSV并读取内容。我试着用阅读内容,但是结果并不是很有希望。
我使用了:freepdfconvert.com/pdf-excel,不幸的是,没有提供API。(我已经联系过他们)
样本PDF

这段代码将PDF转换成文本,这很方便。Gem:pdf-reader
def self.parse
reader = PDF::Reader.new("pdf_uploaded_by_user.pdf")
reader.pages.each do |page|
puts page.text
end
end现在,如果您检查附带的PDF示例,您将看到一些字段可能是空的,这意味着我不能用空格拆分文本行并将其放入数组中,因为我无法将数组映射到正确的字段。
谢谢。
发布于 2015-05-13 01:28:40
好吧,经过大量的研究,我找不到一个API,甚至一个合适的软件来完成它。我是怎么做到的。
我首先使用这个API pdftables将表从PDF中提取到表中。它很便宜。
然后将HTML表转换为CSV。
(这并不理想,但有效)
以下是代码:
require 'httmultiparty'
class PageTextReceiver
include HTTMultiParty
base_uri 'http://localhost:3000'
def run
response = PageTextReceiver.post('https://pdftables.com/api?key=myapikey', :query => { f: File.new("/path/to/pdf/uploaded_pdf.pdf", "r") })
File.open('/path/to/save/as/html/response.html', 'w') do |f|
f.puts response
end
end
def convert
f = File.open("/path/to/saved/html/response.html")
doc = Nokogiri::HTML(f)
csv = CSV.open("path/to/csv/t.csv", 'w',{:col_sep => ",", :quote_char => '\'', :force_quotes => true})
doc.xpath('//table/tr').each do |row|
tarray = []
row.xpath('td').each do |cell|
tarray << cell.text
end
csv << tarray
end
csv.close
end
end现在像这样运行它:
#> page = PageTextReceiver.new
#> page.run
#> page.convert这不是被重构的。只是概念的证明。你需要考虑性能。
我可以使用gem Sidekiq在后台运行它,并将结果移动到主线程。
发布于 2015-05-13 17:57:12
检查塔布拉-萃取器项目,并检查如何在纽约警察移动传票分析器和CompStat刑事投诉解析器这样的项目中使用它。
发布于 2015-05-12 06:57:06
Ryan在rails中介绍csv导出> http://railscasts.com/episodes/362-exporting-csv-and-excel,这可能会给您提供一些提示。
编辑:正如您现在提到的,您需要从上传的PDF中获取原始数据,您可以使用JavaScript读取PDF文件,并将数据填充到Ryan的导出方法中。阅读PDF的内容在以下问题中得到了很好的介绍:
我会想象这样的流动:
PDF new action
user uploads PDF
PDF show action
PDF is displayed
JavaScript reads PDF
JavaScript populates Ryan's raw data
Raw data is exported with PDF data included https://stackoverflow.com/questions/30183738
复制相似问题