Conversión de HTML a PDF usando la utilidad de conversión en Mac OS X

Estoy tratando de convertir un montón de archivos HTML en archivos PDF. Estoy buscando una solución automatizada para no tener que abrir cada archivo HTML individualmente y convertirlo a PDF. En Mac OSX, convertla utilidad se puede utilizar para convertir archivos HTML a PDF. Me enfrento a dos problemas.

  1. convertLa utilidad no está aplicando el estilo CSS al contenido PDF generado.
  2. Mi AppleScript para conversión por lotes no funciona.

Aquí está mi AppleScript:

on open input_documents
    repeat with this_document in input_documents

        if this_document is not document file then
            set this_document_path to POSIX path of this_document
            do shell script "/System/Library/Printers/Libraries/convert -f " & quoted form of this_document_path & " -o " & quoted form of this_document_path & ".pdf"
        end if
    end repeat
end open

Utilizo este script para crear una .app y luego arrastro la carpeta de documentos al archivo .app generado. Tenga en cuenta que todas las imágenes asociadas con las imágenes se colocan en un subdirectorio/subcarpeta. La estructura de mi documento se ve así:

/HTML
/HTML/Images/
/HTML/a.html
/HTML/b.html

¿Alguna sugerencia?

@Mustafa Debe evitar la publicación cruzada: solicite a un moderador que lo migre por usted.
Creo que stackoverflow tiene más visibilidad que stackexchange. Duplicar no hará daño, podría funcionar para mí.
¿Has mirado en el textutilcomando? También es compatible con HTML.
@mankoff, lo hice. No admite la conversión de archivos html a pdf. Admite: txt, html, rtf, rtfd, doc, docx, wordml, odt o webarchive

Respuestas (2)

Eche un vistazo a wkhtmltopdf , una utilidad de línea de comandos que utiliza el motor de renderizado WebKit para producir archivos PDF a partir de HTML. He encontrado que produce un mejor resultado. No debería tener problemas para integrarlo con su script actual.

Acabo de ejecutar ./wkhtmltopdf *.html *.pdfy funcionó muy bien, con una excepción. Produjo un archivo "*.pdf" en lugar de archivos separados para cada html. ¿Sabes si esta utilidad tiene el soporte para generar archivos separados? Muchas gracias.
Hola Mustafa, intenta algo como (en un directorio de archivos HTML) for f in *.html; do wkhtmltopdf $f "$f.pdf"; donepara recorrer los archivos en un directorio.
Con una pequeña modificación, por ejemplo for f in *.html; do ./wkhtmltopdf "$f" "$f.pdf", funciona maravillosamente. Muchas gracias.

¿Ha considerado escribir un script AppleScript para abrir cada archivo HTML en un navegador web programable (como Safari) y luego usar el comando de impresión estándar del navegador para imprimir en un archivo PDF?

Hm, no soy tan bueno con AppleScript :) De hecho, recientemente solo he hecho cosas como Hello World en AppleScript.
El comando de impresión de pantalla de Chrome en ciertos sitios (este sitio, por ejemplo) no produce una réplica exacta del html en el sitio. Por lo tanto, la solución wkhtmltopdf más precisa podría ser necesaria, según las necesidades.