Primefaces - Exibir arquivos PDF de uma pasta da rede

0 respostas
R

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

public List<Document> 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;
	}

Na pagina crio uma lista destes documentos e ao clicar em um deles ele deveria abrir uma página e exibir o documento

<ui:composition template="/template/layout_1.xhtml">
			<ui:define name="content">

			    <pe:documentViewer height="500" url="#{mbDocument.selectedDocument.location}"/>   
			    
			</ui:define>
		</ui:composition>

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

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;
	}
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

Criado 13 de novembro de 2015
Respostas 0
Participantes 1