Skip to main content
Join the official 2020 Python Developers SurveyStart the survey!

Produce books with Plone and export them in a high quality PDF.

Project description

This package provides content types for creating a book which can be exported as PDF.


  • Provides a content type “Book” which defines the root of a book.
  • Provides a content type “Chapter” for creating the structure of a book. Chapters are nestable.
  • Content is added to chapters using simplelayout blocks.
  • Provides an action for exporting the book or a single chapter recursively as PDF.
  • Provides LaTeX representations for the default simplelayout blocks.
  • Adds fields for injecting LaTeX code to every content type within a book using schemaextender.
  • Provides a “Reader” view which displays the book on one page for a enjoyable reading experience.
  • Provides simplalayout “Table” block for enter tabular data using a datagrid widget which generates HTML table representation which also convertable into a PDF.



  • Add to your buildout configuration:
eggs +=
  • Install the generic import profile.
  • Install a LaTeX distribution, see ftw.pdfgenerator install instructions.


Runs with Plone 4.3 and 5.1.

Development / tests

For running the full PDF generation tests ImageMagick is required for diffing the PDFs.

Since we need to re-compile the resources after each change, there is a watcher implemented started with yarn watch recompiling after each change.


This package provides an uninstall Generic Setup profile, however, it will not uninstall the package dependencies. Make sure to uninstall the dependencies if you no longer use them.


4.1.9 (2020-03-24)

  • Plone 5: Keywords must be editable. Add a new keyword if no keyword exists for the selected word, edit the existing one otherwise. [tinagerber]
  • Plone 5: Set initial keyword to selected text. [tinagerber]
  • Plone 5: Add German translation for keyword and footnote plugins. [tinagerber]

4.1.8 (2020-02-11)

  • Fix chapter listing numbers in “book_reader_view” view [Nachtalb]

4.1.7 (2020-01-22)

  • Fix usage of AT BaseUnit in pre/post latex code fields. [mathias.leimgruber]

4.1.6 (2020-01-21)

  • Fix numbering counter in chapters. [tinagerber]

4.1.5 (2020-01-21)

  • Fix csv import export (there was an issue with encoding and BOM). [busykoala]

4.1.4 (2020-01-09)

  • Add portal_types translations to plone domain. [tinagerber]

4.1.3 (2020-01-07)

  • Fix CSS counters. [djowett-ftw]

4.1.2 (2019-12-17)

  • Remove grunt watcher and add compiled resources. [busykoala]

4.1.1 (2019-11-20)

  • Remove referenceablebehavior. [busykoala]

4.1.0 (2019-11-14)

  • Add Plone 5 support. [busykoala]
  • Add grunt setup for development. [busykoala]

4.0.2 (2019-11-08)

  • Always use h2 heading chapter content and make chapter block more compact. [jone]
  • PDF: use external links for non-PDF content. [jone]
  • Remove “Type” column from listing block table in PDF. [jone]
  • Fix navigation and search settings for new DX types. [jone]
  • Fix chapter’s title translation. [jone]

4.0.1 (2019-11-04)

  • Add ftw.file (2.x) as dependency for ftw.file DX integration. [mathias.leimgruber]

4.0.0 (2019-11-04)

  • Reimplementation of with Dexterity [jone]
    • Is based on ftw.simplelayout (DX) instead of ftw.contentpage (AT).
    • The content type Remark is no longer supported. All instances must be removed before updating.
    • Files are no longer allowed in chapters, use file listing blocks instead.
    • Images are no longer allowed in chapters, use the image field of text blocks instead.
    • Links are no longer allowed in chapters, use text blocks instead.
    • Support for next / previous is dropped as it was not properly implemented / used.
    • LaTeX layouts need to be reimplemented: they are now instance behaviors.
    • An automatic content migration is provided.
  • Deprecate get_raw_image_data utils function. [jone]
  • Drop Plone 4.2 support. [jone]

3.5.4 (2019-02-05)

  • Fix: Make helper text appear [busykoala]
  • Drop Plone 4.2 support. [busykoala]

3.5.3 (2018-03-20)

  • Fix a parsing error if the table cell contains a HTML anchor tag. [mbaechtold]

3.5.2 (2017-04-06)

  • LaTeX: Vendorize tabulary.sty. [jone]

3.5.1 (2016-09-26)

  • Add missing quotes in img url (css). [mathias.leimgruber]

