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.