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.8 answers
O projecto "disco voador" XHTML rendererer tem suporte para enviar XHTML para PDF. Dê uma olhada em um exemplo aqui.
É 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.
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();
Se você tem o financiamento, nada bate Príncipe XML como este vídeo mostra
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.
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.
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
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.