2016-06-30 1 views
0

그래서 URL을 이미지로 변환하고 문서로 다운로드하고 있습니다. 파일은 .jpg 또는 .pdf 일 수 있습니다. 나는 성공적으로 pdf를 다운로드 할 수 있고 거기에 pdf (메모리의 형태로)에 뭔가가 있지만 pdf를 열려고 할 때, 어도비 독자는 그것을 인식하지 못하고 부러진 것으로 간주한다. 여기 Ruby, CSV 및 pdf의

는 URL 중 하나에 대한 링크입니다 - http://www.finfo.se/www.artdb.finfo.se/cgi-bin/lankkod.dll/lev?knr=7770566&art=001317514&typ=PI

을 그리고 여기에 코드 =>

require 'open-uri' 
require 'tempfile' 
require 'uri' 
require 'csv' 

DOWNLOAD_DIR = "#{Dir.pwd}/PI/" 
CSV_FILE = "#{Dir.pwd}/konvertera4.csv" 

def downloadFile(id, url, format) 

    begin 
    open("#{DOWNLOAD_DIR}#{id}.#{format}", "w") do |file| 
     file << open(url).read 
     puts "Successfully downloaded #{url} to #{DOWNLOAD_DIR}#{id}.#{format}" 
    end 
    rescue Exception => e 
    puts "#{e} #{url}" 
    end 
end 


CSV.foreach(CSV_FILE, headers: true, col_sep: ";") do |row| 
    puts row 
    next unless row[0] && row[1] 
    id = row[0] 
    format = row[1].match(/PI\.(.+)$/)&.captures.first 
    puts format 
    #format = "pdf" 
    #format = row[1].match(/BD\.(.+)$/)&.captures.first 
    url = row[1].gsub ".pdf", "" 
    downloadFile(id, url, format) 
end 
+0

링크 된 PDF가 부서지기로되어 있나? 내가 열 수 있기 때문에. – Stefan

+0

그게 문제 야. URL은 완벽하게 잘 작동합니다. 이미 2000 개의 URL을 변환했지만, 아무데도이 파일이 손상되거나 손상되었습니다. 나는 그것이 왜 효과가 없는지 알아낼 수 없다. –

답변

0

w 대신 WB를 사용해보십시오 :

open("#{DOWNLOAD_DIR}#{id}.#{format}", "wb") 
+0

또한 Linux에서 작업하는 경우 다음을 사용하여 훨씬 간단하게 다운로드 할 수 있습니다.'wget # {url}' – SickLickWill

+0

이 모든 것이 해결 되었으니 정말 고마워요. 한 글자가 모든 것을 바꿀 것이라고 생각하십시오. 너는 나에게 큰 시간을 절약했다. <3 –