Pdf no banco

6 respostas
salmaox

Bom dia,

Fiz um cód que consigo inserir no postgres utilizando um campo do tipo bytea um pdf.

fiz bean está dessa forma.

private InputStream tutorial;

public InputStream getTutorial() {

return tutorial;

}

public void setTutorial(InputStream tutorial) {

this.tutorial = tutorial;

}

e cadastro o pdf da seguinte forma:

public boolean cadastraInstrumento(Instrumento ins) throws SQLException, FileNotFoundException {
try {
		File file = new File("c:\\experimento\\tutorial\\thies.pdf");  
        FileInputStream fis = new FileInputStream(file); 
		
			stmt = con.prepareStatement("INSERT INTO instrumento(nserie,fabricante,equipamento,especificacao,diretorio,tutorial)VALUES(?,?,?,?,?,?)");
			stmt.setString(1, ins.getNserie().toUpperCase());
			stmt.setString(2,ins.getFabricante().toUpperCase());
			stmt.setString(3,ins.getEquipamento().toUpperCase());
			stmt.setString(4,ins.getEspecificacao().toUpperCase());
			stmt.setString(5, ins.getDiretorio());
			s[b]tmt.setBinaryStream(6, fis, (int)file.length()); [/b]
			stmt.execute();
			desconecta();
			return true;
	} catch (SQLException e) {
		stmt = null;
		e.printStackTrace();
		return false;
	}
}

ele está cadastrando certo!
Gostaria de saber como faço pra dar um select no banco pra trazer o campo onde está o pdf e no JSTL conseguir abrir o pdf, segue abaixo o cód.

public Instrumento exibedadosinstrumento(int idinstrumento){

try {

String sql = SELECT * from instrumento WHERE idinstrumento = '” + idinstrumento + “’”;

<a href="//System.out.println">//System.out.println</a>(sql);

stmt = con.prepareStatement(sql);

rs = stmt.executeQuery();

while(rs.next()){

ins = new Instrumento();

ins.setIdinstrumento(rs.getInt(idinstrumento));

ins.setNserie(rs.getString(nserie));

ins.setFabricante(rs.getString(fabricante));

ins.setEquipamento(rs.getString(equipamento));

ins.setEspecificacao(rs.getString(especificacao));

ins.setDiretorio(rs.getString(diretorio));

ins.setTutorial(rs.getBinaryStream(tutorial));

}

} catch (SQLException e) {

e.printStackTrace();

}

return ins;

}
JSTL

<display:column sortable=“false” style=“width:30px” title=“Tutorial”>

<a href="<c:url value="${lista[item].tutorial}"></c:url>">

<img>

											  	

</display:column>

Ele imprimi apenas o endereço de memória. <img src="https://cdn.jsdelivr.net/gh/twitter/twemoji@14/assets/72x72/f.pngrowning.png?v=9" title=":frowning:" class="emoji" alt=":frowning:">

Muito Obrigado

6 Respostas

banger

kra pesquisei sobre o jstl por cima e entendi mais ou menos o que ele faiz, entaum seguinte:

  • verifica se vc declarou sua tag para utilizar o jtsl, no artigo que encontrei, e declarado uma tag que serve de ponte para as tags sun de jtsl.
  • para vc utilizar a leitura do pdf vc precisara declarar um tipo de variavel e para chamar o metodo da leitura de pdf vc utiliza a anterior, exemplo :
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %> // declara tag para utilização do JSTL
    < jsp:useBean id="agora" class="java.util.Date"> // pelo que entendi esta linha declara uma "variavel" e seu tipo
   <fmt:formatDate value="${agora}" /> // format date é um "metodo", e a variavel herda esse valor
  • entaum verifica se a logica segue esta ordem e se o pacote para abrir seu pdf está correta.

espero ter ajudado amigo

PS : vou pesquisar mais para ver se acho outras soluçoes ao seu problema.

salmaox

Ow amigão obrigado pela ajuda. Estou meio perdido rsrs

Então, eu declarei sim… segue abaixo

<%@ taglib uri=“http://displaytag.sf.net” prefix=“display”%>
<%@ taglib uri=“http://java.sun.com/jsp/jstl/core” prefix=“c”%>

banger

a biblioteca que vc está utilizando para abrir seu arquivo é essa core, se nao me mande o nome para pesquisar sobre ela, a core pelo que vi e para fazer laços e
modificar dados em memoria, nao sei se é a unica opção para abrir um pdf, vendo que pdf e tratado geralmente como uma imagem, li que o xml pode ser utilizado para abrir arquivos para leitura.

e qual o erro que é apresentado para vc??

salmaox

é verdade…preciso de uma biblioteca para abrir o pdf né.

O erro que dá é esse
HTTP Status 404 - /chuvaproject/java.io.ByteArrayInputStream@108c825

Me parece que ele acha o arquivo mas não abre, pois qnd eu passo o mouse sobre o link do pdf que quero abrir ele mostra o endereço de memória dele.

obrigado amigo.

banger

testa ai se der certo me avisa!!!

salmaox

kra não consegui…usei o import de imagem, xlm… e nada :frowning:

saca só esse link bacana que eu achei, mas mesmo com ele não obtive sucesso

http://www.servletsuite.com/jsp3.htm

abs,

Criado 14 de fevereiro de 2011
Ultima resposta 14 de fev. de 2011
Respostas 6
Participantes 2