Какой хороший стандарт документов использовать программно? - PullRequest
3 голосов
/ 21 июня 2010

Я пишу программу, которая требует ввода в виде документа, она должна заменить несколько значений, вставить таблицу и преобразовать ее в PDF.Он написан на Python + Qt (PyQt).Существует ли какой-либо известный стандарт документов, который можно легко использовать программно?Он должен быть кроссплатформенным и предпочтительно открытым.

  1. Я изучил Microsoft Doc и Docx, которые являются двоичными форматами, и я не могу их редактировать.У Python есть привязки для него, но они есть только в Windows.

  2. ODT / ODF в Open Office упакован в файл XML, так что я могу его отредактировать, но нет утилит командной строкиили любой способ программно преобразовать файл в PDF.Open Office предоставляет привязки, но вам нужно запустить Open Office из командной строки, запустить сервер и т. Д. На моих клиентах может быть не установлен Open Office.

  3. RTF доступен для чтения из Python, но я не смог найти какой-либо способ / библиотеки для преобразования документов RTF в PDF.

В данный момент я экспортирую из Microsoft Word в HTML, заменяю значения и использую PyQt дляпреобразовать его в PDF.Однако он теряет возможности форматирования и выглядит ужасно.Я удивлен, что нет хорошо известной библиотеки, которая позволяла бы вам редактировать различные форматы документов и конвертировать их в другие форматы, я что-то упустил?

Обновление: спасибо за совет, у меня будетвзгляд на использование латекса.

Спасибо, Джексон

Ответы [ 5 ]

9 голосов
/ 21 июня 2010

Вы изучали использование документов LaTeX?

Они идеально подходят для программного использования ( компиляция документов? Вам это нравится?), И у вас есть несколько платформ Python, которые вы можете использовать, например plasTeX и PyTex .

Экспорт документов LaTeX в PDF практически мгновенен.

2 голосов
/ 21 июня 2010

Поскольку вы все равно уже используете PyQt, возможно, стоит взглянуть на встроенный в Qt RTF-модуль обработки , который выглядит прилично. Вот документация по манипулированию контентом , включая вставку таблиц. Также форматом печати по умолчанию для модуля QPrinter является PDF.

Не зная больше о ваших конкретных потребностях, трудно сказать, будут ли они делать то, что вы хотите, но, поскольку ваше приложение уже имеет PyQt в качестве зависимости, кажется глупым вводить больше без оценки функциональности, которая уже доступна.

Части не-GUI инфраструктуры Qt часто упускаются из виду.

редактировать: включены дополнительные ссылки.

1 голос
/ 21 июня 2010

Возможно, вы захотите попробовать ReportLab . Версия с открытым исходным кодом может писать PDF-файлы, а коммерческая версия имеет множество действительно хороших абстракций, позволяющих выводить в различные форматы с одного входа.

0 голосов
/ 21 июня 2010

Создание XML-документов, их преобразование в XSL / fo и рендеринг с помощью Fop или RenderX.Если вы используете docbook в качестве основного ввода, есть свободно доступные наборы инструментов для его преобразования в PDF, RTF, HTML и т. Д.

Использовать это довольно странно, и я не представляю, как это интересно, но это действительно доставляети может быть встроен в приложение, AFAICT.

Создать документацию очень просто, поскольку он имеет широкий диапазон семантических тегов, поддержку таблиц и т. д., чтобы дать «значимую» разметку, которая может быть надежно отформатирована.Таблицы стилей XSL являются модульными и позволяют настраивать или заменять детали для создания собственного внешнего вида.

Хорошо работает для относительно свободных документов с большим количеством текста.

Для заполнениябланковые документы, лучше подойдет обычный механизм отчетов или несколько простых таблиц стилей XSL, из которых выплевывается XSL-fo напрямую.

0 голосов
/ 21 июня 2010

Я не знаю, какой вид вашей программы, Tex хорош, и я бы пошел с ним.
Другой возможный выбор - формат Excel, с синтаксическим анализом xlrd .
Я использовал его пару раз, и это довольно просто.
Файл Excel хорош по следующим причинам:

  1. Хорошо известный формат, легко редактируемый
  2. Вы можетеподготовить предопределенный шаблон с ограничениями и таблицей
...