Gerando arquivos PDF com JavaScript

Eu estou tentando converter dados XML em arquivos PDF de uma página da web e eu estava esperando que eu pudesse fazer isso inteiramente dentro do JavaScript. Eu preciso ser capaz de desenhar texto, imagens e formas simples. Eu adoraria poder fazer isso inteiramente no navegador.

Acabei de escrever uma biblioteca chamada jsPDF que gera PDFs usando apenas o Javascript. Ainda é muito novo e adicionarei resources e correções de bugs em breve. Também tenho algumas ideias para soluções alternativas em navegadores que não suportam URIs de dados. É licenciado sob uma licença liberal do MIT.

Eu me deparei com essa pergunta antes de começar a escrevê-la e pensei em voltar e avisá-lo 🙂

Gere PDFs em Javascript

Exemplo crie um arquivo PDF “Hello World”.

// Default export is a4 paper, portrait, using milimeters for units var doc = new jsPDF() doc.text('Hello world!', 10, 10) doc.save('a4.pdf') 
  

Outra biblioteca javascript que vale a pena mencionar é o pdfmake .

  • parque infantil pdfmake
  • pdfmake no github

O suporte ao navegador não parece ser tão forte quanto o jsPDF, nem parece haver uma opção para formas, mas as opções para formatação de texto são mais avançadas do que as opções atualmente disponíveis no jsPDF.

Eu mantenho o PDFKit , que também alimenta o pdfmake (já mencionado aqui). Ele funciona tanto no Node quanto no navegador, e suporta um monte de coisas que outras bibliotecas não:

  • Incorporar fonts subconjunto, com suporte para unicode.
  • Muitas coisas de layout de texto avançado (colunas, quebra de página, quebra de linha unicode completa, texto rico básico, etc.).
  • Trabalhando com mais fonts para tipografia avançada (ligaturas OpenType / AAT, substituição contextual, etc.). Em breve: veja o ramo do fontkit se estiver interessado.
  • Mais material gráfico: gradientes, etc.
  • Construído com ferramentas modernas, como browserify e streams. Utilizável tanto no navegador como no nó.

Confira http://pdfkit.org/ para um tutorial completo para ver você mesmo o que o PDFKit pode fazer. E para um exemplo de quais tipos de documentos podem ser produzidos, confira os documentos como um PDF gerado a partir de alguns arquivos Markdown usando o próprio PDFKit: http://pdfkit.org/docs/guide.pdf .

Você também pode experimentá-lo interativamente no navegador aqui: http://pdfkit.org/demo/browser.html .

Outro projeto interessante é o texlive.js .

Ele permite que você compile (La) TeX para PDF no navegador.

Você pode usar este serviço gratuito, adicionando um link que cria pdf a partir de qualquer url (por exemplo, http://www.phys.org ):

http://freehtmltopdf.com/?convert=http%3A%2F%2Fwww.phys.org&size=US_Letter&orientation=portrait&framesize=800&language=en

Mesmo se você pudesse gerar o PDF na memory em JavaScript, você ainda teria o problema de como transferir esses dados para o usuário. É difícil para o JavaScript apenas enviar um arquivo para o usuário.

Para obter o arquivo para o usuário, você deve enviar um servidor para que o navegador exiba a checkbox de diálogo de salvamento.

Com isso dito, não é muito difícil gerar PDFs. Apenas leia a especificação.