PDF Таблицы произвольных (в пределах разумного) Ширина - PullRequest
2 голосов
/ 07 мая 2009

Я знаю, что генерация PDF много обсуждалась здесь; Однако я еще не нашел то, что мне нужно.

Я пытаюсь генерировать отчеты в формате PDF (в основном таблицы) из python. Да, я пробовал ReportLab и Пизу. В обоих случаях содержание колонки «вспыхивало» в обстоятельствах, которые я не считал необоснованными и нереальными для производства.

Когда я говорю разумно, я имею в виду 8-12 столбцов различной ширины. Не 80 - 1200 или что-то подобное.

Мне не нужно нативное решение Python, так как я смогу запустить мой скрипт из командной строки Linux.

У меня есть эти отчеты, работающие в XHTML, и они выглядят более или менее безупречно ... Я бы предпочел использовать их.

Что я спрашиваю: кто-нибудь знает об инструменте, который я могу использовать, который будет отображать таблицы произвольного (опять же в разумных пределах) размера в PDF с качеством, близким к визуализации в браузере XHTML?

Я бы хотел использовать что-то вроде PrinceXML; однако размер этого проекта не оправдывает затраты на такой инструмент.

Кроме того, я пытался сделать то, что мне нужно, в латексе, к чему я не привык, но если это хорошая идея Я был бы признателен за пример.

С уважением и заранее спасибо.

Ответы [ 3 ]

3 голосов
/ 08 мая 2009

Я полностью согласен с ответом Брэндона Крейга Роудса. TeX, простой или с пакетом макросов вроде LaTeX или ConTeXt, был бы хорошим решением, если бы Вам нужно высокое качество продукции. Однако TeX - тяжелая зависимость

Если вы ищете более легкую альтернативу, вы можете попробовать

  • сгенерируйте xsl-fo и визуализируйте его с помощью apache-fop или

  • написать оболочку Python вокруг iText .

Оба могут создавать таблицы произвольной ширины с границами. xsl-fo не слишком сложен в изучении, и если вы привыкли к XML, генерировать, чем код LaTeX.

iText - это мощная библиотека PDF, доступная в MPL и LGPL. Есть версии, написанные на Java и C #, но, к сожалению, в Python его пока нет.

2 голосов
/ 07 мая 2009

Использование TeX может дать вам хорошие результаты. Я сам хотел бы избежать LaTeX, но это потому, что это действительно сложный пакет макросов, и я никогда не понимал его, когда пытался его использовать; к тому же, по крайней мере, учитывая мои вкусы, это казалось очень многословным способом разметки моего текста по сравнению с тем, что я привык использовать в простом TeX.

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

Но если ваши данные - просто обычные строки, тогда мы можем попробовать напечатать таблицу без нее. Вот пример:

#!/usr/bin/env python

import os

# Create a 2x3 PDF table of items, using TeX.

format = r"# \hfil & \hfil #"
data = [['Hydrogen', 1],
        ['Silicon', 14],
        ['Mercury', 80]]

table_data = r'\cr '.join('&'.join(str(i) for i in row) for row in data)

f = open('table.tex', 'w')
f.write(r"\halign{" + format + r"\cr " + table_data + r"\cr}\end")
f.close()

os.system("tex table.tex")
os.system("dvipdf table.dvi")

Большая проблема, как вы можете видеть из PDF этих продуктов (если вы запустите его и посмотрите), состоит в том, что таблица не имеет границ, и, если вы посмотрите на TeXBook, вы обнаружите, что их производство - хотя это всегда возможно - не самая естественная или очевидная операция.

Если подумать, возможно, LaTeX будет иметь какое-то применение, если бы у него были макросы для облегчения создания таблиц с границами. : -)

Кстати, вы только что посмотрели, можно ли сделать WebKit или любой другой бэкэнд браузера для создания PDF-файлов непосредственно из HTML, из командной строки? Они производят PDF-файлы для печати; должен быть способ воспользоваться этим, чтобы превратить ваш HTML в PDF напрямую.

1 голос
/ 08 мая 2009

Автономная программа: wkhtmltopdf - это именно то, что мне нужно. PDF-рендеринг XHTML лучше всего виден из бесплатного инструмента.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...