docverter的API是以curl格式提到的,如下所示
curl
http://c.docverter.com/convert
-F from=html
-F to=pdf
-F input_files[]=@<(echo hello)
API指出input_files[]
值应该是multipart/form-data file
上传,但在我的AngularJS应用程序中,我动态生成报告(在特定路由上),这意味着它不是可以使用文件上传控制上传的html文件。
我的问题可能有点模糊,因为通过查看docverter API,我无法知道什么代码在客户端上,什么代码在服务器上。
总的来说,我正在寻找一个解决方案,将生成的HTML(以及样式表)转换为PDF文件,然后将该PDF文件下载到浏览器。
在服务器端,我使用的是Node.js。如果你能澄清这种转换是如何发生的,我将不胜感激。
好的,这里是服务器端的修复程序,可以用docverter解决cors问题。
实际上,启动和运行它只需要很少的代码。
这些变化发生在lib/docverter-server/app.rb
中
class DocverterServer::App < Sinatra::Base
# added code starts here ==>
before do
headers 'Access-Control-Allow-Origin' => '*',
'Access-Control-Allow-Methods' => ['OPTIONS', 'GET', 'POST'] ,
'Access-Control-Allow-Headers' => 'Content-Type',
'Content-Disposition' => 'attachment',
'Content-Type' => 'application/octet-stream'
end
# <=== added ends starts here
set :show_exceptions, false
修复错误,使其不只是显示cors冲突
[500, {'Content-Type' => 'application/json', 'Access-Control-Allow-Origin' => '*'}, [MultiJson.dump(hash)]]
在lib/docverter-server/error-handler.rb
中
至于有角度的客户端=>我在这里用我自己的堆栈问题解决了这个问题:
使用angular.js使用$http或$resource上传文本blob作为文件-模仿curl风格的multipart/form上传