Mac: как конвертировать файлы Excel (и другие) в PDF программно
Я заинтересован в программном преобразовании электронной таблицы Excel / книги в файл PDF. Другие спросили и ответили на этот вопрос (см. « Как конвертировать документы Word и Excel в PDF программно» и конвертировать Excel в pdf в python ), но ни один из них не делает то, что я хочу сделать:
- Мне нужен инструмент командной строки, который не требует использования Microsoft Office.
- Я бы хотел, чтобы он работал на Mac.
- Я хочу, чтобы он сделал полную таблицу; решение Perl имеет только константы.
- Я бы хотел использовать что-то, что уже отлажено, а не писать код.
Мне кажется, что простой способ сделать это должен быть с системой Quick Look, встроенной в MacOS. MacOS имеет способы предварительного просмотра любого документа (выберите его в Finder и нажмите пробел). У него также есть способы конвертировать вещи в PDF. Должен быть способ использования встроенных знаний Apple о том, как визуализировать файлы XLS и XLSX. Я просто не знаю, как использовать QuickLook из командной строки и как получить его для вывода PDF-файла в файл.
Apple действительно предоставляет программу под названием qlmanage
которая может использоваться для программного создания HTML-файлов и PNG, но она создает набор файлов HTML, а не файл PDF.
- Преобразование csv в xls с использованием python
- Как разбирать / читать файл excel (.xls или .xlsx) в AngularJS, который уже присутствует на сервере?
- Восстановление жирного текста в ячейке с помощью POI
- Повреждение данных электронной почты Spreadsheet_Excel_Writer
- Файл Excel, сохраненный javamail API, не читаемый API Apache Poi
- Почему моя таблица сохраняется с расширением .xlsx, но не произойдет, пока я не изменю ее на .xls?
- Чтение файла XLS из VB6
- Создайте файл xls с помощью PL / SQL без прохождения через xml
- Генерация MySQL для Excel с использованием PHP
- Возможно ли использовать шаблон рабочей книги на основе динамических параметров .xls?
- Создание правильного формата excel xls
- Response.ContentType application / vnd.ms-excel xls перестает работать
- Экспорт таблиц HTML в Excel (.xls) на отдельном листе
Ну, я придумал решение, которое включает использование qlmanage
и wkhtmltopdf
. В принципе, я запускаю qlmanage для создания HTML и использую wkhtmltopdf для преобразования HTML в PDF. К сожалению, HTML-страницы создаются в более или менее случайном порядке, поэтому мне нужно посмотреть список свойств, чтобы выяснить, на какую страницу поставить. К счастью, на моих книгах страницы можно сортировать.
#!/usr/bin/python # # convert an excel workbook to a PDF on a Mac # # from subprocess import Popen,call,PIPE import os, os.path, sys import xml.dom.minidom import plistlib if len(sys.argv)==1: print("Usage: %s filename.xls output.pdf" % sys.argv[0]) exit(1) if os.path.exists("xdir"): raise RuntimeError,"xdir must not exists" os.mkdir("xdir") call(['qlmanage','-o','xdir','-p',sys.argv[1]]) # Now we need to find the sheets and sort them. # This is done by reading the property list qldir = sys.argv[1] + ".qlpreview" propfile = open("%s/%s/%s" % ('xdir',qldir,'PreviewProperties.plist')) plist = plistlib.readPlist(propfile) attachments = plist['Attachments'] sheets = [] for k in attachments.keys(): if k.endswith(".html"): basename = os.path.basename(k) fn = attachments[k]['DumpedAttachmentFileName'] print("Found %s -> %s" % (basename,fn)) sheets.append((basename,fn)) sheets.sort() # Finally use wkhtmltopdf to generate the PDF output os.chdir("%s/%s" % ('xdir',qldir)) cmd = ['wkhtmltopdf']; for (basename,fn) in sheets: cmd.append(fn) cmd.append(sys.argv[2]) call(cmd) os.chdir("../..") call(['/bin/rm','-rf','xdir'])
Без написания кода, я думаю, что могу проверить следующее:
сначала установите CUPS-PDF, который представляет собой общую систему пост-сценариев, которая напрямую связана с CUPS, система OS-X использует для печати. Он позволяет печатать непосредственно в pdf и отображается как другой параметр принтера в меню печати. После установки вы можете использовать автомат для печати какого-либо определенного элемента поиска, из нестандартного рабочего потока неавтоматического устройства, выберите « Utilities -> Print Finder Items
поиска», и вы можете выбрать, какой драйвер распечатать, чтобы вы могли выбрать вариант CUPS-PDF.
вы можете сохранить приложение в виде капли или приложения и вызвать из командной строки
Но я не был бы уверен, как указать аргументы, такие как входные файлы, чтобы можно было провести какое-то исследование, или вам может потребоваться просто использовать автомат, чтобы получить все элементы поиска в определенном месте и перенести элементы там с bash заранее.