Как изменить заголовок страницы браузера, на которую сервлет транслировал PDF? - PullRequest
10 голосов
/ 29 июня 2009

В моем веб-приложении на Java есть сервлет, который передает содержимое PDF обратно в браузер на основе параметра запроса.

например. пользователь нажимает на тег A с href «myApp / FetchPDFServlet? id = 123». Служба сопоставления сервлетов принимает запрос, передает данные PDF в ответ в виде приложения mime-типа / pdf, закрывает очищающие буферы.

Однако в строке заголовка браузера на странице, отображающей файл PDF, указано «FetchPDFServlet? Id = 123»

Как изменить заголовок, отображаемый браузером для страницы, отображающей PDF? Таким образом, название браузера - «Вот этот удивительный PDF», а не «FetchPDFServlet? Id = 123».

Возможно ли это вообще? Как лучше это сделать?

Ответы [ 5 ]

7 голосов
/ 29 июня 2009

Добавьте этот заголовок в ваш HttpServletResponse:

response.setHeader("Content-Disposition","inline; filename=Here is the Amazing PDF");

Я полагаю, что браузер поднимет его и использует в качестве заголовка окна.

4 голосов
/ 29 июня 2009

Вы можете отобразить PDF в iframe.
Как то так:

<html>
  <head>
      <title>Here is the amazing PDF</title>
      <style type="text/css">
       html, body, div, iframe { margin:0; padding:0; height:100%; }
       iframe { display:block; width:100%; border:none; }
      </style>
  </head>
  <body>
    <iframe width="100%" length="100%" src="myApp/FetchPDFServlet?id=123"/>
  </body>
</html>

Таким образом, вместо ссылки на документ PDF с использованием myApp/FetchPDFServlet?id=123, вы бы ссылались на что-то, что возвращает вышеуказанный HTML Например, страница JSP: myApp/ShowPDF.jsp?id=123&title=Here%20is%20the%20amazing%20PDF

2 голосов
/ 24 января 2011

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

По своему усмотрению я открою PDF-файл в новой вкладке, а затем поменяю его заголовок с исходной страницы.

$('#aa').click(function(){
    ref = window.open('resume.pdf','mywindow');     
    ref.onload = function(){
        ref.document.title="New Title";
    }
    return false;
    });
  });

Обратите внимание, что родительская и дочерняя страницы должны находиться в одном домене.

Я проверил это в нескольких браузерах, и вот результаты:

  • Chrome 10 - работает как удовольствие
  • Safari 5 - работает, но по умолчанию открывается в новом окне, а не на вкладке. Пользователь может изменить это, чтобы открыть все новые окна во вкладках.
  • IE 8 - не работает, как ожидалось: op
  • Firefox - работает как удовольствие
1 голос
/ 18 января 2017

Заголовок вкладки берется из метаданных документов PDF, в частности атрибута Title. Поэтому, если вы генерируете документ в своем приложении, в вашей библиотеке PDF должен быть способ установить метаданные документов.

0 голосов
/ 02 июля 2015

Я пробовал решение в Java, и оно сработало. Вы можете установить данные заголовки на других языках

response.setHeader("Content-Disposition","inline; filename=\"MyFile.pdf\"");
response.setContentType("application/pdf; name=\"MyFile.pdf\"");
response.getOutputStream().write(pdfAsBytesArray);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...