Просто используйте <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>