Respuestas:
Acabo de escribir una biblioteca llamada jsPDF que genera archivos PDF usando Javascript solo. Todavía es muy joven, y pronto agregaré funciones y correcciones de errores. También obtuve algunas ideas para soluciones alternativas en navegadores que no admiten URI de datos. Está licenciado bajo una licencia liberal de MIT.
Me encontré con esta pregunta antes de comenzar a escribirla y pensé en volver y avisarte :)
Generar archivos PDF en Javascript
Ejemplo: crea un archivo 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')
<script src="https://cdnjs.cloudflare.com/ajax/libs/jspdf/1.3.5/jspdf.debug.js"></script>
Otra biblioteca de JavaScript que vale la pena mencionar es pdfmake .
El soporte del navegador no parece ser tan fuerte como jsPDF, ni parece haber una opción para formas, pero las opciones para formatear texto son más avanzadas que las opciones disponibles actualmente en jsPDF.
Mantengo PDFKit , que también poderes pdfmake (ya se ha mencionado aquí). Funciona tanto en Node como en el navegador, y admite un montón de cosas que otras bibliotecas no:
Visite http://pdfkit.org/ para obtener un tutorial completo para ver por sí mismo lo que PDFKit puede hacer. Y para ver un ejemplo de qué tipo de documentos se pueden producir, consulte los documentos en formato PDF generados a partir de algunos archivos Markdown utilizando el propio PDFKit: http://pdfkit.org/docs/guide.pdf .
También puede probarlo interactivamente en el navegador aquí: http://pdfkit.org/demo/browser.html .
Otro proyecto interesante es texlive.js .
Le permite compilar (La) TeX a PDF en el navegador.
Puede utilizar este servicio gratuito agregando un enlace que crea pdf desde cualquier url (por ejemplo, http://www.phys.org ):
Incluso si pudiera generar el PDF en memoria en JavaScript, aún tendría el problema de cómo transferir esos datos al usuario. Es difícil para JavaScript simplemente enviar un archivo al usuario.
Para llevar el archivo al usuario, debe enviar un servidor para que el navegador muestre el cuadro de diálogo Guardar.
Dicho esto, realmente no es demasiado difícil generar archivos PDF. Solo lee las especificaciones.