Преобразование HTML в PDF с помощью утилиты convert в Mac OS X

Я пытаюсь преобразовать кучу файлов HTML в файлы PDF. Я ищу автоматизированное решение, чтобы мне не приходилось открывать каждый файл HTML по отдельности и преобразовывать его в PDF. В Mac OSX convertутилиту можно использовать для преобразования файлов HTML в PDF. Я столкнулся с двумя проблемами.

  1. convertутилита не применяет стиль CSS к сгенерированному содержимому PDF.
  2. Мой AppleScript для пакетного преобразования не работает.

Вот мой 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

Я использую этот скрипт для создания .app, а затем перетаскиваю папку документов в сгенерированный файл .app. Обратите внимание, что все изображения, связанные с изображениями, помещаются в подкаталог/подпапку. Структура моего документа выглядит так:

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

Какие-либо предложения?

@Mustafa Вам следует избегать перекрестных публикаций - попросите модератора перенести его для вас.
Я считаю, что stackoverflow более заметен, чем stackexchange. Дубликат не повредит, он может просто работать для меня.
Вы смотрели в textutilкоманду? Он также поддерживает HTML.
@mankoff, я сделал. Он не поддерживает преобразование файлов html в pdf. Он поддерживает: txt, html, rtf, rtfd, doc, docx, wordml, odt или веб-архив.

Ответы (2)

Взгляните на wkhtmltopdf — утилиту командной строки, которая использует механизм рендеринга WebKit для создания PDF-файлов из HTML. Я обнаружил, что это дает более приятный результат. У вас не должно возникнуть проблем с его интеграцией с вашим текущим скриптом.

Просто запустил ./wkhtmltopdf *.html *.pdf, и он отлично работал, за исключением. Он создал файл «*.pdf» вместо отдельных файлов для каждого html. Знаете ли вы, поддерживает ли эта утилита создание отдельных файлов? Большое спасибо.
Привет, Мустафа, попробуйте что-то вроде (в каталоге HTML-файлов) for f in *.html; do wkhtmltopdf $f "$f.pdf"; done, чтобы просмотреть файлы в каталоге.
С небольшой модификацией, например for f in *.html; do ./wkhtmltopdf "$f" "$f.pdf", он прекрасно работает. Большое спасибо.

Рассматривали ли вы возможность написания сценария AppleScript для открытия каждого HTML-файла в веб-браузере с поддержкой сценариев (например, Safari), а затем использования стандартной команды печати браузера для печати в файл PDF?

Хм, я не очень хорошо разбираюсь в AppleScript :) На самом деле, в последнее время я делал только что-то похожее на Hello World на AppleScript.
Команда экрана печати Chrome на некоторых сайтах (например, на этом сайте) не создает точную копию html на сайте. Таким образом, в зависимости от потребностей может потребоваться более точное решение wkhtmltopdf.