Quero gerar um PDF passando o conteúdo HTML para uma função. Eu usei o iTextSharp para isso, mas ele não funciona bem quando encontra tabelas e o layout fica confuso.
Existe uma maneira melhor?
c#
html
pdf
itextsharp
Amedee Van Gasse
fonte
fonte
Respostas:
Edição: Nova sugestão HTML Renderer para PDF usando PdfSharp
(Depois de tentar o wkhtmltopdf e sugerir evitá-lo)
O HtmlRenderer.PdfSharp é um código gerenciado 100% totalmente em C # , fácil de usar, seguro para threads e, mais importante ainda, GRÁTIS ( Nova Licença BSD ) .
Uso
Use o método de exemplo.
Uma alternativa muito boa é uma versão gratuita do iTextSharp
Até a versão 4.1.6, o iTextSharp estava licenciado sob a licença LGPL e as versões até a versão 4.16 (ou também pode haver garfos) estão disponíveis como pacotes e podem ser usadas livremente. É claro que alguém pode usar a versão paga continuada com mais de 5 anos .
Tentei integrar soluções wkhtmltopdf no meu projeto e tive vários obstáculos.
Eu, pessoalmente, evitaria usar soluções baseadas em wkhtmltopdf nos aplicativos Hosted Enterprise pelos seguintes motivos.
--- Seção de Edição PRE ---
Para quem deseja gerar pdf a partir de html em aplicativos / ambientes mais simples, deixo meu post antigo como sugestão.
Terça-feira
https://www.nuget.org/packages/TuesPechkin/
ou especialmente para aplicativos da Web MVC (mas acho que você pode usá-lo em qualquer aplicativo .net)
Rotativa
https://www.nuget.org/packages/Rotativa/
Ambos utilizam o binário wkhtmtopdf para converter html em pdf. Que usa o mecanismo do webkit para renderizar as páginas para que ele também possa analisar folhas de estilo css .
Eles fornecem fácil integração com o C #.
O Rotativa também pode gerar PDFs diretamente de qualquer Razor View.
Além disso, para aplicações web do mundo real, eles também gerenciam a segurança de threads, etc ...
fonte
Atualização: agora eu recomendaria o PupeteerSharp sobre o wkhtmltopdf.
Tente wkhtmtopdf . É a melhor ferramenta que encontrei até agora.
Para o .NET, você pode usar esta pequena biblioteca para chamar facilmente o utilitário de linha de comando wkhtmtopdf.
fonte
Recentemente, realizei um PoC em relação à conversão de HTML para PDF e queria compartilhar meus resultados.
O meu favorito de longe é o OpenHtmlToPdf
Vantagens desta ferramenta:
Outras ferramentas testadas:
fonte
using IronPdf; IronPdf.HtmlToPdf Renderer = new IronPdf.HtmlToPdf(); // Render an HTML document or snippet as a string Renderer.RenderHtmlAsPdf("<h1>Hello World</h1>").SaveAs("html-string.pdf");
background-color
. OpenHtmlToPdf funciona perfeitamente de graça.Última atualização: março de 2020
Esta é a lista de opções para conversão de HTML em PDF no .NET que eu montei (algumas gratuitas e outras pagas)
GemBox.Document
PDF Metamorfose .Net
HtmlRenderer.PdfSharp
PuppeteerSharp
EO.Pdf
WnvHtmlToPdf_x64
IronPdf
Spire.PDF
Free Spire.PDF for .NET (versão comunitária)
Aspose.Html
EvoPDF
ExpertPdfHtmlToPdf
Zetpdf
PDFtron
WkHtmlToXSharp
SelectPDF
Se nenhuma das opções acima o ajudar, você sempre poderá pesquisar os pacotes NuGet https://www.nuget.org/packages?q=html+pdf
fonte
A maioria dos conversores de HTML para PDF depende do IE para analisar e renderizar o HTML. Isso pode ser interrompido quando o usuário atualiza o IE. Aqui está um que não depende do IE.
O código é algo como isto:
Como muitos outros conversores, você pode passar texto, nome de arquivo ou URL. O resultado pode ser salvo em um arquivo ou fluxo.
fonte
Eu recomendo a NReco , sério. Tem a versão gratuita e paga, e realmente vale a pena. Ele usa o wkhtmtopdf em segundo plano, mas você só precisa de um assembly. Fantástico.
Exemplo de uso:
Instale via NuGet .
Disclaimer: Eu não sou o desenvolvedor, apenas um fã do projeto :)
fonte
A Winnovative oferece uma biblioteca .Net PDF que suporta entrada HTML. Eles oferecem uma avaliação gratuita ilimitada . Dependendo de como você deseja implantar seu projeto, isso pode ser suficiente.
fonte
O PDF essencial pode ser usado para converter a amostra HTML em PDF : C # . O exemplo vinculado aqui é baseado no ASP.NET, mas a biblioteca pode ser usada no Windows Forms, WPF, ASP.NET Webforms e ASP.NET MVC. A biblioteca oferece a opção de usar diferentes mecanismos de renderização HTML: Internet Explorer (padrão) e WebKit (melhor saída).
Todo o conjunto de controles está disponível gratuitamente (aplicativos comerciais também) através do programa de licença da comunidade , se você se qualificar. A licença da comunidade é o produto completo, sem limitações ou marcas d'água.
Nota: Eu trabalho para o Syncfusion.
fonte
Se você realmente não precisa de uma verdadeira biblioteca .Net PDF, existem inúmeras ferramentas gratuitas de HTML para PDF , muitas das quais podem ser executadas em uma linha de comando.
Uma solução seria escolher um desses e, em seguida, escrever um invólucro fino em C #. Por exemplo, conforme feito neste tutorial .
fonte
Eu usei o ExpertPDF Html To Pdf Converter . Faz um trabalho decente. Infelizmente, não é grátis.
fonte
Há também um novo aplicativo de geração de documentos baseado na Web - DocRaptor.com . Parece fácil de usar, e há uma opção gratuita.
fonte
Atualização de 2018 e Vamos usar a equação padrão HTML + CSS = PDF!
Há boas notícias para demandas de HTML para PDF. Como essa resposta mostrou , o padrão css-break-3 do W3C resolverá o problema ... É uma recomendação de candidato com plano de se transformar em recomendação definitiva em 2017 ou 2018, após testes.
Como não tão padrão, existem soluções, com plugins para C #, como mostra print-css.rocks .
fonte
Você pode usar o recurso de impressão em PDF do Google Chrome no modo sem cabeça. Achei que esse era o método mais simples e mais robusto.
fonte
ABCpdf.NET (http://www.websupergoo.com/abcpdf-5.htm)
Nós usamos e recomendamos.
Muito bom componente, ele não apenas converte uma página da Web em PDF como uma imagem, mas também converte texto, imagem, formatação, etc ...
Não é grátis, mas é barato.
fonte
Eu sou o autor do pacote Rotativa. Ele permite criar arquivos PDF diretamente a partir das visualizações de navalhas:
https://www.nuget.org/packages/Rotativa/
Trivial para usar e você tem controle total sobre o layout, pois é possível usar vistas de navalha com dados do contêiner Model e ViewBag.
Eu desenvolvi uma versão SaaS no Azure. Torna ainda mais fácil usá-lo na WebApi ou em qualquer aplicativo, serviço, site do Azure, webjob do Azure, qualquer que seja executado .Net.
http://www.rotativahq.com/
Contas gratuitas disponíveis.
fonte
Abaixo está um exemplo de conversão de html + css para PDF usando o iTextSharp (iTextSharp + itextsharp.xmlworker)
fonte
Depende de quaisquer outros requisitos que você tiver.
Uma solução realmente simples, mas não de fácil implantação, é usar um controle WebBrowser para carregar o HTML e, em seguida, usar o método Print para imprimir em uma impressora PDF instalada localmente. Existem várias impressoras PDF gratuitas disponíveis e o controle WebBrowser faz parte da estrutura .Net.
Edição: Se você Html é XHtml, você pode usar o PDFizer para fazer o trabalho.
fonte
O PDF Vision é bom. No entanto, você precisa ter confiança total para usá-lo. Eu já enviei um email e perguntei por que meu HTML não estava sendo convertido no servidor, mas funcionou bem no localhost.
fonte
Eu achei a seguinte biblioteca mais eficaz na conversão de html para pdf.
nuget : https://www.nuget.org/packages/Select.HtmlToPdf/
fonte
Eu também estava procurando por isso há um tempo. Encontrei o HTMLDOC http://www.easysw.com/htmldoc/ um aplicativo de linha de comando de código aberto gratuito que usa um arquivo HTML como argumento e cospe um PDF a partir dele. Funcionou muito bem para mim no meu projeto paralelo, mas tudo depende do que você realmente precisa.
A empresa que vende os binários compilados, mas você pode baixar e compilar a partir do código-fonte e usá-lo gratuitamente. Consegui compilar uma revisão bastante recente (para a versão 1.9) e pretendo liberar um instalador binário para ele em alguns dias, portanto, se você estiver interessado, posso fornecer um link para ele assim que publicar.
Editar (25/2/2014): parece que os documentos e o site foram movidos para http://www.msweet.org/projects.php?Z1
fonte
Você precisa usar uma biblioteca comercial se precisar da renderização perfeita de html em pdf.
O ExpertPdf Html To PDF Converter é muito fácil de usar e suporta os mais recentes html5 / css3. Você pode converter um URL inteiro para pdf:
ou uma string html:
Você também tem a alternativa de salvar diretamente o documento pdf gerado em um fluxo de arquivo no disco.
fonte
Esta é uma biblioteca gratuita e funciona com muita facilidade: OpenHtmlToPdf
fonte
Até agora, parece que a melhor solução gratuita para .NET é a biblioteca terpechkin , que é um invólucro da biblioteca nativa wkhtmltopdf .
Agora usei a versão single-threaded para converter alguns milhares de strings HTML em arquivos PDF e parece funcionar muito bem. Ele também deve funcionar em ambientes com vários threads (IIS, por exemplo), mas eu não testei isso.
Também porque eu queria usar a versão mais recente do wkhtmltopdf (0.12.5 no momento da redação), baixei a DLL do site oficial, copiei para a raiz do meu projeto, configurei a cópia para saída como true e iniciei a biblioteca como tão:
O código acima procurará exatamente "wkhtmltox.dll", portanto, não renomeie o arquivo. Eu usei a versão de 64 bits da DLL.
Leia as instruções para ambientes com vários threads, pois você precisará inicializá-lo apenas uma vez por ciclo de vida do aplicativo, para que seja necessário colocar um singleton ou algo assim.
fonte
Aqui está um invólucro para o wkhtmltopdf.dll por pruiz
E um invólucro para o wkhtmltopdf.exe da Codaxy
- também no nuget .
fonte
No tests are run because no tests are loaded or the selected tests are disabled
pesquisando também não ajudaA melhor ferramenta que encontrei e usei para gerar PDF em JavaScript e estilos e exibições renderizadas ou páginas html é phantomJS .
Baixe o arquivo .exe com a função rasterize.js encontrada na raiz do exe da pasta de exemplo e coloque a solução.
Ele ainda permite que você baixe o arquivo em qualquer código sem abrir esse arquivo. Também permite baixar o arquivo quando os estilos e, especialmente, o jquery são aplicados.
O código a seguir gera arquivo PDF:
fonte
Você também pode verificar o Spire , que permite criar
HTML to PDF
com este simples pedaço de códigoArtigo detalhado: Como converter HTML em PDF no asp.net C #
fonte
Como representante do HiQPdf Software, acredito que a melhor solução é o HiQPdf HTML to PDF converter for .NET . Ele contém o mais avançado mecanismo de renderização HTML5, CSS3, SVG e JavaScript do mercado. Há também uma versão gratuita da biblioteca HTML para PDF que você pode usar para produzir gratuitamente até 3 páginas PDF. O código C # mínimo para produzir um PDF como um byte [] a partir de uma página HTML é:
Você pode encontrar exemplos mais detalhados para ASP.NET e MVC no repositório de exemplos do HiQPdf HTML to PDF Converter .
fonte
Provavelmente, a maioria dos projetos envolve um mecanismo C / C ++ em vez de implementar uma solução C # do zero. Experimente o Projeto Gotenberg .
Para testá-lo
Exemplo de ondulação
C # sample.cs
Compilar
fonte
Experimente este componente de conversão do PDF Duo .Net para converter HTML para PDF do ASP.NET aplicativo sem usar DLLs adicionais.
Você pode transmitir a string ou arquivo HTML ou transmitir para gerar o PDF. Use o código abaixo (exemplo C #):
Exemplos de Info + C # / VB você pode encontrar em: http://www.duodimension.com/html_pdf_asp.net/component_html_pdf.aspx
fonte
Para converter HTML para PDF em C #, use ABCpdf .
O ABCpdf pode usar os mecanismos de renderização Gecko ou Trident, para que sua tabela HTML tenha a mesma aparência que aparece no FireFox e no Internet Explorer.
Há uma demonstração on-line do ABCpdf em www.abcpdfeditor.com. Você pode usar isso para verificar como suas tabelas serão renderizadas primeiro, sem a necessidade de baixar e instalar o software.
Para renderizar páginas da Web inteiras, você precisará das funções AddImageUrl ou AddImageHtml. Mas se tudo o que você deseja fazer é simplesmente adicionar texto com estilo HTML, tente a função AddHtml, como abaixo:
ABCpdf é um título de software comercial, no entanto, a edição padrão geralmente pode ser obtida gratuitamente sob oferta especial.
fonte
However, you must disclose your affiliation with the product in your answers. Also, if a huge percentage of your posts include a mention of your product, you're clearly here for the wrong reasons.
Todas as suas respostas foram sobre ABCpdf