A converter os ficheiros HTML para PDF [fechados]

Preciso de gerar automaticamente um ficheiro PDF a partir de um documento HTML em saída (X). Os ficheiros de entrada (relatórios) usam um layout bastante simples, baseado em tabelas, de modo que o suporte para coisas de JavaScript/CSS realmente chique provavelmente não é necessário.

Como estou habituado a trabalhar em Java, é preferível uma solução que possa ser facilmente utilizada num projecto java. Mas só precisa de trabalhar nos sistemas windows.

uma forma de o fazer que é viável, mas não produz uma produção de boa qualidade (pelo menos para of the box) is using CSS2XSLFO , and Apache FOP to create the PDF files. O problema que encontrei foi que enquanto os atributos CSS são convertidos bem, o layout da tabela é bastante confuso, com o texto fluindo para fora da célula da tabela.

também dei uma olhada rápida no Jrex, uma Java-API para usar o motor de renderização Gecko.

Há alguma maneira de pegar a página renderizada do motor de renderização do internet explorer e enviá-la para uma ferramenta de impressora PDF automaticamente? Eu não ... experiência em programação OLE em windows, então eu não tenho nenhuma pista do que é possível e o que não é.

Tens alguma ideia?

EDIT : a coisa FlyingSaucer / iText parece muito promissora. Vou tentar aceitar isso.

Obrigado por todas as respostas.
Author: bluish, 2009-03-11

8 answers

 66
Author: Mark, 2011-09-23 14:07:25
Tentaste o WKHTMLTOPDF?

É um utilitário shell simples, uma implementação de código aberto do WebKit. Ambos são livres.

Temos aqui um pequeno tutorial.

Editar( 2017 ):

Se fosse para construir algo hoje, eu não iria mais por esse caminho.
Mas usaria http://pdfkit.org/ em vez disso.
Provavelmente removendo-o de todas as suas dependências nodejs, para executar no navegador.
 40
Author: Mic, 2016-12-23 11:06:04

Check out iText ; it is a pure Java PDF toolkit which has support for reading data from HTML. Eu usei-o recentemente em um projeto quando eu precisava puxar o conteúdo de nosso CMS e exportar como arquivos PDF, e era tudo bastante simples. O suporte para css e tags de estilo é bastante limitado, mas ele faz renderizar tabelas sem quaisquer problemas (eu nunca consegui definir a largura da coluna embora).

Criar um PDF a partir do HTML é algo assim:

Document doc = new Document(PageSize.A4);
PdfWriter.getInstance(doc, out);
doc.open();
HTMLWorker hw = new HTMLWorker(doc);
hw.parse(new StringReader(html));
doc.close();
 39
Author: fred-o, 2009-03-11 09:32:24

Se você tem o financiamento, nada bate Príncipe XML como este vídeo mostra

 3
Author: Ólafur Waage, 2009-03-11 09:17:10
Há alguma maneira de agarrar o ... página renderizada da internet motor de renderização explorador e enviá - lo para uma ferramenta de impressora PDF automaticamente?

É assim que ActivePDF funciona, o que é bom significa que você sabe o que você vai ter, e na verdade tem um suporte de estilo razoável.

Também é um dos poucos pacotes que encontrei (ao olhar alguns anos atrás) que realmente suporta os vários CSS de quebra de página comando.


Infelizmente, o software ActivePDF é muito frustrante - uma vez que ele tem que lançar o navegador IE em segundo plano para conversões, ele pode ser muito lento, e também não é particularmente estável.

Há uma nova versão atualmente em Beta que é suposto ser muito melhor, mas eu não tive a chance de experimentá-lo, então não sei o quanto de uma melhoria é.
 2
Author: Peter Boughton, 2009-03-11 09:47:05

Pode usar um firefox sem cabeça com uma extensão. É bastante irritante começar a correr, mas produz bons resultados.

Confira esta resposta para mais informações.

 1
Author: rojoca, 2017-05-23 11:47:13

Amyuni WebkitPDF poderia ser usado com o JNI para uma solução Apenas Para Windows. Esta é uma biblioteca de conversão HTML para PDF/XAML, gratuita para uso comercial e não-comercial.

Se os arquivos de saída não são necessários imediatamente, para uma melhor escalabilidade, pode ser melhor ter uma fila e alguns processos de plano de fundo, tendo itens a partir daí, convertendo-os e armazenando, em seguida, no banco de dados ou sistema de arquivos.

declaração de exoneração de responsabilidade habitual

 0
Author: yms, 2012-09-26 19:08:55
Se você olhar para a barra lateral da sua pergunta, verá muitas perguntas relacionadas...

No seu contexto, o método mais simples poderá ser instalar um controlador de impressão em PDF como PDFCreator e imprimir a página para esta saída.

 -1
Author: PhiLho, 2009-03-11 09:34:18