Как отобразить PDF на странице JSF - PullRequest
1 голос
/ 21 апреля 2011

Я хочу отобразить файл PDF на своей странице JSF, я установил этот флажок , как отобразить документ PDF на странице jsf в iFrame , но я не хочу отображать его в iframe (поскольку он сгенерирует полосу прокрутки). Я просто хочу отобразить PDF на странице, как изображение, и могу указать ширину и высоту для него.

РЕДАКТИРОВАТЬ Привет BalusC. Я все еще не могу отобразить PDF. Вот мой код.

@WebServlet(name = "pdfHandler", urlPatterns = {"/pdfHandler/*"})
public class pdfHandler extends HttpServlet {

    private static final int DEFAULT_BUFFER_SIZE = 10240;

    protected void processRequest(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {

        String requestedFile = request.getPathInfo();
        File file = new File("/Users/KingdomHeart/Downloads/Test/pdf/" + requestedFile);
        response.reset();
        response.setContentType("application/pdf");
        response.setBufferSize(DEFAULT_BUFFER_SIZE);
        response.setHeader("Content-Length", String.valueOf(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{
            output.close();
            input.close();
        }
    }
    ...
}

Это все еще побуждает меня загрузить файл PDF. Файл PDF, который загружается на мой компьютер, является правильным файлом PDF, кстати. Можете ли вы определить что-то не так?

Ответы [ 4 ]

4 голосов
/ 21 апреля 2011

На самом деле другого пути нет (ожидайте от тега HTML <object>, который будет иметь те же "проблемы"), но вы можете просто присвоить <iframe> фиксированный размер и отключить прокрутку следующим образом:

<iframe src="foo.pdf" width="600" height="400" scrolling="no"></iframe>

Если вы также хотите скрыть границу (по умолчанию), добавьте также frameBorder="0".

2 голосов
/ 22 апреля 2011

Вы должны взглянуть на ICEpdf , он создает изображение на стороне сервера, дает масштабирование и другие элементы управления ( demo ).

1 голос
/ 21 апреля 2011

То, что вы хотите, невозможно.Браузеры не волшебны, они просто отображают различные виды документов, некоторые из которых (HTML) могут встраивать объекты, предоставляемые плагинами (flash, java), и другие документы в iframes (pdf, flash, html).Если вы хотите показать миниатюры в формате pdf, вам придется генерировать изображения на сервере.

1 голос
/ 21 апреля 2011

Попробуйте зайти в Adobe Reader, и в диалоговом окне «Параметры» есть веб-настройки, в которых можно указать, что вы всегда хотите, чтобы документы типа PDF открывались в браузере.

Это, к сожалению, исправление на стороне клиента и не учитывает другие программы чтения PDF.

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