Bom dia meus caros,
Minha primeira vez aqui, sejam gentis… haha
É o seguinte, preciso fazer um site aqui na intranet, ele vai basicamente listar os arquivos pdf de uma pasta, e ao clicar no item, ele vai ser exibido dentro do site.
Consegui fazer o arquivo abrir em outra página, que em último caso é o que será apresentado, mas exibir na página ele não exibe.
Tentei com Media e com a extensão do primefaces - PDF Document Viewer
Bom, vamos Ao contexto;
Tenho a classe Document…
private int id;
private String desc;
private String location;
Eu listo os arquivos da pasta que eu quero e instancio os docs
[code]public List getDocs() {
docs = new ArrayList<Document>();
path = "endereço na rede";
File dir = new File(path);
if (dir.isDirectory()) {
files = dir.listFiles();
}
int length = files.length;
for (int i = 0; i < length; ++i) {
Document doc = new Document();
File f = files[i];
doc.setId(i);
doc.setDesc(f.getName());
doc.setLocation(f.getAbsolutePath());
docs.add(doc);
}
return docs;
}
[/code]
Na pagina crio uma lista destes documentos e ao clicar em um deles ele deveria abrir uma página e exibir o documento
[code] <ui:composition template="/template/layout_1.xhtml">
<ui:define name=“content”>
<pe:documentViewer height="500" url="#{mbDocument.selectedDocument.location}"/>
</ui:define>
</ui:composition>
[/code]
Bom, o problema está na hora de exibir os pdfs, se eu pedir para escrever o local ele escreve (Apenas para afirmar que não tem nada errado até esta parte)
tentei fazer o Stream desse arquivo, mas sem muito sucesso tbm
[code]public StreamedContent getPdf() {
ByteArrayOutputStream out = new ByteArrayOutputStream();
Path pdfPath = Paths.get(“caminho da rede”);
try {
byte[] pdfFile = Files.readAllBytes(pdfPath);
out.write(pdfFile, 0, pdfFile.length);
pdf = new DefaultStreamedContent(new ByteArrayInputStream(pdfFile), “application/pdf”);
} catch (IOException e) {
e.printStackTrace();
}
return pdf;
}[/code]
Com esse link funciona, só pra reafirmar que ele não está tendo problema em encontrar os arquivos.
<h:outputLink value="#{doc.location}"
styleClass="ui-button ui-widget ui-state-default ui-corner-all ui-button-text-only">
<span class="ui-button-text">Abrir arquivo</span>
</h:outputLink>
Eu acredito que terei que fazer o stream do arquivo a ser visto, mas não consegui ainda.
Alguma idéia?
Desde já agradeço a atenção de vocês