Rails アプリで、Amazon S3 に保存した Word ファイルをconvertapiに送信して PDF に変換する作業を行っています。私はpaperclip gemを使用してファイルを管理し、curb gemを使用して実際のリクエストを作成しています。
# model with property has_attached_file :attachment
def convert_docx_to_pdf
base = "https://do.convertapi.com/Word2Pdf"
api_key = '*****'
file = open(attachment.url)
c = Curl::Easy.new(base)
c.multipart_form_post = true
c.http_post(
Curl::PostField.file('thing[file]', file.path),
Curl::PostField.content('ApiKey', api_key)
)
end
ここで縁石のドキュメントに従おうとしています。
これを Rails コンソールから実行すると、単純にtrue
. 結果のPDFをキャプチャしたいと思います。
(convertapi のテスト エンドポイント ツールでファイルを手動でアップロードすると、これが機能することを確認しました。)
更新 09.18.15
Jonas が提案した変更を実装しました。新しいコードは次のとおりです。
def convert_docx_to_pdf
base = "https://do.convertapi.com/Word2Pdf"
api_key = ENV['CONVERTAPI_API_KEY']
file = open(attachment.url)
Curl::Easy.new('https://do.convertapi.com/Word2Pdf') do |curl|
curl.multipart_form_post = true
curl.http_post(Curl::PostField.content('ApiKey', api_key), Curl::PostField.file('File', file.path))
return curl.body_str
end
end
まだ運がありません。ただ をcurl.body_str
返します"Bad Request"
。
( file.path = /var/folders/33/nzmm899s4jg21mzljmf9557c0000gn/T/open-uri20150918-13136-11z00lk
)