Читать и открывать PDF в новом окне браузера с помощью JSF

Java / JSF

Я пытаюсь открыть PDF в новом окне браузера, а не загружать его, но при каждой попытке файл загружается с успехом, и он открывает новую вкладку только с приложением, а не с файлом PDF.

<p:commandLink title="report" target="_blank"
    action="#{managedBean.generateReport('P',true)}"
    ajax="false" immediate="false" >
</p:commandLink>

Управляемый компонент: генерировать отчеты о вызовах downloadFile

Параметр filePath ниже = /temp/doc/abc.pdf (chmod 777)

public static void downloadFile(String filePath) throws IOException{
    FacesContext context = FacesContext.getCurrentInstance();  
    HttpServletResponse response = (HttpServletResponse) context  
                         .getExternalContext().getResponse();  
    File file = new File(filePath);  
    if (!file.exists()) {  
      response.sendError(HttpServletResponse.SC_NOT_FOUND);  
      return;  
     }  
    response.reset();  
    response.setBufferSize(DEFAULT_BUFFER_SIZE);  
    response.setContentType("application/octet-stream");  
    response.setHeader("Content-Length", String.valueOf(file.length()));  
    response.setHeader("Content-Disposition", "attachment;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 
    {  
        input.close();  
        output.close();  
    }  
    context.responseComplete();
}

Мой плагин Chromium включен:

3 ответа

Решение

Как насчет простых лиц? media:

С витрины:

<p:media value="/resources/other/guide.pdf" width="100%" height="300px"/>  

Также вы можете поместить этот просмотрщик PDF в p:dialog здесь

Он должен быть установлен на тип содержимого PDF ("application/pdf"), если вы хотите, чтобы браузер знал, что это PDF. Вы устанавливаете его в "application/octet-stream".

На этой линии

response.setHeader("Content-Disposition", "attachment;filename=\""  + file.getName() + "\"");

заменить

response.setHeader("Content-Disposition", "filename=\""  + file.getName() + "\""); 

удалить ==> вложение; тогда Pdf откроется в новой вкладке

Другие вопросы по тегам