SlideShare a Scribd company logo
1 of 31
Download to read offline
Andreas Jung • info@zopyx.com • print-css.rocks
State of PrintCSS in 2023
MarkupUK 2023, London
Agenda
(this is not a PrintCSS tutorial)
• Brief introduction to PrintCSS and its standards
• The problems with comparing tools
• Free PrintCSS tools
• Commercial CSS tools
• Role of Javascript in PrintCSS
• The pain points with PrintCSS
• Decision criteria
• Q & A
Publishing developer & consultant
since mid-90s
https://print-css.rocks
https://andreas-jung.com
✉ info@zopyx.com
Funder of print-css.rocks project
Independent PrintCSS consulting
- Software developer & software architect
- Requirements engineering
- Python developer & Python expert
- NGOs, EDU
- medical & pharmaceutical
- energy
- research & development quantum mechanics
- CMS Solutions
- Publishing Solutions
- Individual software solutions
About me
Introduction
The PrintCSS process
• Input: HTML (or XML)
• Styling: CSS
• Formatting: a free or commercial PrintCSS renderer
• Output: PDF
Definition of „PrintCSS“
„PrintCSS“ synonym for „W3C CSS Paged Media“
W3C CSS Paged Media Level 3 (2018)
• the official standard for generated paginated content aka
PDF from HTML using cascading stylesheets (CSS)
Related standards:
• CSS Generated Content for Paged Media Module (2014, GCPM)
Comparing tools, metrics and their problems
How to compare tools in a reasonable way?
Problems
• we have many PrintCSS tools
• we have hundreds of CSS properties + PrintCSS specific CSS properties
• we can not test all tools against all CSS properties
(not manually, not automatically)
• W3C standards do not cover everything, leaving room for interpretations
Metrics and approach of print-css.rocks
• testing the core PrintCSS features (W3C Paged Media, GCPM)
• focus on high-level topics (e.g. footnotes, CSS grid, RTL)
How we do in print-css.rocks?
How we do in print-css.rocks?
How we do in print-css.rocks?
Standards, non-standards and extensions
Example: variations on footnotes
…not even talking of
• endnotes 😈
• sidenotes 😈
Standard
no standard
Free PrintCSS renderers
Free PrintCSS renderers
(Feature selection is highly opinionated)
WeasyPrint Vivliostyle PagedJS
Python
Javascript/
Chromium
Javascript/
Chromium
✅ solid core
✅ Flexbox
✅ Hyphenation
✅ simple footnote support
✅ solid core
✅ Javascript support
✅ MathML
✅ simple footnote support
❌ Grid
❌ Javascript
❌ XML
❌ Hyphentation
❌ XML
❌ many unfixed issues and bugs
good community support good community support community support 🤷
👍
actively maintained
👍
actively maintained
👎👎
badly maintained
Commercial PrintCSS renderers
Commercial PrintCSS renderers
(Feature selection is highly opinionated)
Typeset.sh Prince PDFreactor BFO Publisher
Antennahouse
Formatter
PHP Java Java
✅ solid core
✅ Grid & Flexbox
✅ very mature
✅ Javascript
✅ Flexbox
✅ excellent docs/examples
(https://css4.pub/)
✅ XML
✅ very mature
✅ Javascript
✅ Grid & Flexbox
✅ XML
✅ solid core ✅ very mature
✅ most advanced
typography features
✅ most complete
✅ XML
• young project
• has some rough edges
here and there
❌ Grid • young product
• has some rough edges
• not much experience
❌ Grid
❌ Flexbox
❌ Javascript
✅ excellent support ✅ excellent support ✅ excellent support ✅ excellent support
👍
actively maintained
👍👍
actively maintained
👍
actively maintained
👍
actively maintained
👍👍
actively maintained
89 € (annual)
or 499 € (perpetual licence)
3800 USD (4 CPUs) 2.950 € (4 CPUs) n/a 5000 USD (1st CPU)
* check pricing for educational license or „personal“ usage licenses
Role of Javascript?
Why Javascript?
Javascript is the „Franca Lingua“ of the web (besides HTML)
Javascript on the web:
• no modern web solutions without Javascript
• omnipresent
Javascript in Print/PrintCSS
• provide enhanced visualizations (graphs, charts etc) from the web in print
• for content: ideally Javascript visualization that work on the web, should work in PrintCSS
• for internal usage: influencing the rendering process of the PrintCSS renderer
• generating TOC, listings, indices
Situation of Javascript support in renderers
well…
Renderer PagedJS Prince PDFreactor Vivliostyle
Implementation Chromium/native custom JS engine custom JS engine Chromium/native
JS compatibility for
PDF generation
unknown selected JS packages selected JS packages
best compatibility for JS
modules (where they
make sense)
JS for internal usage unknown
• adaptive rendering
• adaptive image scaling
• table of contents
• adaptive rendering
• adaptive image scaling
• table of contents
unknown
The pain points with PrintCSS
The dark side of PrintCSS and its renderers
Problems and pain points
• inconsistent implementations and behavior of renderers
(due to incomplete or inconsistent Paged Media specifications)
• different defaults (page size, borders, page area dimensions etc.)
• easy things often work differently across tools
• complex topics
• floats
• adaptive rendering of images
• handling of long or wide tables
Decision criteria
Is your publishing use case suitable for PrintCSS?
Automatic typesetting
means automatic!!!
No manual interaction!!!
Know your typographic and layout requirements
…an opinionated selection of criteria
• Is your publication text-oriented or layout-oriented?
• Do you need a grid system or flex box?
• Do you need a baseline grid?
• Support for multiple columns needed?
• Footnotes required?
• Floating objects needed?
Do I need Javascript?
• Do you have to interact with external Javascript modules
(charts etc.)?
• Do you need Javascript support inside the renderer or can you
prepare Javascript-based assets in a pre-processing step?
Do I have XML or HTML as input?
• only some renderers speak XML natively
• but all renderers handle HTML
• raw XML often not directly suitable unless transformed
to publishable XML or HTML
• PrintCSS is not a transformation framework
• flat or nested HTML?
• personal preference: nested HTML but YMMV
Do I have special PDF requirements?
• PDF metadata
• PDF variants
• PDF/UA (accessibility)
• PDF/X (print)
• PDF/A (archiving)
• supported by most commercial renderers
• PDF security (encryption, signing)
• supported by most commercial renderers
Other features needed?
• Scientific context? (formulas, MathML, MathJax)
• integration of renderers in workflows:
• all tools run on the command line
• some tools provide a server mode
• some tools provide APIs for integration with PHP, Python etc.
• Produce & Publish server (abstraction of renderers)
Recommendations
Recommendation and hints
• be aware of your special requirements
(regarding more complex features)
• build prototypes and evaluate against different renderers
• use CSS variables (not widely supported)
• consider using CSS preprocessors (e.g. Less, Sass)
for complex workloads
• start with free tools, use commercial tools if needed
Q & A
Thank you for listening
Andreas Jung • info@zopyx.com • print-css.rocks

More Related Content

What's hot

Content Design & its Role in SEO and Accessibility [BrightonSEO Spring 2023]
Content Design & its Role in SEO and Accessibility [BrightonSEO Spring 2023]Content Design & its Role in SEO and Accessibility [BrightonSEO Spring 2023]
Content Design & its Role in SEO and Accessibility [BrightonSEO Spring 2023]Chloe Smith
 
BrightonSEO - Amanda Jordan.pptx
BrightonSEO - Amanda Jordan.pptxBrightonSEO - Amanda Jordan.pptx
BrightonSEO - Amanda Jordan.pptxAmanda Jordan
 
Monet BrightonSEO Slides 2022
Monet BrightonSEO Slides 2022Monet BrightonSEO Slides 2022
Monet BrightonSEO Slides 2022MonetBlake
 
Influencing Discovery, Indexing Strategies For Complex Websites
Influencing Discovery, Indexing Strategies For Complex WebsitesInfluencing Discovery, Indexing Strategies For Complex Websites
Influencing Discovery, Indexing Strategies For Complex WebsitesDan Taylor
 
How to rethink the traditional SEO workspace to promote team wellbeing and pr...
How to rethink the traditional SEO workspace to promote team wellbeing and pr...How to rethink the traditional SEO workspace to promote team wellbeing and pr...
How to rethink the traditional SEO workspace to promote team wellbeing and pr...Varn
 
BrightonSEO Slides April 2023
BrightonSEO Slides April 2023BrightonSEO Slides April 2023
BrightonSEO Slides April 2023Cheryl Luzet
 
BrightonSEO 2022.pdf
BrightonSEO 2022.pdfBrightonSEO 2022.pdf
BrightonSEO 2022.pdfIlia Markov
 
Brighton SEO 2023 - ML Lessons For Total Search.pdf
Brighton SEO 2023 - ML Lessons For Total Search.pdfBrighton SEO 2023 - ML Lessons For Total Search.pdf
Brighton SEO 2023 - ML Lessons For Total Search.pdfMaxFlajsner1
 
Why your tech optimisations are still sat in the backlog
Why your tech optimisations are still sat in the backlogWhy your tech optimisations are still sat in the backlog
Why your tech optimisations are still sat in the backlogVicky481083
 
BrightonSEO 2023 - Introduction to Search Engines Beyond Google - N Witczyk.pdf
BrightonSEO 2023 - Introduction to Search Engines Beyond Google - N Witczyk.pdfBrightonSEO 2023 - Introduction to Search Engines Beyond Google - N Witczyk.pdf
BrightonSEO 2023 - Introduction to Search Engines Beyond Google - N Witczyk.pdfNatalia Witczyk
 
Imagination Performance: Thinking Beyond GPT
Imagination Performance: Thinking Beyond GPT Imagination Performance: Thinking Beyond GPT
Imagination Performance: Thinking Beyond GPT Dr. Lydia Kostopoulos
 
Data Driven Approach to Scale SEO at BrightonSEO 2023
Data Driven Approach to Scale SEO at BrightonSEO 2023Data Driven Approach to Scale SEO at BrightonSEO 2023
Data Driven Approach to Scale SEO at BrightonSEO 2023Nitin Manchanda
 
How to produce great multilingual content, even when you can't read it | Laur...
How to produce great multilingual content, even when you can't read it | Laur...How to produce great multilingual content, even when you can't read it | Laur...
How to produce great multilingual content, even when you can't read it | Laur...Oban International
 
Agile SEO: Prioritise SEO Activities with Cadence and Risk Radius
Agile SEO: Prioritise SEO Activities with Cadence and Risk RadiusAgile SEO: Prioritise SEO Activities with Cadence and Risk Radius
Agile SEO: Prioritise SEO Activities with Cadence and Risk RadiusParth Suba
 
How to put together a search strategy for a new category
How to put together a search strategy for a new categoryHow to put together a search strategy for a new category
How to put together a search strategy for a new categoryAmir Jirbandey
 
ChatGPT_Cheatsheet_Costa.pdf
ChatGPT_Cheatsheet_Costa.pdfChatGPT_Cheatsheet_Costa.pdf
ChatGPT_Cheatsheet_Costa.pdfssuser3e5d3a
 
Shining a light on the dark funnel
Shining a light on the dark funnelShining a light on the dark funnel
Shining a light on the dark funnelRiaz Kanani
 
How to get your SEO work prioritised in house - Maddie McCartney.pptx
How to get your SEO work prioritised in house - Maddie McCartney.pptxHow to get your SEO work prioritised in house - Maddie McCartney.pptx
How to get your SEO work prioritised in house - Maddie McCartney.pptxMaddie McCartney
 
SEO Prompt Engineering - A Duda Webinar
SEO Prompt Engineering - A Duda WebinarSEO Prompt Engineering - A Duda Webinar
SEO Prompt Engineering - A Duda WebinarNitin Manchanda
 
Pitch Deck Teardown: Five Flute's $1.2M Pre-seed deck
Pitch Deck Teardown: Five Flute's $1.2M Pre-seed deckPitch Deck Teardown: Five Flute's $1.2M Pre-seed deck
Pitch Deck Teardown: Five Flute's $1.2M Pre-seed deckHajeJanKamps
 

What's hot (20)

Content Design & its Role in SEO and Accessibility [BrightonSEO Spring 2023]
Content Design & its Role in SEO and Accessibility [BrightonSEO Spring 2023]Content Design & its Role in SEO and Accessibility [BrightonSEO Spring 2023]
Content Design & its Role in SEO and Accessibility [BrightonSEO Spring 2023]
 
BrightonSEO - Amanda Jordan.pptx
BrightonSEO - Amanda Jordan.pptxBrightonSEO - Amanda Jordan.pptx
BrightonSEO - Amanda Jordan.pptx
 
Monet BrightonSEO Slides 2022
Monet BrightonSEO Slides 2022Monet BrightonSEO Slides 2022
Monet BrightonSEO Slides 2022
 
Influencing Discovery, Indexing Strategies For Complex Websites
Influencing Discovery, Indexing Strategies For Complex WebsitesInfluencing Discovery, Indexing Strategies For Complex Websites
Influencing Discovery, Indexing Strategies For Complex Websites
 
How to rethink the traditional SEO workspace to promote team wellbeing and pr...
How to rethink the traditional SEO workspace to promote team wellbeing and pr...How to rethink the traditional SEO workspace to promote team wellbeing and pr...
How to rethink the traditional SEO workspace to promote team wellbeing and pr...
 
BrightonSEO Slides April 2023
BrightonSEO Slides April 2023BrightonSEO Slides April 2023
BrightonSEO Slides April 2023
 
BrightonSEO 2022.pdf
BrightonSEO 2022.pdfBrightonSEO 2022.pdf
BrightonSEO 2022.pdf
 
Brighton SEO 2023 - ML Lessons For Total Search.pdf
Brighton SEO 2023 - ML Lessons For Total Search.pdfBrighton SEO 2023 - ML Lessons For Total Search.pdf
Brighton SEO 2023 - ML Lessons For Total Search.pdf
 
Why your tech optimisations are still sat in the backlog
Why your tech optimisations are still sat in the backlogWhy your tech optimisations are still sat in the backlog
Why your tech optimisations are still sat in the backlog
 
BrightonSEO 2023 - Introduction to Search Engines Beyond Google - N Witczyk.pdf
BrightonSEO 2023 - Introduction to Search Engines Beyond Google - N Witczyk.pdfBrightonSEO 2023 - Introduction to Search Engines Beyond Google - N Witczyk.pdf
BrightonSEO 2023 - Introduction to Search Engines Beyond Google - N Witczyk.pdf
 
Imagination Performance: Thinking Beyond GPT
Imagination Performance: Thinking Beyond GPT Imagination Performance: Thinking Beyond GPT
Imagination Performance: Thinking Beyond GPT
 
Data Driven Approach to Scale SEO at BrightonSEO 2023
Data Driven Approach to Scale SEO at BrightonSEO 2023Data Driven Approach to Scale SEO at BrightonSEO 2023
Data Driven Approach to Scale SEO at BrightonSEO 2023
 
How to produce great multilingual content, even when you can't read it | Laur...
How to produce great multilingual content, even when you can't read it | Laur...How to produce great multilingual content, even when you can't read it | Laur...
How to produce great multilingual content, even when you can't read it | Laur...
 
Agile SEO: Prioritise SEO Activities with Cadence and Risk Radius
Agile SEO: Prioritise SEO Activities with Cadence and Risk RadiusAgile SEO: Prioritise SEO Activities with Cadence and Risk Radius
Agile SEO: Prioritise SEO Activities with Cadence and Risk Radius
 
How to put together a search strategy for a new category
How to put together a search strategy for a new categoryHow to put together a search strategy for a new category
How to put together a search strategy for a new category
 
ChatGPT_Cheatsheet_Costa.pdf
ChatGPT_Cheatsheet_Costa.pdfChatGPT_Cheatsheet_Costa.pdf
ChatGPT_Cheatsheet_Costa.pdf
 
Shining a light on the dark funnel
Shining a light on the dark funnelShining a light on the dark funnel
Shining a light on the dark funnel
 
How to get your SEO work prioritised in house - Maddie McCartney.pptx
How to get your SEO work prioritised in house - Maddie McCartney.pptxHow to get your SEO work prioritised in house - Maddie McCartney.pptx
How to get your SEO work prioritised in house - Maddie McCartney.pptx
 
SEO Prompt Engineering - A Duda Webinar
SEO Prompt Engineering - A Duda WebinarSEO Prompt Engineering - A Duda Webinar
SEO Prompt Engineering - A Duda Webinar
 
Pitch Deck Teardown: Five Flute's $1.2M Pre-seed deck
Pitch Deck Teardown: Five Flute's $1.2M Pre-seed deckPitch Deck Teardown: Five Flute's $1.2M Pre-seed deck
Pitch Deck Teardown: Five Flute's $1.2M Pre-seed deck
 

Similar to State of PrintCSS - MarkupUK 2023.pdf

Web design-workflow
Web design-workflowWeb design-workflow
Web design-workflowPeter Kaizer
 
SPS Monaco 2017 - The Lay of the Land of Client-Side Development circa 2017
SPS Monaco 2017 - The Lay of the Land of Client-Side Development circa 2017SPS Monaco 2017 - The Lay of the Land of Client-Side Development circa 2017
SPS Monaco 2017 - The Lay of the Land of Client-Side Development circa 2017Marc D Anderson
 
Web design training , Web Design Training In Kolkata
Web design training , Web Design Training In KolkataWeb design training , Web Design Training In Kolkata
Web design training , Web Design Training In KolkataW3webschool
 
IWMW 1997: Web tools
IWMW 1997: Web toolsIWMW 1997: Web tools
IWMW 1997: Web toolsIWMW
 
SEF 2014 - Responsive Design in SharePoint 2013
SEF 2014 - Responsive Design in SharePoint 2013SEF 2014 - Responsive Design in SharePoint 2013
SEF 2014 - Responsive Design in SharePoint 2013Marc D Anderson
 
PrintCSS W3C workshop at XMLPrague 2020
PrintCSS W3C workshop at XMLPrague 2020PrintCSS W3C workshop at XMLPrague 2020
PrintCSS W3C workshop at XMLPrague 2020Andreas Jung
 
Javascript Template Engine - Getting Started
Javascript Template Engine - Getting StartedJavascript Template Engine - Getting Started
Javascript Template Engine - Getting StartedKaran Prabu
 
Building Responsive Intranet using Sharepoint Framework solutions - Asish Pad...
Building Responsive Intranet using Sharepoint Framework solutions - Asish Pad...Building Responsive Intranet using Sharepoint Framework solutions - Asish Pad...
Building Responsive Intranet using Sharepoint Framework solutions - Asish Pad...Asish Padhy
 
Converting and Transforming Technical Graphics
Converting and Transforming Technical GraphicsConverting and Transforming Technical Graphics
Converting and Transforming Technical Graphicsdclsocialmedia
 
The Great Consolidation - Entertainment Weekly Migration Case Study - SANDcam...
The Great Consolidation - Entertainment Weekly Migration Case Study - SANDcam...The Great Consolidation - Entertainment Weekly Migration Case Study - SANDcam...
The Great Consolidation - Entertainment Weekly Migration Case Study - SANDcam...Jon Peck
 
Custom Development for SharePoint
Custom Development for SharePointCustom Development for SharePoint
Custom Development for SharePointTalbott Crowell
 
Responsive Web Design - Web & PHP Conference - 2013-09-18
Responsive Web Design - Web & PHP Conference - 2013-09-18Responsive Web Design - Web & PHP Conference - 2013-09-18
Responsive Web Design - Web & PHP Conference - 2013-09-18Frédéric Harper
 
The Characteristics of a Successful SPA
The Characteristics of a Successful SPAThe Characteristics of a Successful SPA
The Characteristics of a Successful SPAGil Fink
 
Cool Tools for Technical Writers
Cool Tools for Technical WritersCool Tools for Technical Writers
Cool Tools for Technical WritersJeff Haas
 
Metadata & Interoperability: Free Tools
Metadata & Interoperability: Free ToolsMetadata & Interoperability: Free Tools
Metadata & Interoperability: Free ToolsMike Jennings
 
FITC - 2012-04-23 - Responsive Web Design
FITC - 2012-04-23 - Responsive Web DesignFITC - 2012-04-23 - Responsive Web Design
FITC - 2012-04-23 - Responsive Web DesignFrédéric Harper
 
Incremental DOM and Recent Trend of Frontend Development
Incremental DOM and Recent Trend of Frontend DevelopmentIncremental DOM and Recent Trend of Frontend Development
Incremental DOM and Recent Trend of Frontend DevelopmentAkihiro Ikezoe
 
Your Intranet, Your Way
Your Intranet, Your WayYour Intranet, Your Way
Your Intranet, Your WayD'arce Hess
 

Similar to State of PrintCSS - MarkupUK 2023.pdf (20)

Web design-workflow
Web design-workflowWeb design-workflow
Web design-workflow
 
SPS Monaco 2017 - The Lay of the Land of Client-Side Development circa 2017
SPS Monaco 2017 - The Lay of the Land of Client-Side Development circa 2017SPS Monaco 2017 - The Lay of the Land of Client-Side Development circa 2017
SPS Monaco 2017 - The Lay of the Land of Client-Side Development circa 2017
 
Web design training , Web Design Training In Kolkata
Web design training , Web Design Training In KolkataWeb design training , Web Design Training In Kolkata
Web design training , Web Design Training In Kolkata
 
Approaches to Responsive Wen Design & Development
Approaches to Responsive Wen Design & DevelopmentApproaches to Responsive Wen Design & Development
Approaches to Responsive Wen Design & Development
 
IWMW 1997: Web tools
IWMW 1997: Web toolsIWMW 1997: Web tools
IWMW 1997: Web tools
 
SEF 2014 - Responsive Design in SharePoint 2013
SEF 2014 - Responsive Design in SharePoint 2013SEF 2014 - Responsive Design in SharePoint 2013
SEF 2014 - Responsive Design in SharePoint 2013
 
PrintCSS W3C workshop at XMLPrague 2020
PrintCSS W3C workshop at XMLPrague 2020PrintCSS W3C workshop at XMLPrague 2020
PrintCSS W3C workshop at XMLPrague 2020
 
Javascript Template Engine - Getting Started
Javascript Template Engine - Getting StartedJavascript Template Engine - Getting Started
Javascript Template Engine - Getting Started
 
Building Responsive Intranet using Sharepoint Framework solutions - Asish Pad...
Building Responsive Intranet using Sharepoint Framework solutions - Asish Pad...Building Responsive Intranet using Sharepoint Framework solutions - Asish Pad...
Building Responsive Intranet using Sharepoint Framework solutions - Asish Pad...
 
Converting and Transforming Technical Graphics
Converting and Transforming Technical GraphicsConverting and Transforming Technical Graphics
Converting and Transforming Technical Graphics
 
The Great Consolidation - Entertainment Weekly Migration Case Study - SANDcam...
The Great Consolidation - Entertainment Weekly Migration Case Study - SANDcam...The Great Consolidation - Entertainment Weekly Migration Case Study - SANDcam...
The Great Consolidation - Entertainment Weekly Migration Case Study - SANDcam...
 
Custom Development for SharePoint
Custom Development for SharePointCustom Development for SharePoint
Custom Development for SharePoint
 
Responsive Web Design - Web & PHP Conference - 2013-09-18
Responsive Web Design - Web & PHP Conference - 2013-09-18Responsive Web Design - Web & PHP Conference - 2013-09-18
Responsive Web Design - Web & PHP Conference - 2013-09-18
 
The Characteristics of a Successful SPA
The Characteristics of a Successful SPAThe Characteristics of a Successful SPA
The Characteristics of a Successful SPA
 
Cool Tools for Technical Writers
Cool Tools for Technical WritersCool Tools for Technical Writers
Cool Tools for Technical Writers
 
Metadata & Interoperability: Free Tools
Metadata & Interoperability: Free ToolsMetadata & Interoperability: Free Tools
Metadata & Interoperability: Free Tools
 
FITC - 2012-04-23 - Responsive Web Design
FITC - 2012-04-23 - Responsive Web DesignFITC - 2012-04-23 - Responsive Web Design
FITC - 2012-04-23 - Responsive Web Design
 
Webinar - Transforming Graphical Data
Webinar - Transforming Graphical DataWebinar - Transforming Graphical Data
Webinar - Transforming Graphical Data
 
Incremental DOM and Recent Trend of Frontend Development
Incremental DOM and Recent Trend of Frontend DevelopmentIncremental DOM and Recent Trend of Frontend Development
Incremental DOM and Recent Trend of Frontend Development
 
Your Intranet, Your Way
Your Intranet, Your WayYour Intranet, Your Way
Your Intranet, Your Way
 

More from Andreas Jung

Typesense Plone Integration Plone Conference 2022 Namur
Typesense Plone Integration Plone Conference 2022 NamurTypesense Plone Integration Plone Conference 2022 Namur
Typesense Plone Integration Plone Conference 2022 NamurAndreas Jung
 
Onkopedia - Plone Tagung 2020 Dresden
Onkopedia - Plone Tagung 2020 DresdenOnkopedia - Plone Tagung 2020 Dresden
Onkopedia - Plone Tagung 2020 DresdenAndreas Jung
 
PrintCSS workshop XMLPrague 2020
PrintCSS workshop XMLPrague 2020PrintCSS workshop XMLPrague 2020
PrintCSS workshop XMLPrague 2020Andreas Jung
 
Plone 5.2 migration at University Ghent, Belgium
Plone 5.2 migration at University Ghent, BelgiumPlone 5.2 migration at University Ghent, Belgium
Plone 5.2 migration at University Ghent, BelgiumAndreas Jung
 
Back to the future - Plone 5.2 und Python 3 Migration am Beispiel Onkopedia
Back to the future - Plone 5.2 und Python 3 Migration am Beispiel OnkopediaBack to the future - Plone 5.2 und Python 3 Migration am Beispiel Onkopedia
Back to the future - Plone 5.2 und Python 3 Migration am Beispiel OnkopediaAndreas Jung
 
Plone migrations using plone.restapi
Plone migrations using plone.restapiPlone migrations using plone.restapi
Plone migrations using plone.restapiAndreas Jung
 
Plone Migrationen mit Plone REST API
Plone Migrationen mit Plone REST APIPlone Migrationen mit Plone REST API
Plone Migrationen mit Plone REST APIAndreas Jung
 
Plone im Einsatz bei der Universität des Saarländes als Shop-System und Gefah...
Plone im Einsatz bei der Universität des Saarländes als Shop-System und Gefah...Plone im Einsatz bei der Universität des Saarländes als Shop-System und Gefah...
Plone im Einsatz bei der Universität des Saarländes als Shop-System und Gefah...Andreas Jung
 
Generierung von PDF aus XML/HTML mit PrintCSS
Generierung von PDF aus XML/HTML mit PrintCSSGenerierung von PDF aus XML/HTML mit PrintCSS
Generierung von PDF aus XML/HTML mit PrintCSSAndreas Jung
 
Creating Content Together - Plone Integration with SMASHDOCs
Creating Content Together - Plone Integration with SMASHDOCsCreating Content Together - Plone Integration with SMASHDOCs
Creating Content Together - Plone Integration with SMASHDOCsAndreas Jung
 
Creating Content Together - Plone Integration with SMASHDOCs
Creating Content Together - Plone Integration with SMASHDOCsCreating Content Together - Plone Integration with SMASHDOCs
Creating Content Together - Plone Integration with SMASHDOCsAndreas Jung
 
The Plone and The Blockchain
The Plone and The BlockchainThe Plone and The Blockchain
The Plone and The BlockchainAndreas Jung
 
Content Gemeinsam Erstellen: Integration Plone mit SMASHDOCs
Content Gemeinsam Erstellen: Integration Plone mit SMASHDOCsContent Gemeinsam Erstellen: Integration Plone mit SMASHDOCs
Content Gemeinsam Erstellen: Integration Plone mit SMASHDOCsAndreas Jung
 
PDF Generierung mit XML/HTML und CSS - was die Tools können und was nicht.
PDF Generierung mit XML/HTML und CSS - was die Tools können und was nicht.PDF Generierung mit XML/HTML und CSS - was die Tools können und was nicht.
PDF Generierung mit XML/HTML und CSS - was die Tools können und was nicht.Andreas Jung
 
Why we love ArangoDB. The hunt for the right NosQL Database
Why we love ArangoDB. The hunt for the right NosQL DatabaseWhy we love ArangoDB. The hunt for the right NosQL Database
Why we love ArangoDB. The hunt for the right NosQL DatabaseAndreas Jung
 
XML Director - the technical foundation of onkopedia.com
XML Director - the technical foundation of onkopedia.comXML Director - the technical foundation of onkopedia.com
XML Director - the technical foundation of onkopedia.comAndreas Jung
 
Building bridges - Plone Conference 2015 Bucharest
Building bridges   - Plone Conference 2015 BucharestBuilding bridges   - Plone Conference 2015 Bucharest
Building bridges - Plone Conference 2015 BucharestAndreas Jung
 
CSS Paged Media - A review of tools and techniques
CSS Paged Media - A review of tools and techniquesCSS Paged Media - A review of tools and techniques
CSS Paged Media - A review of tools and techniquesAndreas Jung
 
Integration of Plone with eXist-db
Integration of Plone with eXist-dbIntegration of Plone with eXist-db
Integration of Plone with eXist-dbAndreas Jung
 

More from Andreas Jung (20)

Typesense Plone Integration Plone Conference 2022 Namur
Typesense Plone Integration Plone Conference 2022 NamurTypesense Plone Integration Plone Conference 2022 Namur
Typesense Plone Integration Plone Conference 2022 Namur
 
Onkopedia - Plone Tagung 2020 Dresden
Onkopedia - Plone Tagung 2020 DresdenOnkopedia - Plone Tagung 2020 Dresden
Onkopedia - Plone Tagung 2020 Dresden
 
PrintCSS workshop XMLPrague 2020
PrintCSS workshop XMLPrague 2020PrintCSS workshop XMLPrague 2020
PrintCSS workshop XMLPrague 2020
 
Plone 5.2 migration at University Ghent, Belgium
Plone 5.2 migration at University Ghent, BelgiumPlone 5.2 migration at University Ghent, Belgium
Plone 5.2 migration at University Ghent, Belgium
 
Back to the future - Plone 5.2 und Python 3 Migration am Beispiel Onkopedia
Back to the future - Plone 5.2 und Python 3 Migration am Beispiel OnkopediaBack to the future - Plone 5.2 und Python 3 Migration am Beispiel Onkopedia
Back to the future - Plone 5.2 und Python 3 Migration am Beispiel Onkopedia
 
Plone migrations using plone.restapi
Plone migrations using plone.restapiPlone migrations using plone.restapi
Plone migrations using plone.restapi
 
Plone Migrationen mit Plone REST API
Plone Migrationen mit Plone REST APIPlone Migrationen mit Plone REST API
Plone Migrationen mit Plone REST API
 
Plone im Einsatz bei der Universität des Saarländes als Shop-System und Gefah...
Plone im Einsatz bei der Universität des Saarländes als Shop-System und Gefah...Plone im Einsatz bei der Universität des Saarländes als Shop-System und Gefah...
Plone im Einsatz bei der Universität des Saarländes als Shop-System und Gefah...
 
Generierung von PDF aus XML/HTML mit PrintCSS
Generierung von PDF aus XML/HTML mit PrintCSSGenerierung von PDF aus XML/HTML mit PrintCSS
Generierung von PDF aus XML/HTML mit PrintCSS
 
Creating Content Together - Plone Integration with SMASHDOCs
Creating Content Together - Plone Integration with SMASHDOCsCreating Content Together - Plone Integration with SMASHDOCs
Creating Content Together - Plone Integration with SMASHDOCs
 
Creating Content Together - Plone Integration with SMASHDOCs
Creating Content Together - Plone Integration with SMASHDOCsCreating Content Together - Plone Integration with SMASHDOCs
Creating Content Together - Plone Integration with SMASHDOCs
 
The Plone and The Blockchain
The Plone and The BlockchainThe Plone and The Blockchain
The Plone and The Blockchain
 
Content Gemeinsam Erstellen: Integration Plone mit SMASHDOCs
Content Gemeinsam Erstellen: Integration Plone mit SMASHDOCsContent Gemeinsam Erstellen: Integration Plone mit SMASHDOCs
Content Gemeinsam Erstellen: Integration Plone mit SMASHDOCs
 
PDF Generierung mit XML/HTML und CSS - was die Tools können und was nicht.
PDF Generierung mit XML/HTML und CSS - was die Tools können und was nicht.PDF Generierung mit XML/HTML und CSS - was die Tools können und was nicht.
PDF Generierung mit XML/HTML und CSS - was die Tools können und was nicht.
 
Why we love ArangoDB. The hunt for the right NosQL Database
Why we love ArangoDB. The hunt for the right NosQL DatabaseWhy we love ArangoDB. The hunt for the right NosQL Database
Why we love ArangoDB. The hunt for the right NosQL Database
 
XML Director - the technical foundation of onkopedia.com
XML Director - the technical foundation of onkopedia.comXML Director - the technical foundation of onkopedia.com
XML Director - the technical foundation of onkopedia.com
 
PyFilesystem
PyFilesystemPyFilesystem
PyFilesystem
 
Building bridges - Plone Conference 2015 Bucharest
Building bridges   - Plone Conference 2015 BucharestBuilding bridges   - Plone Conference 2015 Bucharest
Building bridges - Plone Conference 2015 Bucharest
 
CSS Paged Media - A review of tools and techniques
CSS Paged Media - A review of tools and techniquesCSS Paged Media - A review of tools and techniques
CSS Paged Media - A review of tools and techniques
 
Integration of Plone with eXist-db
Integration of Plone with eXist-dbIntegration of Plone with eXist-db
Integration of Plone with eXist-db
 

Recently uploaded

Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Patryk Bandurski
 
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...shyamraj55
 
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Wonjun Hwang
 
Artificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxArtificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxhariprasad279825
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024Lorenzo Miniero
 
AI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsAI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsMemoori
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfAlex Barbosa Coqueiro
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsMark Billinghurst
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Mattias Andersson
 
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr LapshynFwdays
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 3652toLead Limited
 
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyAlfredo García Lavilla
 
costume and set research powerpoint presentation
costume and set research powerpoint presentationcostume and set research powerpoint presentation
costume and set research powerpoint presentationphoebematthew05
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii SoldatenkoFwdays
 
APIForce Zurich 5 April Automation LPDG
APIForce Zurich 5 April  Automation LPDGAPIForce Zurich 5 April  Automation LPDG
APIForce Zurich 5 April Automation LPDGMarianaLemus7
 
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 3652toLead Limited
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr BaganFwdays
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 

Recently uploaded (20)

Hot Sexy call girls in Panjabi Bagh 🔝 9953056974 🔝 Delhi escort Service
Hot Sexy call girls in Panjabi Bagh 🔝 9953056974 🔝 Delhi escort ServiceHot Sexy call girls in Panjabi Bagh 🔝 9953056974 🔝 Delhi escort Service
Hot Sexy call girls in Panjabi Bagh 🔝 9953056974 🔝 Delhi escort Service
 
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
 
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
 
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
 
Artificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxArtificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptx
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024
 
AI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsAI as an Interface for Commercial Buildings
AI as an Interface for Commercial Buildings
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdf
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR Systems
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?
 
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365
 
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptxE-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
 
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easy
 
costume and set research powerpoint presentation
costume and set research powerpoint presentationcostume and set research powerpoint presentation
costume and set research powerpoint presentation
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko
 
APIForce Zurich 5 April Automation LPDG
APIForce Zurich 5 April  Automation LPDGAPIForce Zurich 5 April  Automation LPDG
APIForce Zurich 5 April Automation LPDG
 
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 

State of PrintCSS - MarkupUK 2023.pdf

  • 1. Andreas Jung • info@zopyx.com • print-css.rocks State of PrintCSS in 2023 MarkupUK 2023, London
  • 2. Agenda (this is not a PrintCSS tutorial) • Brief introduction to PrintCSS and its standards • The problems with comparing tools • Free PrintCSS tools • Commercial CSS tools • Role of Javascript in PrintCSS • The pain points with PrintCSS • Decision criteria • Q & A
  • 3. Publishing developer & consultant since mid-90s https://print-css.rocks https://andreas-jung.com ✉ info@zopyx.com Funder of print-css.rocks project Independent PrintCSS consulting - Software developer & software architect - Requirements engineering - Python developer & Python expert - NGOs, EDU - medical & pharmaceutical - energy - research & development quantum mechanics - CMS Solutions - Publishing Solutions - Individual software solutions About me
  • 5. The PrintCSS process • Input: HTML (or XML) • Styling: CSS • Formatting: a free or commercial PrintCSS renderer • Output: PDF
  • 6. Definition of „PrintCSS“ „PrintCSS“ synonym for „W3C CSS Paged Media“ W3C CSS Paged Media Level 3 (2018) • the official standard for generated paginated content aka PDF from HTML using cascading stylesheets (CSS) Related standards: • CSS Generated Content for Paged Media Module (2014, GCPM)
  • 7. Comparing tools, metrics and their problems How to compare tools in a reasonable way? Problems • we have many PrintCSS tools • we have hundreds of CSS properties + PrintCSS specific CSS properties • we can not test all tools against all CSS properties (not manually, not automatically) • W3C standards do not cover everything, leaving room for interpretations Metrics and approach of print-css.rocks • testing the core PrintCSS features (W3C Paged Media, GCPM) • focus on high-level topics (e.g. footnotes, CSS grid, RTL)
  • 8. How we do in print-css.rocks?
  • 9. How we do in print-css.rocks?
  • 10. How we do in print-css.rocks?
  • 11. Standards, non-standards and extensions Example: variations on footnotes …not even talking of • endnotes 😈 • sidenotes 😈 Standard no standard
  • 13. Free PrintCSS renderers (Feature selection is highly opinionated) WeasyPrint Vivliostyle PagedJS Python Javascript/ Chromium Javascript/ Chromium ✅ solid core ✅ Flexbox ✅ Hyphenation ✅ simple footnote support ✅ solid core ✅ Javascript support ✅ MathML ✅ simple footnote support ❌ Grid ❌ Javascript ❌ XML ❌ Hyphentation ❌ XML ❌ many unfixed issues and bugs good community support good community support community support 🤷 👍 actively maintained 👍 actively maintained 👎👎 badly maintained
  • 15. Commercial PrintCSS renderers (Feature selection is highly opinionated) Typeset.sh Prince PDFreactor BFO Publisher Antennahouse Formatter PHP Java Java ✅ solid core ✅ Grid & Flexbox ✅ very mature ✅ Javascript ✅ Flexbox ✅ excellent docs/examples (https://css4.pub/) ✅ XML ✅ very mature ✅ Javascript ✅ Grid & Flexbox ✅ XML ✅ solid core ✅ very mature ✅ most advanced typography features ✅ most complete ✅ XML • young project • has some rough edges here and there ❌ Grid • young product • has some rough edges • not much experience ❌ Grid ❌ Flexbox ❌ Javascript ✅ excellent support ✅ excellent support ✅ excellent support ✅ excellent support 👍 actively maintained 👍👍 actively maintained 👍 actively maintained 👍 actively maintained 👍👍 actively maintained 89 € (annual) or 499 € (perpetual licence) 3800 USD (4 CPUs) 2.950 € (4 CPUs) n/a 5000 USD (1st CPU) * check pricing for educational license or „personal“ usage licenses
  • 17. Why Javascript? Javascript is the „Franca Lingua“ of the web (besides HTML) Javascript on the web: • no modern web solutions without Javascript • omnipresent Javascript in Print/PrintCSS • provide enhanced visualizations (graphs, charts etc) from the web in print • for content: ideally Javascript visualization that work on the web, should work in PrintCSS • for internal usage: influencing the rendering process of the PrintCSS renderer • generating TOC, listings, indices
  • 18. Situation of Javascript support in renderers well… Renderer PagedJS Prince PDFreactor Vivliostyle Implementation Chromium/native custom JS engine custom JS engine Chromium/native JS compatibility for PDF generation unknown selected JS packages selected JS packages best compatibility for JS modules (where they make sense) JS for internal usage unknown • adaptive rendering • adaptive image scaling • table of contents • adaptive rendering • adaptive image scaling • table of contents unknown
  • 19. The pain points with PrintCSS
  • 20. The dark side of PrintCSS and its renderers Problems and pain points • inconsistent implementations and behavior of renderers (due to incomplete or inconsistent Paged Media specifications) • different defaults (page size, borders, page area dimensions etc.) • easy things often work differently across tools • complex topics • floats • adaptive rendering of images • handling of long or wide tables
  • 22. Is your publishing use case suitable for PrintCSS? Automatic typesetting means automatic!!! No manual interaction!!!
  • 23. Know your typographic and layout requirements …an opinionated selection of criteria • Is your publication text-oriented or layout-oriented? • Do you need a grid system or flex box? • Do you need a baseline grid? • Support for multiple columns needed? • Footnotes required? • Floating objects needed?
  • 24. Do I need Javascript? • Do you have to interact with external Javascript modules (charts etc.)? • Do you need Javascript support inside the renderer or can you prepare Javascript-based assets in a pre-processing step?
  • 25. Do I have XML or HTML as input? • only some renderers speak XML natively • but all renderers handle HTML • raw XML often not directly suitable unless transformed to publishable XML or HTML • PrintCSS is not a transformation framework • flat or nested HTML? • personal preference: nested HTML but YMMV
  • 26. Do I have special PDF requirements? • PDF metadata • PDF variants • PDF/UA (accessibility) • PDF/X (print) • PDF/A (archiving) • supported by most commercial renderers • PDF security (encryption, signing) • supported by most commercial renderers
  • 27. Other features needed? • Scientific context? (formulas, MathML, MathJax) • integration of renderers in workflows: • all tools run on the command line • some tools provide a server mode • some tools provide APIs for integration with PHP, Python etc. • Produce & Publish server (abstraction of renderers)
  • 29. Recommendation and hints • be aware of your special requirements (regarding more complex features) • build prototypes and evaluate against different renderers • use CSS variables (not widely supported) • consider using CSS preprocessors (e.g. Less, Sass) for complex workloads • start with free tools, use commercial tools if needed
  • 30. Q & A
  • 31. Thank you for listening Andreas Jung • info@zopyx.com • print-css.rocks