1. java
  2. android
  3. c#
  4. .net
  5. javascript
  6. php
  7. jquery
  8. html
  9. sql

Imagem não aparece ao converter html para Pdf

Bom dia,

Estou precisando converter um código html em um pdf, porém ele não esta convertendo tudo corretamente.

Tenho um cabeçalho (onde tem uma imagem e um texto), o corpo e o rodapé. Tudo aparece na conversão, menos a imagem, porém se eu pego esse html gerado pelo meu código e salvo em um arquivo separado e mando rodar esse arquivo a imagem aparece.

package br.gov.es.sesp.inquerito.ejb.util;

import java.io.ByteArrayOutputStream;
import java.io.PrintWriter;
import java.io.StringReader;
import java.io.StringWriter;
import java.util.ArrayList;
import java.util.List;
import javax.xml.xpath.XPath;
import javax.xml.xpath.XPathConstants;
import javax.xml.xpath.XPathExpression;
import javax.xml.xpath.XPathExpressionException;
import javax.xml.xpath.XPathFactory;
import org.w3c.dom.Document;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import org.w3c.tidy.Tidy;
import org.xhtmlrenderer.pdf.ITextRenderer;

public class PDFUtil
{
  public static String convertToXHTML(String html)
    throws XPathExpressionException
  {
    Tidy tidy = new Tidy();
    tidy.setXHTML(true);

    StringWriter strw = new StringWriter();

    Document doc = tidy.parseDOM(new StringReader(html), new PrintWriter(strw));


    XPath xpath = XPathFactory.newInstance().newXPath();

    XPathExpression expr = xpath.compile("//td[@valign = 'top']/a/text()");

    NodeList nodes = (NodeList)expr.evaluate(doc, XPathConstants.NODESET);

    List<String> filenames = new ArrayList();

    for (int i = 0; i < nodes.getLength(); i++) {
      filenames.add(nodes.item(i).getNodeValue());
    }

    return strw.toString();
  }


  public static byte[] gerarPDFFromHTML(String html, String dsNomeArquivo)
    throws Exception
  {
    ByteArrayOutputStream baos = new ByteArrayOutputStream();

    ITextRenderer renderer = new ITextRenderer();

    renderer.setDocumentFromString(convertToXHTML(html));

    renderer.layout();

    renderer.createPDF(baos);

    byte[] pdf = baos.toByteArray();

    baos.flush();
    baos.close();

    return pdf;
  }
}

Esse é o trecho de código que converte para pdf.

Na minha servlet eu chamo a função que monta o html, em seguida chamo a função gerarPDFFromHTML e dentro dessa função chamo a convertToXHTML.

Não sei mais o que fazer pra isso funcionar. Alguém tem ideia do que possa ser?

  1. Você vai ver essas setas em qualquer página de pergunta. Com elas, você pode dizer se uma pergunta ou uma resposta foram relevantes ou não.
  2. Edite sua pergunta ou resposta caso queira alterar ou adicionar detalhes.
  3. Caso haja alguma dúvida sobre a pergunta, adicione um comentário. O espaço de respostas deve ser utilizado apenas para responder a pergunta.
  4. Se o autor da pergunta marcar uma resposta como solucionada, esta marca aparecerá.
  5. Clique aqui para mais detalhes sobre o funcionamento do GUJ!

0 resposta

Não é a resposta que estava procurando? Procure outras perguntas com as tags html pdf ou faça a sua própria pergunta.