3.5.0 (2016-05-04)

  • Made table of contents depth configurable for web. [lknoepfel]

3.4.1 (2016-03-30)

  • Change footnote representation to avoid PDF rendering bugs. [jone]
  • Fix mimetype bug in LaTeX injection, making it impossible to enter values. [jone]

3.3 (2016-03-09)

  • Added footnote TinyMCE plugin. [lknoepfel]

3.2.0 (2015-05-26)

  • Move book specific styles from plonetheme.onegov to this package. [lknoepfel]
  • Added book context manager. [lknoepfel]
  • Include files from listing blocks in zip export. [mbaechtold]
  • Added ftw.zipexport integration. [lknoepfel]

3.1.0 (2015-03-19)

  • Drop Plone 4.1 compatibility. We test against ftw.publisher.core, which is not compatible. [jone]
  • ftw.publisher support: make sure the layout adapters are respected. [jone]
  • is incompatible with ftw.contentpage 1.11.0 and 1.11.1. The HTMLBlock fails when rendered in content pages. [jone]

3.0.3 (2015-01-22)

  • Interal Links in PDF: fix links to paths containing spaces. [jone]

3.0.2 (2015-01-21)

  • Listingblock PDF: remove caption added in ftw.contentpage 1.9.0. [jone]
  • Sort keywords normalized for a more intuitive order. [lknoepfel]
  • Make LaTeX view adapter’s layout descriminator more specific in order to avoid clash with similar adapters such as ++add++. [cillianderoiste]
  • Temporarly pin Products.DataGridField to 1.9.0, since 1.9.1 seems to break [mathias.leimgruber]

3.0.1 (2014-09-30)

  • Index: umlaut sorting support by quoting umlauts. [jone]
  • Fix scroll position when invoking reader on a block. [jone]
  • Use ftw.profilehook instead of custom import steps (setuphandlers). [jone]

3.0.0 (2014-07-11)

  • Show images in documents tab. [tschanzt]
  • Remove dependency to simplelayout.types.common. [jone]
  • Keywords: load select2 javascript translations. [jone]
  • Tables: no longer use description as caption. The description field is no longer visible for tables, therefore it should not be used as caption. [jone]
  • Drop Plone 4.1 support. [jone]
  • New separate “ Add Chapter” add permission. This used to be “simplelayout.types.common: Add Page”. [jone]
  • Refactor Table: hide irrelevant fields. [jone]
  • Refactor Remark to use ftw.contentpage’s TextBlock as basis. [jone]
  • Refactor HTMLBlock to use ftw.contentpage’s TextBlock as basis. [jone]
  • Make ftw.contentpage’s ListingBlock available in Chapters. [jone]
  • Improve support for book-internal links. TinyMCE is now configured properly so that book contents can be linked in rich text fields. The reader view now supports book internal links like anchors, allowing to jump between content while keep beeing on the reader view. In the PDF book internal links are now rendered with the page number of the link target if the target is included in the same PDF. [jone]
  • Add keywords with a keyword index and a TinyMCE plugin for adding keywords in the book text block rich text field. The keyword index may be enabled on the book and will be included in the PDF. When the index is enabled and ftw.tabbedview is installed and used for the book view, a new keywords tab is available which allows for fast finding keywords within the book. [jone]
  • Replace Paragraph with BookTextBlock. [jone]
  • Implement uninstall profile. [jone]
  • Added hidden link to leave the reader view. [Julian Infanger]

2.2.20 (2014-02-28)

  • Fix invalid markup in TOC trees: move <ul>s into <li>s. [jone]

2.2.19 (2014-02-05)

  • Update French and English translations. [jone]
  • Fix page width bug when using landscape with enforced onecolumn layout. The layout needs to be applied before switching to landscape. [jone]
  • Add new export / import icon for tables. [jone]
  • Table CSV import: fix line breaking issues. Some Excel version (at least OSX) represent line breaks with only r instead of rn, which caused import errors. [jone]

2.2.18 (2013-09-20)

2.2.17 (2013-09-11)

  • Fix literal book titles for default sphinx layout. The title is taken literally and does not need to be converted to LaTeX. [jone]

2.2.16 (2013-08-26)

  • Fix default layout schema extender to not extend in the factory. The values are not set correctly when in the factory. [jone]
  • Move “Modify LaTeX Injection” permission to lawgiver action group “manage content settings”, according to changes in ftw.lawgiver. [jone]

