AJAX PDF скачать с jquery - PullRequest
       24

AJAX PDF скачать с jquery

2 голосов
/ 08 сентября 2011

Это то, что я хочу сделать:

Я хочу отправить HTTP-запрос на сервер, потенциально возвращая PDF-файл.Но сервер также может просто вернуть код ошибки (файл PDF недоступен, файл PDF недействителен, система PDF отключена и т. Д.).Когда я получаю PDF, я хотел бы открыть PDF и обновить страницу, которая загрузила PDF, потому что PDF тогда помечен как «прочитанный».Когда я получаю код ошибки (или тайм-аут), я бы хотел перенаправить страницу на экран ошибок.Загрузка Google Chrome работает аналогично:

http://www.google.com/chrome/eula.html?hl=en&platform=win

Это то, чего я не хочу делать:

По соображениям производительности я не хочуотправьте два запроса, как предложено в этом вопросе здесь:

Загрузите и откройте файл PDF, используя Ajax

Два запроса могут означать:

  1. Makeзапросить PDF и вернуть код, чтобы указать, доступен ли PDF или нет.Если недоступно, немедленно отобразите страницу с ошибкой
  2. Если она доступна, откройте окно и снова запросите PDF в этом окне и отобразите его.

Это дорого, потому что в PDF естьбыть доступным через удаленные системы.Я не хочу получать доступ к PDF-ресурсу дважды.Другое решение, включающее два запроса:

  1. Сделайте запрос на PDF и получите код ошибки или временный URL-адрес, где PDF-файл кэшируется.В случае ошибки немедленно отобразите страницу ошибки
  2. Если файл PDF доступен, откройте окно, в котором отображается кэшированный PDF.

Для этого потребуется довольно большой кэш для

* 1033 в формате PDF * Это может быть интересное руководство:

Я нашел этот вопрос здесь, давая мне некоторую информацию о том, как я могу загрузить двоичные данные и сделать их доступными в JavaScript в виде двоичных данных:

Есть ли способ прочитать двоичные данные в JavaScript?

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

Итак, вопрос:

Можно ли загрузить двоичные данные и открыть их, как обычный документиз JavaScript?Если нет, я кэширую документ в каком-либо контейнере управляемой памяти в Weblogic и просто надеюсь, что это не убьет нашу систему.Пожалуйста, отвечайте только:

  • Если вы точно знаете, это невозможно сделать (некоторые ссылки объясняют, почему было бы неплохо)
  • Если вы знаете как это сделать
  • Если у вас другое решение, которое примерно выполняет то, что я хочу сделать (не выдавая два запроса)

1 Ответ

3 голосов
/ 12 февраля 2012

Реализованное решение "старой школы" работает следующим образом:

  1. Клиент JavaScript отправляет AJAX-запрос на сервер для «подготовки» документа PDF
  2. Сервер отвечает любым из этих трех сообщений:
    • а) Документ доступен по адресу http://www.example.com/doc.pdf
    • б) Документ недоступен
    • c) Документ «подготовлен» (т. Е. Клиент должен ждать)
  3. Клиент JavaScript затем реагирует так:
    • а) Открыть возвращенный URL в новом окне, обновить текущее окно через 5 секунд
    • б) Текущее окно перенаправлено на экран ошибки
    • в) Текущее окно остается неизменным, и реализован опрос AJAX для повторения шага 2
...