как отобразить PDF документ на странице JSF в iFrame - PullRequest
5 голосов
/ 21 декабря 2009

Может ли кто-нибудь помочь мне в отображении PDF-документа на странице JSF только в iframe?

Заранее спасибо,

Суреш

Ответы [ 2 ]

11 голосов
/ 21 декабря 2009

Просто используйте <iframe> обычным способом:

<iframe src="/path/to/file.pdf"></iframe>

Если ваша проблема скорее в том, что файл PDF не находится в WebContent, а скорее находится где-то еще в файловой системе диска или даже в базе данных, то вам в основном нужен Servlet, который получает InputStream это и пишет это к OutputStream ответа:

response.reset();
response.setContentType("application/pdf");
response.setContentLength(file.length());
response.setHeader("Content-disposition", "inline; filename=\"" + file.getName() + "\"");
BufferedInputStream input = null;
BufferedOutputStream output = null;

try {
    input = new BufferedInputStream(new FileInputStream(file), DEFAULT_BUFFER_SIZE);
    output = new BufferedOutputStream(response.getOutputStream(), DEFAULT_BUFFER_SIZE);

    byte[] buffer = new byte[DEFAULT_BUFFER_SIZE];
    int length;
    while ((length = input.read(buffer)) > 0) {
        output.write(buffer, 0, length);
    }
} finally {
    close(output);
    close(input);
}

Таким образом, вы можете просто указать на этот сервлет :) Например ::1012*

<iframe src="/path/to/servlet/file.pdf"></iframe>

Полный пример подобного сервлета можно найти в этой статье .

<iframe> также отлично работает в JSF, при условии, что вы используете JSF 1.2 или новее. В JSF 1.1 и более ранних версиях вам нужно обернуть простые ванильные элементы HTML, такие как <iframe>, в <f:verbatim>, чтобы они были включены в дерево компонентов JSF, в противном случае они будут смещены в вывод:

<f:verbatim><iframe src="/path/to/servlet/file.pdf"></iframe></f:verbatim>
1 голос
/ 21 декабря 2009

Я рекомендую вам взглянуть на http://www.jpedal.org/.. Вы можете конвертировать каждую из страниц PDF в изображения и передавать их отдельно в браузер.

Этот подход более безопасен для вашего приложения, поскольку pdf никогда не отправляется клиенту.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...