¿Convertidor de modo por lotes de HTML a PDF (o biblioteca) que respeta CSS @ font-face?

NOTAS: Mi solicitud cubre software o bibliotecas, por eso estoy publicando aquí. También revisé los hilos similares aquí, pero pidieron algo sutilmente diferente.

Tengo la siguiente página HTML:

<html>
<head>
   <link rel="stylesheet" type="text/css" href="font.css">
   <style>
      body {
        font-family: "Gotham SSm A";
        font-size: 22px;
      }
   </style>
</head>
<body>
   SUMMARY
</body>
</html>

Y la definición de fuente en font.css (truncado por brevedad):

@font-face { 
   font-family: "Gotham SSm A"; 
   src: url(data:font/truetype;base64,...) format('truetype'); 
   font-weight:700; 
   font-style:italic; 
}

La página se muestra bien en el navegador y, cuando se imprime en PDF desde el navegador, también se muestra bien. Sin embargo, todas las utilidades que usé para generar un PDF desde el software del lado del servidor (PHP) fallaron:

  1. Wkhtmltopdf arruinó las fuentes.
  2. PhantomJS arruinó las fuentes.
  3. SlimerJS no pudo renderizar, abrió ventanas y tenía dependencias inaceptables
  4. PrinceXML arruinó las fuentes y no pudo analizar todas las reglas CSS
  5. pandoc solo convierte a LaTeX y requiere diferentes utilidades (en Windows/Linux) para ir a PDF. Además, su conversión LaTeX (según la versión en línea que probé) también estropeó las fuentes.

¿Cuáles son mis alternativas? Necesito esto para...

1. Respect modern CSS (including @font-face).
2. Be available on Windows & Linux with similar output on both
3. Be offline (utility or library is fine)
4. Allow commercial use
5. Be cost effective (preferably free)

Respuestas (2)

No pude obtener la muestra de CSS que diste para hacer algo en mi navegador, por lo que no pude probarlo, pero te sugiero que pruebes con pandoc .

  1. Respeta CSS, incluido @font-face; en realidad, lo usa por sí mismo
  2. Disponible en Windows, Linux y Mac, la salida será similar siempre que todas las fuentes estén disponibles, pero puede usar css para anular la selección de fuentes si es necesario.
  3. Desconectado - definitivamente
  4. Permitir uso comercial: Pandoc es software gratuito, publicado bajo licencia GPL. © 2006-2014 John MacFarlane. AFAIK Esto significa que si bien no puede modificar pandoc para procesos comerciales, no hay razón para no usarlo con fines comerciales.
  5. es gratis _
  6. Funciona en modo por lotes desde la línea de comandos y no abre ninguna ventana.
  7. Puede analizar una gran cantidad de formatos de entrada y generar una cantidad mucho mayor de formatos.

Actualizar

Tenga en cuenta que sin la URL real de la fuente en el CSS, no puedo probar su muestra ni siquiera en un navegador. Recomendaría tener una alternativa usando pilas de fuentes en su CSS. Logré encontrar una fuente en línea para la fuente que está especificando, pero es una opción de pago por uso, por lo que sospecho que la mayoría aquí no podrá ayudar.

Se recomienda encarecidamente que utilice pilas de fuentes para proporcionar opciones de respaldo. Los recursos alternativos recomendados son "Helvetica Neue", Helvetica, Arial, sans-serif.

Cambiando tu ejemplo a:

<html>
<head>
   <link rel="stylesheet" type="text/css" href="font.css">
   <style>
      body {
        font-family: "Gotham SSm A", “Helvetica Neue”, Helvetica, Arial, sans-serif;
        font-size: 22px;
      }
   </style>
</head>
<body>
   SUMMARY
</body>
</html>

O instalar la fuente localmente puede ayudar.

Gracias, pero no convierte a PDF; se convierte a LaTeX, luego requiere un convertidor LaTeX->PDF. Entonces, incluso si esa conversión es uniforme para la plataforma, todavía existe la uniformidad de la plataforma del convertidor LaTeX->PDF, lo cual es muy poco probable, ya que se recomiendan diferentes paquetes para esto, y ya es poco probable que el mismo paquete de conversión se comporte de manera uniforme. Tendré en cuenta a pandoc como último recurso, si el tiempo lo permite.
Acabo de probar su conversión en línea a LaTex (el paso hacia PDF), y no reconoció la fuente. La versión sin conexión puede ser diferente, pero esto es tan poco probable que descarto pandoc como una opción y modifico mi pregunta para agregarla a la lista de exclusión.
@R.Barzell La razón por la que no proporciona la fuente "Correcta" en la versión en línea es simple: el servidor no tiene la fuente instalada, no es la fuente más común en el mundo. En "su" máquina, esa fuente obviamente está instalada: ni apaddedcell.com/web-fonts ni media.24ways.org/2007/17/fontmatrix.html la enumeran, por lo que es poco probable que se reconozca en la web, consulte smashingmagazine.com/ 2009/09/22/… y w3schools.com/cssref/css_websafe_fonts.asp para obtener más información.
En realidad, puse la hoja de estilo (que tiene la definición de fuente en línea) en un servidor disponible públicamente y cambié el enlace a una URL, y me aseguré de que se recogiera en una prueba de referencia que no fuera pandoc, así que ese no es el problema. Conozco las alternativas, pero eso no es realmente relevante ya que las fuentes están disponibles. Si las alternativas fueran lo suficientemente buenas, no estaría usando fuentes personalizadas: P

Pandoc ya ha sido mencionado...

...pero PrinceXML también es un fuerte competidor.

Si bien Pandoc es software libre, PrinceXML es propietario (aunque de uso gratuito para fines privados). PrinceXML es realmente sólido cuando se trata de compatibilidad con CSS, y solo realiza conversiones de HTML/XML/CSS a PDF (sin necesidad de otras bibliotecas externas).

Pandoc requiere LaTeX para crear archivos PDF, pero Pandoc también puede lograr muchas otras conversiones de formatos de documentos (podría llamarlo la "navaja suiza" de las conversiones de documentos).


Actualizar:

Acabo de notar en la actualización del OP que ya había probado PrinceXML y estaba decepcionado. Esto probablemente podría depurarse si los archivos de entrada estuvieran disponibles de alguna manera para reproducirlos.

Pandoc también lo ha probado... sí, en Windows requiere una instalación adicional de MikTeX para que pueda convertir HTML a PDF.