Converta HTML para PDF com 06 linhas de Código  XML
Índice dos Fóruns » Java Avançado
Autor Mensagem
muskusintraflow
Smalltalk

Membro desde: 01/09/2010 11:20:04
Mensagens: 2
Offline

Ola,

Estou tentando adicionar a fonte tahoma no pdf, pois nao esta gerando com a fonte que estou informando,
Este codigo esta dando erro, se eu coloco o caminho errado nao da erro.
alguem pode me ajudar?

package com.ederbaum.pdf;

import java.io.ByteArrayInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;

import org.w3c.dom.Document;
import org.w3c.tidy.Tidy;
import org.xhtmlrenderer.pdf.*;

import com.lowagie.text.DocumentException;
import com.lowagie.text.pdf.BaseFont;

/**
* @author Eder Baum
*
*/
public class Html2Pdf {
public static void convert(String input, OutputStream out) throws DocumentException{
convert(new ByteArrayInputStream(input.getBytes()), out);
}

public static void convert(InputStream input, OutputStream out) throws DocumentException{
Tidy tidy = new Tidy();
Document doc = tidy.parseDOM(input, null);
ITextRenderer renderer = new ITextRenderer();
try {
renderer.getFontResolver().addFont( "/com/ederbaum/pdf/util/font/TAHOMA.TTF", BaseFont.IDENTITY_H ,BaseFont.EMBEDDED);
} catch (IOException e) {
e.printStackTrace();
}
renderer.setDocument(doc, null);
renderer.layout();
renderer.createPDF(out);
}
}
faroestecaboclo
Thread.start()
[Avatar]

Membro desde: 22/08/2006 14:28:55
Mensagens: 35
Offline

Galera... mto legal essa solução.

Mas estou com um problema pra fazer funcionar com minha autenticação padrão do Tomcat...
Pq estou criando um novo URL como no exemplo:



Mas como é criado uma nova conexão URL, a sessão atual é perdida...
Então oq sai impresso no meu PDF é justamente minha tela de logon, entenderam?

Como resolvo isso?
[WWW]
rbortolon
Entusiasta Java
[Avatar]

Membro desde: 11/08/2008 19:57:49
Mensagens: 22
Offline

Ola amigos !!

Obrigado ao autor deste tópico pois foi muito útil para resolver meu problema.

A questão agora é a seguinte: estes jar's são open source? GPL ?

Pergunto pois eu tive que utilizar aqui no meu trabalho. Teremos que adquirir licensa do iText, por exemplo?

Grato,
Rodrigo
AnjoVingador
JavaChild
[Avatar]

Membro desde: 01/11/2010 09:05:09
Mensagens: 101
Offline

Para aqueles que como eu queiram colocar margem, cabeçalho, rodapé no PDF sem muita complicação olham esse link click aqui
Quero falar que esse tópico me ajudou muito, está de parabéns quem o criou.
Falow!

Bacharel em Ciência da Computação
Oracle Certified Professional, Java SE 6 Programmer
Polverini
Virtual Machine Man
[Avatar]

Membro desde: 26/05/2009 15:57:49
Mensagens: 707
Offline

To usando esse codigo para converter uma jsp em pdf



Mas o 'input' nao sai, nenhum deles.

E agora ????

This message was edited 2 times. Last update was at 14/12/2010 16:01:15


Antes de postar consulte seu amigo GOOGLE é de graça !




Estudante de Sistemas de Informação Unifil
[Email]
Takeshi91
JavaChild
[Avatar]

Membro desde: 25/03/2011 10:24:51
Mensagens: 117
Localização: São Paulo - SP
Offline

Quais libs você usou alem da iText?

Nunca tentei este tipo de implementação

Abraços!

"Não existe trabalho ruim, o ruim é ter que trabalhar." - Seu Madruga

"Ah, o Sol... O lugar mais quente da Terra!" - Homer Simpson

"Não diga à Deus que você tem um grande problema, diga ao problema que você tem um grande Deus."
[Email] [WWW] [MSN]
tiago.canatelli
Entusiasta Java

Membro desde: 08/10/2009 09:23:08
Mensagens: 20
Offline

Galera preciso de uma ajuda...
não estou conseguindo de jeito nenhum fazer aparecer as imagens no pdf...

segue como esta os codigo