2.2.15 (2013-05-27)

  • Table object: make table generation more robust by catching parsing errors. [jone]
  • Table object: fix bad HTML standalone tags in table cells. [jone]

2.2.14 (2013-05-24)

  • Allow HTML in table objects. This makes it possible to do things such as marking only one word in a cell as bold or using <sup>. [jone]

2.2.13 (2013-05-24)

  • Register HTMLBlock view only for IWithinBookLayer. This allows us to reuse the block outside of a book with default simplelayout block view. The advantage is that the title is not book-style-numbered (dynamic_title). [jone]

2.2.12 (2013-04-16)

  • Lawgiver support: add permission. [jone]
  • JQuery 1.7 support in reader view: access height / positioning differently. [jone]
  • Fix floated images overlapping footnotes / page border. [jone]
  • Fix image floating / image widths in two column environment. [jone]
  • Table footnotes: use text/x-html-safe output format and only allow text/html input. [jone]
  • HTMLBlock: reset HTML otuput type of after making it more strict in simplelayout_schemas. [jone]
  • Let Contributors add Table objects by default. [jone]

2.2.11 (2013-01-24)

  • Fix nested and empty visual highlights causes LaTeX errors. [jone]
  • Fix bug when using hyphens within highlighted text. [jone]
  • Use local text formatting commands, such as textbf instead of {bf }. [jone]

2.2.10 (2013-01-21)

  • Fix move and copy for books. [tschanzt]
  • approved: add badge to readme. [jone]
  • Load missing CMFCore permissions. [jone]
  • Table: add new format combinations with indenting and grey. [jone]
  • Fix table data importer. [jone]
  • Add landscape support (admin only). [jone]
  • Add a checkbox to the LaTeX schemata for inserting column breaks. [jone]
  • Add fields to LaTeX schemata (admin) for inserting page breaks. [jone]
  • Add field to blocks for hiding a shown title from the table of contents. [jone]
  • Fix reader view so that it does not break when there are Discussion Items. [jone]
  • Add LaTeX two column support by adding a “preferred layout” field (admin only). [jone]
  • Index page: use navigation type configuration for excluding types, so that it also works with comments. [jone]
  • Fix navigation portlet eventhandler so that removing plone site does not break. [jone]

2.2.9 (2012-10-16)

  • Reader view: support min-height on #content element. [jone]
  • Fix navigation portlet when it is moved. [tschanzt]
  • Make documentstab work with document_date. [tschanzt]

2.2.8 (2012-08-20)

  • Disable filter box on “Index” tab. [jone]
  • Do not search block types but their parents (chapter), as this concept was changed in simplelayout. [jone]
  • Fix positioning floating images by inserting a zero-hspace. [jone]
  • Update German view translation. [jone]
  • Disable setting default page for Book and Chapter. Those types are not normal folders and setting the default page is therefore not common. [jone]

2.2.7 (2012-07-17)

  • Fix floating problem with full width images in paragraph blocks. [jone]
  • Chapter: define schema explicitly. [jone]
  • Fix issue with LinguaPlone: Imports from Products.LinguaPlone instead of Products.Archetypes. [treinhard]

2.2.6 (2012-06-26)

  • Support for LinguaPlone. [treinhard]

2.2.5 (2012-06-13)

  • Higlighting: include soulutf8 LaTeX package and move conversion to seperate subconverter for including the packages lazily. [jone]
  • Table: fix enitity handling in table generator. [jone]

2.2.4 (2012-06-11)

  • Paragraph: validate table widths and show a viewlet to editors with a hint that the table widths should be defined. [jone]
  • LaTeX: use soulutf8 instead of soul package for allowing utf8 characters in highlighted text. [jone]
  • Within books HTML <h?> tags should not be converted to LaTeX headers. We use chapters and block titles for building the book structure. This fixes inconsistency between plone view heading numbering and LaTeX’s numbering. [jone]

2.2.3 (2012-05-16)

  • Fix latexinjection extender - use IWithinBookLayer. [mathias.leimgruber]
  • Fix LaTeX markup of Remark. [jone]
  • Refactor image handling. [jone]

2.2.1 (2012-05-09)

  • Table LaTeX view: fix footnote LaTeX conversion. [jone]
  • Optimized Table-layout so that it is more like plone default. [eschmutz]
  • Fix condition in paragraph latex view (blob storage). [mathias.leimgruber]

