Я ищу инструмент для хорошей генерации единственной страницы PDFs. Мои потребности:
В сущности я ищу инструмент X, который является к OODraw/CorelDraw/..., как ЛАТЕКС к Word OOWrite/MS.
Я посмотрел на webkit2pdf и бездисплейный OODraw, но оба кажутся чем-то вроде излишества. XML-FO имеет некоторые ограничения, такие как неспособность предсказать, сколько страниц Ваш документ охватывает. Reportlab дорог.
Какие-либо идеи?
Спасибо!
ReportLab может быть хорошим решением:
Инструментарий ReportLab - это проверенный временем, сверхпрочный механизм с открытым исходным кодом для программного создания PDF-документов и основа RML; он также содержит библиотеку для создания платформонезависимой векторной графики. Это быстрое, гибкое, кроссплатформенное решение, написанное на языке Python.
Альтернативой TikZ является использование Metapost с контекстом: это немного более выразительный язык, чем PGF, базовый язык для TikZ, в рамках языка обработки на основе Tex, Context, который лучше подходит для макета страницы в PDF, чем Latex или Plain Tex.
Три момента в пользу Context / Metapost:
И три в пользу Latex / TikZ:
Лучше всего начать узнавать об использовании контекста с Metapost два (длинных!) Вводных руководства Ханса Хагена: Контекст: экскурс и Metafun (Metafun - это реализация Metapost с некоторыми расширениями).
Определенно PGF/TikZ. Точка продажи:
Создано этим кодом:
% Rooty helix
% Author: Felix Lindemann
\documentclass{minimal}
\usepackage{tikz}
\usetikzlibrary{calc}
\begin{document}
\pagestyle{empty}
\pgfdeclarelayer{background}
\pgfdeclarelayer{foreground}
\pgfsetlayers{background,main,foreground}
\xdefinecolor{darkgreen}{RGB}{175, 193, 36}
\newcounter{cntShader}
\newcounter{cntRoot}
\setcounter{cntShader}{20}
\def\couleur{darkgreen}
\begin{tikzpicture}
\foreach \y in {86,38,15}{
\setcounter{cntShader}{1}
\coordinate (a) at (0,0);
\coordinate (b) at (0:1);
\foreach \x in {1,...,\y}{%
\coordinate (c) at ($ (b)!1cm!270:(a) $);
\begin{pgfonlayer}{background}
\draw[fill=\couleur!\thecntShader] (a)--(b)--(c)--cycle;
\end{pgfonlayer}
\setcounter{cntRoot}{\x}
\addtocounter{cntRoot}{1}
\node[fill=white,draw,circle,inner sep=1pt] at (c)
{$\sqrt{\thecntRoot}$};
\coordinate (b) at (c);
\pgfmathsetcounter{cntShader}{\thecntShader+4}
\setcounter{cntShader}{\thecntShader}
}
}
\node[fill=white,draw,circle,inner sep=1pt] at (0:1) {$\sqrt{1}$};
\end{tikzpicture}
\end{document}
Откровенно украдено из примеров.