Content abstaction framework

Testing Status Coverage Status Code Climate

LCG is a Python framework for content abstraction and generic document processing. Documents can be constructed as a structure of Python objects. LCG defines standard content elements (paragraphs, sections, formatted text, etc...) as well as many advanced constructs (multimedia, mathematics, interactive widgets) and supports extensibility through definition of third party content elements. Content can be exported into different output formats, such as HTML, PDF, Braille, IMS, EPUB and others and imported from different source formats (text markup, internal serialization, etc.).

LCG is mostly a tool for software developers who need an abstraction for generating structured documents including either generic content elements or custom content elements defined by the developer. However, LCG can also be directly used by end users as a tool for processing documents defined in simple and well readable source format into various target formats (such as HTML or PDF).

Some key requirements leading to developing LCG were:

  • True separation of content and its presentation.
  • Support for multimedia and interactive content.
  • Accessibility for users of assistive technologies.
  • Extensibility allowing definition of new content elements and customizing the output presentation of pre-defined elements.
  • Respect to standards (namely W3C standards for the relevant output formats).
  • Internationalization (support for several language variants of one document, as well as intermixing more languages in one document).

LCG is a Free Software distributed under the terms of GNU General Public License.

LCG is used as content abstraction layer in Wiking web application development toolkit and was also used for generating on-line e-learning courses for the Eurochance project. Other use cases are generating documentation for applications built on Pytis toolkit and building documentation generally.

The source code is managed using Git. You can use the Git web interface or clone the repository from:


There is a public mailing-list for this project.

This list is for for LCG developers, as well as for users. If you want to contribute the development, propose a new feature, get help or just be informed about the latest news, don't hesitate to subscribe. The communication on this list is held in English.

See also the listing of other Free(b)soft mailing lists.