Ir ao conteúdo
  • Cadastre-se
Ruan Russi

Como exportar página HTML para PDF - javaweb

Recommended Posts

Esse é o código : 

package controle;import java.io.*;import org.docx4j.org.xhtmlrenderer.pdf.ITextRenderer;import org.w3c.dom.Document;import org.w3c.tidy.Tidy;import com.lowagie.text.DocumentException;public class PdfcrowdTest {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();renderer.setDocument(doc, null);renderer.layout();renderer.createPDF(out);}}
 
Eu já apliquei ele tudo certo, peguei de um site, coloquei as JAR's necessárias, porém não sei como aplicar isso na pagina html, digo fazer um botão que tenha ligação com essa classe. 
E também estou usando o iText aí, gostaria de saber se é necessario colocar paragrafo por paragrafo o que desejar inserir no PDF ou funciona de forma automatica com o link ? 
Caso necessário estou disposto a usar outro método/ferramenta, desculpe qualquer "erro" meu, e agradeço alguma possível ajuda. 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Primeiro você precisa retornar algo do método que produz o PDF.

public static InputStream convert(String input, OutputStream out) throws DocumentException{	return convert(new ByteArrayInputStream(input.getBytes()), out);}//Método não precisa ficar visível a todos, pois vc já possui um método pra realizar essa conversãoprivate static InputStream convert(InputStream input, OutputStream out) throws DocumentException {	Tidy tidy = new Tidy();	Document doc = tidy.parseDOM(input, null);	ITextRenderer renderer = new ITextRenderer();	renderer.setDocument(doc, null);	renderer.layout();	renderer.createPDF(out);	return new ByteArrayInputStream(out.toByteArray());}

Agora, na sua aplicação, você precisa que retorne o stream de dados para o cliente. Caso esteja usando JAX-RS na parte web, você teria um método semelhante a isso:

@[member=Get]@Produces("application/pdf")@Path("/download")public Response sendPDF() {	//Gera o PDF como Stream de dados	InputStream stream = PdfcrowdTest.convert("test", new ByteArrayOutputStream());	//Retorna a resposta com status 200 para o navegador junto com o stream de dados.	return Response.ok(stream).build();}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora





Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×