2015-11-28 2 views
1

API из docverter упоминается в завиток формате, как показано нижеКак использовать Docverter в AngularJS/NodeJS конвертировать GENERATED HTML в PDF для скачивания

curl \ 
    http://c.docverter.com/convert \ 
    -F from=html \ 
    -F to=pdf \ 
    -F input_files[][email protected]<(echo hello) 

API состояний, input_files[] значение должно быть загрузки multipart/form-data file, но в моем Приложение AngularJS, я динамически генерирую отчет (по определенному маршруту), что означает, что это не файл html, который можно загрузить с помощью управления загрузкой файлов.

Мой вопрос может быть немного неопределенным, потому что, глядя на docverter API, я не могу узнать, какой код идет на клиентском компьютере и что происходит на сервере.

В целом я ищу решение, которое преобразует сгенерированный HTML (вместе с таблицей стилей) в файл PDF, и этот файл PDF затем загружается в браузер.

На стороне сервера я использую Node.js. Цените, если вы можете обеспечить ясность в отношении того, как это преобразование происходит.

+0

любая удача с этим? – unsalted

+0

Нет. В конце концов я бросил его и использовал phantomjs на стороне сервера для преобразования html в pdf. Дайте мне знать, если вы хотите это знать. –

+1

Я нахожусь в миссии, чтобы получить эту обработку ... и без промежуточного сервера. Я избегаю метода phantomjs, потому что это тяжелая серверная сторона и решает только PDF. Мне также нужны docx и rtf. – unsalted

ответ

0

Хорошо, это исправление на стороне сервера, чтобы получить проблемы с cors, обработанные с помощью docverter.

На самом деле это очень маленький код для его запуска.

Эти изменения происходят в 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 в

Что касается угловой стороне клиента = > Я документирую это исправление с моим собственным вопросом стека здесь:

uploading text blob as file using $http or $resource with angular.js - mimicking curl style multipart/form upload

+0

Спасибо за ваши замечательные усилия. На данный момент я собираюсь придерживаться phantomjs, но определенно попробую ваше решение в связанном вопросе. В ближайшее время мне понадобится преобразование docx. Большое спасибо, я отмечаю это как принятый ответ, поскольку он дал мне направление, множество полезных понятий о FormData и Blob и решении. –