String nomeArquivo = "EtqCuidadosEspeciais-" + new SimpleDateFormat("yyyyMMddHHmmss".format(new Date()) + ".pdf";
ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
HttpServletResponse response = super.getServletResponse();
response.setCharacterEncoding("ISO-8859-1";
response.setContentType("application/pdf";
response.setHeader("Content-Disposition", "attachment; filename=" + nomeArquivo);
response.setHeader("Cache-Control", "no-cache";

StringBuilder html = new StringBuilder();
html.append("<?xml version=\"1.0\" encoding=\"ISO-8859-1\"?>";
html.append("<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">");
//html.append("<link rel='stylesheet' type='text/css' href='/static/css/ris.css' />");
//html.append("<link rel='stylesheet' type='text/css' href='/static/css/yahoo/menu.css' />");
//html.append("<link rel='stylesheet' type='text/css' href='/static/css/displaytag.css' />");
html.append("<html><head>");
html.append("<style type=\"text/css\">@page { size: 210mm 291mm; }</style>");
//html.append("<style type=\"text/css\">"+getCss()+"</style>");
html.append("</head>");
html.append("<body>");
html.append("
");
//html.append(htmlToExport);
html.append("

");
html.append("<table width=\"100%\" align=\"center\">");
html.append(" <tr>");
html.append(" <td width=\"50%\" height=\"100%\" align=\"center\" style=\"color:#000000; font-family:Arial, sans-serif; font-size:15px;\">");
html.append(getText("lbl.modelo"));
html.append(" </td>");
html.append(" </tr>");
html.append(" <tr>");
html.append(" <td width=\"50%\" height=\"100%\" align=\"center\" style=\"color:#000000; font-family:Arial, sans-serif; font-size:15px;\">");
html.append("  ");
html.append(" </td>");
html.append(" </tr>");
html.append(" <tr>");
html.append(" <td width=\"50%\" height=\"100%\" align=\"center\">");
html.append(" <table cellspacing=\"0\" width=\"30%\" height=\"100%\" style=\"border: 1; border-style: solid;\" align=\"center\">");
html.append(" <tr>");
html.append(" <td align=\"center\">");
html.append(" <table width=\"100%\">");
for(FiguraEtiquetaVo f: result.getListaComposicao()) {

// mostra o tipo da aplicação
if (result.isMostraTipoAplicacao() && !f.getDsTipAplFib().equals("")) {
html.append(" <tr>");
html.append(" <td style=\"color:#000000; font-family:Arial, sans-serif; font-size:15px;\">" + f.getDsTipAplFib() + "</td>");
html.append(" </tr>");
}
if (getIdioma().trim().equals("br")){
html.append(" <tr>");
html.append(" <td style=\"color:#000000; font-family:Arial, sans-serif; font-size:15px;\">" + f.getPcFibTxlArt() + "% " +
f.getDsFibTxl_prg() + "</td>");
html.append(" </tr>");
}else if (getIdioma().trim().equals("es")){
html.append(" <tr>");
html.append(" <td style=\"color:#000000; font-family:Arial, sans-serif; font-size:15px;\">" + f.getPcFibTxlArt() + "% " +
f.getDsFibTxlSph() + "</td>");
html.append(" </tr>");
}else if (getIdioma().trim().equals("en")){
html.append(" <tr>");
html.append(" <td style=\"color:#000000; font-family:Arial, sans-serif; font-size:15px;\">" + f.getPcFibTxlArt() + "% " +
f.getDsFibTxlIgl() + "</td>");
html.append(" </tr>");
}
}
html.append(" </table>");
html.append(" </td>");
html.append(" </tr>");
html.append(" <tr>");
html.append(" <td align='center'> </td>");
html.append(" </tr>");
html.append(" <tr>");
html.append(" <td align='center'>");
html.append(" <table id='tblFiguraLavagem' width='100%'>");
html.append(" <tr>");
for(String imgEtiqueta: resultPedido.getImgManutencaoPeca()) {
html.append(" <td style=\"color:#000000; font-family:Arial, sans-serif; font-size:15px;\">" +
"</td>"); }
html.append(" </tr>");
html.append(" </table>");
html.append(" </tr>");
html.append(" <tr>");
html.append(" <td align='center'>");
html.append(" <table id='tblGrauInstrucao' width='100%'>");
for(FiguraEtiquetaVo figuraEtiquetaVo: result.getListaFigLav()) {
html.append(" <tr>");
html.append(" <td style=\"color:#000000; font-family:Arial, sans-serif; font-size:15px;\">" + figuraEtiquetaVo.getDsGrauInsSph() + "</td>");
html.append(" </tr>");
}
html.append(" </table>");
html.append(" </tr>");
html.append(" <tr>");
html.append(" <td style=\"color:#000000; font-family:Arial, sans-serif; font-size:15px;\"> </td>");
html.append(" </tr>");
html.append(" <tr>");
html.append(" <td style=\"color:#000000; font-family:Arial, sans-serif; font-size:15px;\"> </td>");
html.append(" </tr>");
html.append(" <tr>");
String txtProduzido = "";
String txtPara="";
if(result.getTextoPaisProd().trim().equals("BR")){
txtProduzido = getText("lbl.prod.mexico");
txtPara = getText("lbl.prod.mexico.para");
html.append(" <td style=\"color:#000000; font-family:Arial, sans-serif; font-size:15px;\">" + txtProduzido + "</td>");
html.append(" </tr>");
html.append(" <tr>");
html.append(" <td style=\"color:#000000; font-family:Arial, sans-serif; font-size:15px;\">" + txtPara + "</td>");
html.append(" </tr>");
}else{
txtProduzido = getText("lbl.prod.mexico.importado")
+ " " + infoImportado.getTxtPaisFabPed();
String txtInsumo="";

if(infoImportado.getTxtPaisOrigemInsumo()!=null
&& infoImportado.getTxtPaisOrigemInsumo().trim().equals("")){
txtInsumo = getText("lbl.prod.mexico.importado.insumo") + " " + infoImportado.getTxtPaisOrigemInsumo();
}
html.append(" <td style=\"color:#000000; font-family:Arial, sans-serif; font-size:15px;\">" + txtProduzido + "</td>");
html.append(" </tr>");
html.append(" <tr>");
html.append(" <td style=\"color:#000000; font-family:Arial, sans-serif; font-size:15px;\">" + txtInsumo + "</td>");
html.append(" </tr>");
}
html.append(" <tr>");
html.append(" <td style=\"color:#000000; font-family:Arial, sans-serif; font-size:15px;\"> </td>");
html.append(" </tr>");
html.append(" <tr>");
html.append(" <td style=\"color:#000000; font-family:Arial, sans-serif; font-size:15px;\"> </td>");
html.append(" </tr>");
if (resultPedido.getTipoPedidoPrg().trim().equals(TP_IMPORTADO_PRG)){
String txtImportadoPor = getText("lbl.prod.mexico.importadopor");
html.append(" <tr>");
html.append(" <td style=\"color:#000000; font-family:Arial, sans-serif; font-size:15px;\">" + txtImportadoPor + "</td>");
html.append(" </tr>");
}
String txtCeA = getText("lbl.prod.mexico.cea");
html.append(" <tr>");
html.append(" <td style=\"color:#000000; font-family:Arial, sans-serif; font-size:15px;\">" + txtCeA + "</td>");
html.append(" </tr>");
String txtEndereco = getText("lbl.prod.mexico.endereco");
html.append(" <tr>");
html.append(" <td style=\"color:#000000; font-family:Arial, sans-serif; font-size:15px;\">" + txtEndereco + "</td>");
html.append(" </tr>");
String txtLocalidade = getText("lbl.prod.mexico.localidade");
html.append(" <tr>");
html.append(" <td style=\"color:#000000; font-family:Arial, sans-serif; font-size:15px;\">" + txtLocalidade + "</td>");
html.append(" </tr>");
String txtCidadeEstado = getText("lbl.prod.mexico.cidadeestado");
html.append(" <tr>");
html.append(" <td style=\"color:#000000; font-family:Arial, sans-serif; font-size:15px;\">" + txtCidadeEstado + "</td>");
html.append(" </tr>");
String txtCpPais = getText("lbl.prod.mexico.caixapostalpais");
html.append(" <tr>");
html.append(" <td style=\"color:#000000; font-family:Arial, sans-serif; font-size:15px;\">" + txtCpPais + "</td>");
html.append(" </tr>");
String txtRfc = getText("lbl.prod.mexico.rfc");
html.append(" <tr>");
html.append(" <td style=\"color:#000000; font-family:Arial, sans-serif; font-size:15px;\">" + txtRfc + "</td>");
html.append(" </tr>");
String txtTel1 = getText("lbl.prod.mexico.tel1");
html.append(" <tr>");
html.append(" <td style=\"color:#000000; font-family:Arial, sans-serif; font-size:15px;\">" + txtTel1 + "</td>");
html.append(" </tr>");
String txtTel2 = getText("lbl.prod.mexico.tel2");
html.append(" <tr>");
html.append(" <td style=\"color:#000000; font-family:Arial, sans-serif; font-size:15px;\">" + txtTel2 + "</td>");
html.append(" </tr>");
html.append(" <tr>");
html.append(" <td style=\"color:#000000; font-family:Arial, sans-serif; font-size:15px;\"> </td>");
html.append(" </tr>");
html.append(" <tr>");
html.append(" <td style=\"color:#000000; font-family:Arial, sans-serif; font-size:15px;\"> </td>");
html.append(" </tr>");
html.append(" <tr>");
html.append(" <td style=\"color:#000000; font-family:Arial, sans-serif; font-size:15px;\"> </td>");
html.append(" </tr>");
html.append(" </table>");
html.append(" </td>");
html.append(" </tr>");
html.append(" </table>");
html.append("
");
html.append("</body></html>");

Html2Pdf.convert(html.toString(), outputStream, 1.5F, 1);
response.setContentLength( outputStream.size() );

ServletOutputStream sos = response.getOutputStream();
outputStream.writeTo(sos);
sos.flush();
tiago.canatelli
Entusiasta Java

Membro desde: 08/10/2009 09:23:08
Mensagens: 20
Offline

Galera preciso de uma ajuda...
não estou conseguindo de jeito nenhum fazer aparecer as imagens no pdf...

segue como esta os codigo

This message was edited 1 time. Last update was at 31/03/2011 10:44:20

Takeshi91
JavaChild
[Avatar]

Membro desde: 25/03/2011 10:24:51
Mensagens: 117
Localização: São Paulo - SP
Offline

Use a tag code quando colocar seu codigo fonte, senão fica ilegível para os outros membros.

"Não existe trabalho ruim, o ruim é ter que trabalhar." - Seu Madruga

"Ah, o Sol... O lugar mais quente da Terra!" - Homer Simpson

"Não diga à Deus que você tem um grande problema, diga ao problema que você tem um grande Deus."
[Email] [WWW] [MSN]
tiago.canatelli
Entusiasta Java

Membro desde: 08/10/2009 09:23:08
Mensagens: 20
Offline

foi mal esqueci denovo
tiago.canatelli
Entusiasta Java

Membro desde: 08/10/2009 09:23:08
Mensagens: 20
Offline

E ai galera...

entao fiz um teste com meu codigo fonte para pegar uma imagem do C: e rolou legal...
mas como faço para fazer pegar uma imagem do contexto?
alguem ja passou por alguma experiencia e funcionou?

Att,
tiago
Takeshi91
JavaChild
[Avatar]

Membro desde: 25/03/2011 10:24:51
Mensagens: 117
Localização: São Paulo - SP
Offline

a imagem está como atributo do context?

*preguiça de ler codigo*

"Não existe trabalho ruim, o ruim é ter que trabalhar." - Seu Madruga

"Ah, o Sol... O lugar mais quente da Terra!" - Homer Simpson

"Não diga à Deus que você tem um grande problema, diga ao problema que você tem um grande Deus."
[Email] [WWW] [MSN]
tiago.canatelli
Entusiasta Java

Membro desde: 08/10/2009 09:23:08
Mensagens: 20
Offline

Está com o caminho do context
http://localhost:7001/srf/img/etiqueta/<nomeimagem>
Takeshi91
JavaChild
[Avatar]

Membro desde: 25/03/2011 10:24:51
Mensagens: 117
Localização: São Paulo - SP
Offline

pra pegar do contexto só usar /srf/img/etiqueta/<nomeimagem> como path.

"Não existe trabalho ruim, o ruim é ter que trabalhar." - Seu Madruga

"Ah, o Sol... O lugar mais quente da Terra!" - Homer Simpson

"Não diga à Deus que você tem um grande problema, diga ao problema que você tem um grande Deus."
[Email] [WWW] [MSN]
tiago.canatelli
Entusiasta Java

Membro desde: 08/10/2009 09:23:08
Mensagens: 20
Offline

Já tentei também,
porém a imagem não aparece no pdf...
quando pego uma imagem do C e passo o caminho completo funciona...
porém não estou conseguindo fazer aparecer imagem no pdf qunado se trata de uma imagem que está na aplicação...
 
Índice dos Fóruns » Java Avançado
Ir para:   
Powered by JForum 2.1.8 © JForum Team