Prezados,
Tenho o seguinte código que consegui fazer com ajuda de posts anteriores, agora surgiu outro problema, o código html que eu tenho não simples, na realidade, é o código gerado pelo FCKEditor, então, ao rodar essa classe abaixo como exemplo acontece erros quando o HTML é grande, para trechos simples funciona numa boa.
package br.jus.tjba;
import java.io.ByteArrayOutputStream;
import java.io.StringBufferInputStream;
import java.sql.Connection;
import java.sql.DriverManager;
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.xhtmlrenderer.pdf.ITextRenderer;
import br.com.itx.database.impl.ConnectionSql;
import br.com.itx.integration.DatabaseHandler;
public class TransformarHtml2PdfMain {
public static void main(String args[]){
String query, conteudo;
Connection con;
ResultSet rset;
PreparedStatement pstm;
ITextRenderer renderer = new ITextRenderer();
ByteArrayOutputStream out;
StringBuffer buf;
DocumentBuilder builder;
Document doc;
try {
Class.forName("org.postgresql.Driver");
con = DriverManager.getConnection("jdbc:postgresql://10.10.2.191:5432/addb","addbuser","teste01");
//Prepara a consulta
query = "SELECT ARQUIVO FROM DOCUMENTO WHERE ID_DOCUMENTO = ?"; // a coluna arquivo é o html
pstm = con.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
out = new ByteArrayOutputStream();
buf = new StringBuffer(conteudo);
builder = DocumentBuilderFactory.newInstance().newDocumentBuilder();
doc = builder.parse(new StringBufferInputStream(buf.toString()));
renderer.setDocument(doc, null);
renderer.layout();
renderer.createPDF(out);
byte[] content = out.toByteArray();
query = "UPDATE DOCUMENTO SET BINARIO = ? WHERE ID_DOCUMENTO = ?";
pstm = con.prepareStatement(query);
pstm.setBytes(1, content);
pstm.setInt(2, 157); //Pega o id_documento como parâmetro
pstm.executeUpdate();
rset.close();
pstm.close();
con.close();
} catch(Exception e){
e.printStackTrace();
}
}
}
Exemplos de erro:
[color=red][Fatal Error] :1:62: White spaces are required between publicId and systemId.
org.xml.sax.SAXParseException: White spaces are required between publicId and systemId.
[/color]
Para o código abaixo:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1" />
<LINK REL="StyleSheet" TYPE="text/css" HREF="/ad/css/page.css" />
<META HTTP-EQUIV="pragma" CONTENT="no-cache" />
<META HTTP-EQUIV="expires" CONTENT="0" />
<META HTTP-EQUIV="cache-control" CONTENT="no-cache" />
<TITLE>TRIBUNAL DE JUSTIÇA DA BAHIA</TITLE>
</HEAD>
<body>
<table border="0" cellpadding="0" cellspacing="0" width="700">
<tr>
<td width="700" align="left">
<table border="0" cellpadding="0" cellspacing="0" width="700" align="center">
<tr>
<td width="700" align="center">
<img >
</td>
</tr>
<tr>
<td class="" width="700" align="center">
<b>PODER JUDICIÁRIO <BR> Tribunal de Justiça do Estado da Bahia <BR> GABINETE DES. JOSÉ OLEGÁRIO </b>
</td>
</tr>
<tr>
<td colspan="2" class="" height="15" width="700"><hr></td>
</tr>
</table>
<BR><BR>
<table border="0" cellpadding="0" cellspacing="0">
<tr>
<td align="left">
<b>4a. CÂMARA CÍVEL<BR>
Embargos de Declaração Nº: 0045076-88.2007.805.0001-1<BR></b>
</td>
</tr>
</table>
<table border="0" cellpadding="0" cellspacing="0">
<tr>
<td class="tituloPagina">
<table cellpadding='2' cellspacing='0' style='width:100%;'>
<tr>
<td><B>EMBARGANTE: MARIA AUGUSTA DOS SANTOS</B></td>
</tr></table>
<table cellpadding='2' cellspacing='0' style='width:100%;'>
<tr>
<td><B>ADVOGADO: DILSON LUIZ ALVES DE LIMA </B></td>
</tr></table>
<table cellpadding='2' cellspacing='0' style='width:100%;'>
<tr>
<td><B>EMBARGADO: ESTADO DA BAHIA</B></td>
</tr></table>
<table cellpadding='2' cellspacing='0' style='width:100%;'>
<tr>
<td><B>PROCURADOR DO ESTADO: DILSON LUIZ ALVES DE LIMA</B></td>
</tr></table>
<table cellpadding='2' cellspacing='0' style='width:100%;'>
<tr><td colspan=10 align='center'></td></tr>
</table>
<B>RELATOR: DESEMBARGADOR JOSÉ OLEGARIO MONÇÃO CALDAS</B>
<BR><HR style="width:700">
</td>
</tr>
</table>
<BR>
<table border="0" cellpadding="0" cellspacing="0">
<tr>
<td>
<center><b>JULGAMENTO</b></center><BR> <BR>
</td>
</tr>
<tr>
<td>
<p ><font face="Arial, sans-serif"><font size="3"><strong>EMBARGOS DE DECLARAÇÃO EM APELAÇÃO CÍVEL. INEXISTÊNCIA DE CONTRADIÇÃO, OBSCURIDADE OU OMISSÃO NO ARESTO IMPUGNADO.</strong></font></font></p>
<p ><font face="Arial, sans-serif"><font size="3"><strong>O cabimento de embargos de declaração limita-se às hipóteses elencadas pelo art. 535 do CPC. Imprescindível, assim, a ocorrência de obscuridade, contradição ou omissão na decisão impugnada.</strong></font></font></p>
<p ><font face="Arial, sans-serif"><font size="3"><strong>EMBARGOS DE DECLARAÇÃO NÃO-ACOLHIDOS.</strong></font></font></p>
<BR><BR><BR>
<h1 class="western" lang="pt-BR" style="TEXT-DECORATION: none" align="center"><font color="#000000"><font face="Arial, sans-serif"><font size="5"><strong>ACÓRDÃO</strong></font></font></font></h1>
<p ><br />
</p>
<p ><font color="#000000"><font face="Arial, sans-serif"><font size="3"><span lang="pt-BR"><span style="FONT-WEIGHT: normal">Vistos, relatados e discutidos estes autos de E</span></span></font></font></font><strong><font color="#000000"><font face="Arial, sans-serif"><font size="3"><span lang="pt-BR"><span style="FONT-WEIGHT: normal">mbargos</span></span></font></font></font></strong><font color="#000000"><font face="Arial, sans-serif"><font size="3"><span lang="pt-BR"><span style="FONT-WEIGHT: normal"> de D</span></span></font></font></font><strong><font color="#000000"><font face="Arial, sans-serif"><font size="3"><span lang="pt-BR"><span style="FONT-WEIGHT: normal">eclaração</span></span></font></font></font></strong><font color="#000000"><font face="Arial, sans-serif"><font size="3"><span lang="pt-BR"><span style="FONT-WEIGHT: normal"> opostos à decisão proferida na </span></span></font></font></font><font color="#000000"><font face="Arial, sans-serif"><font size="3"><span lang="pt-BR"><strong>APELAÇÃO CÍVEL Nº </strong></span></font></font></font><font color="#000000"><font face="Arial, sans-serif"><font size="3"><span lang="pt-BR"><strong>0045076-88.2007.805.0001-0</strong></span></font></font></font><font color="#000000"><font face="Arial, sans-serif"><font size="3"><span lang="pt-BR"><span style="FONT-WEIGHT: normal">, em que são embargante e embargados, respectivamente, </span></span></font></font></font><font color="#000000"><font face="Arial, sans-serif"><font size="3"><span lang="pt-BR"><strong>MARIA AUGUSTA DOS SANTOS</strong></span></font></font></font><font color="#000000"><font face="Arial, sans-serif"><font size="3"><span lang="pt-BR"><span style="FONT-WEIGHT: normal"> e </span></span></font></font></font><font color="#000000"><font face="Arial, sans-serif"><font size="3"><span lang="pt-BR"><strong>ESTADO DA BAHIA.</strong></span></font></font></font></p>
<p ><font color="#000000"><font face="Arial, sans-serif"><font size="3"><span lang="pt-BR"><strong>ACORDAM</strong></span></font></font></font><font color="#000000"><font face="Arial, sans-serif"><font size="3"><span lang="pt-BR"> os Desembargadores integrantes da </span></font></font></font><font color="#000000"><font face="Arial, sans-serif"><font size="3"><span lang="pt-BR"><strong>QUARTA CÂMARA CÍVEL </strong></span></font></font></font><font color="#000000"><font face="Arial, sans-serif"><font size="3"><span lang="pt-BR">do </span></font></font></font><font color="#000000"><font face="Arial, sans-serif"><font size="3"><span lang="pt-BR"><strong>Tribunal de Justiça do Estado da Bahia</strong></span></font></font></font><font color="#000000"><font face="Arial, sans-serif"><font size="3"><span lang="pt-BR">, </span></font></font></font><font color="#000000"><font face="Arial, sans-serif"><font size="3"><span lang="pt-BR"><span style="FONT-WEIGHT: normal">à</span></span></font></font></font><font color="#000000"><font face="Arial, sans-serif"><font size="3"><span lang="pt-BR"><strong> </strong></span></font></font></font><font color="#000000"><font face="Arial, sans-serif"><font size="3"><span lang="pt-BR"><span style="FONT-WEIGHT: normal">unanimidade de votos, em </span></span></font></font></font><font color="#000000"><font face="Arial, sans-serif"><font size="3"><span lang="pt-BR"><strong>NÃO-ACOLHER </strong></span></font></font></font><font color="#000000"><font face="Arial, sans-serif"><font size="3"><span lang="pt-BR"><span style="FONT-WEIGHT: normal">os embargos, pelas razões explicitadas abaixo.</span></span></font></font></font></p>
<BR><BR><BR>
<p ><font color="#000000"><font face="Arial, sans-serif"><font size="5"><strong>VOTO</strong></font></font></font></p>
<p ><br />
</p>
<p ><font color="#000000"><font face="Arial, sans-serif"><font size="3">Sem nenhuma razão a embargante, ante à inexistência das omissões apontadas.</font></font></font></p>
<p ><font color="#000000"><font face="Arial, sans-serif"><font size="3">A decisão embargada foi explícita quanto aos motivos pelos quais deu provimento ao recurso interposto pelo Estado da Bahia, reformando a decisão objurgada, para jugar improcedentes os pedidos da autora-embargante.</font></font></font></p>
<p ><font color="#000000"><font face="Arial, sans-serif"><font size="3">Percebe-se, nitidamente, que não foi omitido ponto sobre o qual devia pronunciar-se a decisão.</font></font></font></p>
<p ><font color="#000000"><font face="Arial, sans-serif"><font size="3">Nota-se que a Embargante está buscando modificar a decisão recorrida, e não a declaração de pontos controvertidos, ou sanar omissões supostamente existentes. Esta tentando, sim, dar uma conotação de apelação aos presentes embargos, o que não se pode admitir.</font></font></font></p>
<p ><font color="#000000"><font face="Arial, sans-serif"><font size="3">E mais: não há omissões ou obscuridade na decisão embargada. Há, sim, hermenêutica, e aplicação do direito ao caso concreto. Tão somente.</font></font></font></p>
<p ><font face="Memorandum, Courier New, sans-serif"><font color="#000000"><font face="Arial, sans-serif"><font size="3"><span lang="pt-BR">Vale ressaltar, ainda, que o Superior Tribunal de Justiça já decidiu que “a</span></font></font></font><font color="#000000"><font face="Arial, sans-serif"><font size="3"><span lang="pt-BR"><em> omissão e a contradição que autorizam a oposição de embargos de declaração têm conotação precisa: a primeira ocorre quando, devendo se pronunciar sobre determinado ponto, o julgado deixa de fazê-lo, e a segunda, quando o acórdão manifesta incoerência interna, prejudicando-lhe a racionalidade. Não constitui omissão o modo como, do ponto de vista da parte, o acórdão deveria ter decidido, nem contradição o que, no julgado, lhe contraria os interesses” </em></span></font></font></font><font color="#000000"><font face="Arial, sans-serif"><font size="3"><span lang="pt-BR">(Emb. Decl. no REsp 56.201-BA, rel. Min. Ari Pargendler, DJU 09.09.96, p. 32.346).</span></font></font></font></font></p>
<p ><font color="#000000"><font face="Arial, sans-serif"><font size="3">Ademais, é firme a jurisprudência tanto do STF, quanto do STJ, este inclusive por sua Corte Especial, no sentido de que o julgador não está obrigado a examinar e responder a todos os argumentos das partes, podendo inclusive decidir a causa por fundamentos diversos dos alegados pelos litigantes, devendo apenas solver a lide fundamentadamente, expondo as razões e motivos de seu convencimento.</font></font></font></p>
<p ><font color="#000000"><font face="Arial, sans-serif"><font size="3">Neste sentido, cita-se os seguintes precedentes: EDRESP 202056/SP, STJ, 3ª T., Rel. Min. Castro Filho, j. em 04/09/2001, unânime, DJU de 01/10/2001, p. 205; EDRESP 268661/RJ, STJ, 3ª T., Rel. Min. Nancy Andrighi, j. em 15/10/2001, unânime, DJU de 19/11/2001, p. 262; RESP 287853/RJ, STJ, 6ª T., Rel. Min. Vicente Leal, j. em 14/12/2000, unânime, DJU de 19/02/2001.</font></font></font></p>
<p ><font color="#000000"><font face="Arial, sans-serif"><font size="3">Por fim, nem mesmo para fins de prequestionamento os embargos de declaração podem fugir aos limites traçados no art. 535 do CPC, como já decidiu o STJ.</font></font></font></p>
<p ><br />
</p>
<p ><font color="#000000">“</font><font face="Arial, sans-serif"><font size="2"><font color="#000000"><font face="Arial, sans-serif"><font size="3"><span lang="pt-BR"><span style="FONT-STYLE: normal">Mesmo nos embargos de declaração com fim de prequestionamento, devem-se observar as lindes traçadas no art. 535 do CPC (obscuridade, dúvida, contradição, omissão e, por construção pretoriana integrativa, a hipótese de erro material). Esse recurso não é meio hábil ao reexame da causa.” (STJ - 1.ª Turma, REsp 13.843-0-SP, Rel. Min. Demócrito Reinaldo).</span></span></font></font></font></font></font></p>
<p ><br />
<br />
</p>
<p ><font face="Arial, sans-serif"><font color="#000000"><font face="Arial, sans-serif"><font size="3"><span lang="pt-BR"><span style="FONT-WEIGHT: normal">Nada mais a acrescentar, voto no sentido de </span></span></font></font></font><font color="#000000"><font face="Arial, sans-serif"><font size="3"><span lang="pt-BR"><strong>NÃO-ACOLHER </strong></span></font></font></font><font color="#000000"><font face="Arial, sans-serif"><font size="3"><span lang="pt-BR"><span style="FONT-WEIGHT: normal">os embargos de declaração.</span></span></font></font></font></font></p>
<p ><font color="#000000"><font face="Arial, sans-serif"><font size="3">Publique-se.</font></font></font></p>
<p ><font color="#000000"><font face="Arial, sans-serif"><font size="3">Sala das Sessões, 10 de fevereiro de 2009.</font></font></font></p>
<BR><BR><BR>
<p > <font color="#000000"><font face="Arial, sans-serif"><font size="5"><strong>RELATÓRIO</strong></font></font></font></p>
<p ><br />
</p>
<p ><font color="#000000"><font face="Arial, sans-serif"><font size="3"><span lang="pt-BR"><strong>MARIA AUGUSTA DOS SANTOS</strong></span></font></font></font><font color="#000000"><font face="Arial, sans-serif"><font size="3"><span lang="pt-BR"><span style="FONT-WEIGHT: normal"> opôs embargos de declaração ao acórdão lançado às fls. 376-380, sob o fundamento de que o acórdão vergastado não apreciou os argumentos legais e constitucionais contidos na decisão apelada.</span></span></font></font></font></p>
<p ><font color="#000000"><font face="Arial, sans-serif"><font size="3">Prequestiona dispositivos legais e constitucionais.</font></font></font></p>
<p ><font color="#000000"><font face="Arial, sans-serif"><font size="3">Pugnou pela procedência dos embargos, com saneamento dos vícios apontados e a concessão de efeito modificativo ao julgado.</font></font></font></p>
<p ><font color="#000000"><font face="Arial, sans-serif"><font size="3">Examinei, detidamente, o processo e nele lanço o presente relatório. </font></font></font></p>
</td>
</tr>
</table>
<BR><BR>
<center>
<table border="0" cellpadding="0" cellspacing="0">
<tr>
<td align="left">
<b>Salvador, 3 de Fevereiro de 2010</b>
</td>
</tr>
</table>
<BR><BR>
<table border="0" cellpadding="0" cellspacing="0">
<tr>
<td align="center" style="border-bottom:1px solid black;">
<b>DES. JOSÉ OLEGÁRIO MONÇÃO CALDAS</b>
</td>
</tr>
<tr>
<td align="center">
<b>PRESIDENTE</b>
</td>
</tr>
</table>
<BR><BR>
<table border="0" cellpadding="0" cellspacing="0">
<tr>
<td align="center" style="border-bottom:1px solid black;">
<b>JOSÉ OLEGARIO MONÇÃO CALDAS</b>
</td>
</tr>
<tr>
<td align="center">
<b>RELATOR</b>
</td>
</tr>
</table>
<BR><BR>
<table border="0" cellpadding="0" cellspacing="0">
<tr>
<td align="center" style="border-bottom:1px solid black;">
<b>REGINA HELENA RAMOS REIS</b>
</td>
</tr>
<tr>
<td align="center">
<b>PROCURADOR DA JUSTIÇA</b>
</td>
</tr>
</table>
<BR><BR>
</center>
<BR><BR>
Acórdão assinado digitalmente, mediante identificação por usuário e senha dos signatários, cadastrados no sistema nos termos do art. 1º, § 2º, inciso III, alínea b, da Lei 11.419/2006.
</td>
</tr>
</table>
</body>
</html>
Daí pesquisando sobre o erro acima, tirei a linha:
[color=green]<!DOCTYPE HTML PUBLIC “-//W3C//DTD HTML 4.0 Transitional//EN”>[/color]
Aí o erro passa a ser:
[color=red]com.sun.org.apache.xerces.internal.impl.io.MalformedByteSequenceException: Invalid byte 2 of 2-byte UTF-8 sequence.
at com.sun.org.apache.xerces.internal.impl.io.UTF8Reader.invalidByte(Unknown Source)[/color]
Meu desejo é que o parser tente ser igual a browser, fazer o máximo para reproduzir o html quer representar e jogar no pdf.
Alguém pode ajudar?
Sds, Luciano