2.2 (2012-04-30)

  • Switch Book metadata fields to AttributeStorage. [jone]
  • Add new content-type: Table [eschmutz]
  • Add new content-type: Remark. Used to add comments in a chapter of a book [eschmutz]

2.1 (2012-04-02)

  • Added a alternative default book view based on ftw.tabbedview [mathias.leimgruber]
  • Added ftw.tabbedview based overview. [mathias.leimgruber]

2.0.2 (2012-03-22)

  • Fix view_methods of Book FTI (should include default view). [jone]

2.0.1 (2012-03-22)

  • Fix heading counters: count objects where the user has no View permission. [jone]
  • Reset heading counters for getting consistent heading numbers on partical exports. #6 [jone]
  • Use term “Version” instead of “Release” in default book layout. #5 [jone]
  • Added simplelayout-block-wrapper to chapter view (Simplelayout issue). [mathias.leimgruber]

2.0 (2012-03-05)

  • Add HTML Block content type. [jone]
  • Add upgrade step for setting default book layout. [jone]
  • Default layout: add logo and logo-width fields. [jone]
  • Look for css class ‘bookReaderLastElement’ when trying to determine the last element for reader height calculation. [buchi]
  • Set Content-Type header for JSON responses to ‘application/json’ to prevent theming. [buchi]
  • Compatibility with new simplelayout version on plone4 branch. [jone]
  • Implement a seperate class for chapters. There is a migration step for migrating existing chapters. [jone]
  • Fix edit icon for chapters. [jone]
  • Remove pagestyle field: pagestyle is not support by the new layout. [jone]
  • Use schema extender for enabling default-layout specific fields. Move default layout to seperate module. [jone]
  • Implement support for multiple layouts, selectable in the book. [jone]
  • Re-add converting visualHighlight to new ftw.pdfgenerator implementation. [jone]
  • Add “PDF” action to folder_contents on book and chapter types. This allows do export only the selected chapters. [jone]
  • Use export_pdf view instead of as_pdf since it was changed in ftw.pdfgenerator. [jone]
  • Image block PDF representation: use description as caption and use no caption if description is empty. [jone]
  • Add fields release, author and author address to book, used in latex layout. [jone]
  • Add missing fncychap.sty to default layout (required by sphinx layout). [jone]
  • Fix a bug which made the pdflatex process hanging when an image had no valid layout defined. Defaulting to 100% width fixes the issue. [jone]
  • Replace plonegov.pdflatex with ftw.pdfgenerator. [jone]
  • Fix schema extender problem with schema extender. [jone]
  • Added Bookview which displays the table of contents of the book [ttschanz]
  • Fix bug where PDF rendering failed: Remove uncessary / wrong acqusition wrapper check. [jone]
  • Use TOC-prefixes for displaying headers within a book. Display headers within a book in the right size. [eschmutz]
  • Add a IWithinBookLayer request layer. [jone]
  • Implemented a navigation portlet on book level, which does not display parents for narrowing into the context. An additional back-to-parent portlet provides a link to the parent. [ttschanz]

1.1.1 (2011-10-19)

  • Readerview: fix strange brain comparing problem by building the toc numbers in a different way. [jone]

1.1 (2011-10-18)

  • Implemented new reader view displaying the whole book with AJAX lazy loading. [jone]
  • Code cleanup and tests improvement. [jone]
  • Added LaTeX code injection support for admin users. Allows to inject LaTeX code before and after every object within a book. [jbaumann]
  • Added custom html2latex rule for rendering <span class=”vislualHighlight”> [jbaumann]

1.0 (2010-11-02)

  • Added Icons / fix / egg structure. [mathias.leimgruber]
  • LaTeX options (toc, loi, lot, …), links and images in latex. [jinfanger]

0.1 (2009-09-04)

  • Implemented support for title page, table of contents and other listings. [jinfanger]
  • Added action for rendering a book or a chapter as PDF. [jinfanger]
  • Implementation of basic features.

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Files for, version 4.1.9
Filename, size File type Python version Upload date Hashes
Filename, size (423.9 kB) File type Source Python version None Upload date Hashes View

Supported by

Pingdom Pingdom Monitoring Google Google Object Storage and Download Analytics Sentry Sentry Error logging AWS AWS Cloud computing DataDog DataDog Monitoring Fastly Fastly CDN DigiCert DigiCert EV certificate StatusPage StatusPage Status page