Pessoal,
Tenho a seguinte situação:
Tenho um campo text no banco postgresql que contém o conteúdo de um campo textarea com fckeditor, ou seja, o conteúdo é HTML.
Após concluir o trabalho, queria pegar esse conteúdo do banco, transformar em pdf e inserir em outra coluna do tipo bytea (binário).
Peguei alguns exemplos usando iText e Flying-Saucer, mas não tô conseguindo criar esse pdf em memória e depois inserir no banco.
import java.io.ByteArrayInputStream;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.StringBufferInputStream;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import org.w3c.dom.Document;
import org.w3c.tidy.Tidy;
import org.xhtmlrenderer.pdf.ITextRenderer;
import br.com.itx.database.impl.ConnectionSql;
import br.com.itx.exception.UserException;
import br.com.itx.integration.AbstractConnector;
import br.com.itx.integration.DatabaseAliases;
import br.com.itx.integration.DatabaseHandler;
import br.com.itx.integration.InterfaceHeaders;
import br.com.itx.util.WIMap;
import com.itextpdf.text.DocumentException;
public class TransformarHtml2Pdf extends AbstractConnector {
DatabaseHandler dthd;
ConnectionSql csql;
Connection conn;
String query, conteudo;
ResultSet rset;
PreparedStatement pstm;
public void execute(WIMap arg0, DatabaseAliases arg1, InterfaceHeaders arg2) throws UserException {
try{
//Pega conexão do WI
dthd = arg1.get("adebd");
csql = (ConnectionSql) dthd.getDatabaseConnection();
conn = csql.getConnection();
//Prepara a consulta
query = "SELECT ARQUIVO FROM DOCUMENTO WHERE ID_DOCUMENTO = ?";
pstm = conn.prepareStatement(query);
pstm.setInt(1, 157); //Pega o id_documento como parâmetro
rset = pstm.executeQuery();
rset.next();
conteudo = rset.getString(1);
//Transforma HTML em PDF
StringBuffer buf = new StringBuffer(conteudo);
DocumentBuilder builder = DocumentBuilderFactory.newInstance().newDocumentBuilder();
Document doc = builder.parse(new StringBufferInputStream(buf.toString()));
ITextRenderer renderer = new ITextRenderer();
renderer.setDocument(doc, null);
renderer.layout();
#MINHA DÚVIDA ESTÁ AQUI, COMO PEGAR O CONTEÚDO HTML, TRANSFORMAR EM PDF E JOGAR NO BD.
} catch(Exception e){
e.printStackTrace();
}
}
}
Sds, Luciano.