SlideShare a Scribd company logo
Using CSS Paging to Render DITA Documents
Eliot Kimber
Contrext
DITA Europe 2017
About the Author
• Independent consultant focusing on DITA
analysis, design, and implementation
• Doing SGML and XML for cough 30 years cough
• Founding member of the DITA Technical
Committee
• Founding member of the XML Working Group
• Co-editor of HyTime standard (ISO/IEC 10744)
• Primary developer and founder of the DITA for
Publishers project
• Author of DITA for Practitioners, Vol 1 (XML Press)
11/1/2017 DITA Europe 2017 2
Agenda
• What is CSS Pagination?
• Why is it interesting?
• Implementation challenges
• Using it with DITA
• Demo (?)
• Summary and conclusions
11/1/2017 DITA Europe 2017 3
WHAT IS CSS PAGINATION?
11/1/2017 DITA Europe 2017 4
What Is CSS?
• Cascading style sheets
• W3C standard(s)
• Provides declarative styling for HTML and XML
content
• Familiar to anyone who does Web work:
div.note {
font-size: 8pt;
margin-left: 4px;
margin-top: 1em;
border-top: solid 0.5pt blue;
}
11/1/2017 DITA Europe 2017 5
CSS for Pagination
• Original CSS specification did not directly
address paged media
• CSS Pagination effort adds features needed to
do paged layout:
– Page masters and page sequences
– Generated text for page edge regions
– Page number references
– Additional typographic effects
11/1/2017 DITA Europe 2017 6
Current State of CSS Paging
• As of November 2017:
• Pagination specifications are still drafts
• Design is incomplete and in flux
• No open-source implementation
• Proprietary extensions needed to meet all layout
requirements
• Optimized for use with HTML
• Not really practical to apply it directly to arbitrary
XML
11/1/2017 DITA Europe 2017 7
WHY IS CSS PAGINATION
INTERESTING?
11/1/2017 DITA Europe 2017 8
Short Version: It’s Easier and
Cheaper
Despite the limitations of the CSS pagination
design, unfinished state of the specs, and lack of
open-source implementations, CSS for
pagination is so much easier to use and easier to
sell that the value is quite compelling.
Having done FO for decades, having now done
CSS pagination, I would choose CSS over FO
every time, for any XML pagination project.
11/1/2017 DITA Europe 2017 9
Easier Than FO
• CSS is objectively much easier to use than FO
– Syntax is easier
– Technology is familiar to all
• Separates transformation concern from
formatting concern
• Input to pagination can be HTML augmented as
required to meet paging requirements
• Easier to generate different page layouts (e.g.,
rotated pages, foldouts) than with PDF2
transform
11/1/2017 DITA Europe 2017 10
Easier to Staff
• Anyone familiar with CSS can learn pagination
styling with appropriate guidance
• No shortage of CSS skills in marketplace
• CSS is (and is seen as) more mainstream
• FO is becoming a niche technology
11/1/2017 DITA Europe 2017 11
Potential To Share Styling With
Web Deliverables
• Can share common CSS modules between Web
and paged outputs
• Makes it easier to coordinate and synchronize
print and online styles
• Can have a single base DITA-to-HTML transform
– Small extensions to augment the HTML to enable
paging
• Avoids need for completely separate PDF
transform
11/1/2017 DITA Europe 2017 12
IMPLEMENTATION
CHALLENGES
11/1/2017 DITA Europe 2017 13
Transforms Still Required
• CSS cannot reorder the markup
• CSS cannot synthesize structures
• Elements used in running heads and feet are
consumed—cannot also be shown in main
flow
• CSS cannot style elements based on
properties of descendants or following sibling
11/1/2017 DITA Europe 2017 14
Need to Generate “Augmented
HTML”
• Need to augment the HTML to support
pagination:
• Add elements for running heads, feet, edge tabs,
etc.
• Add wrappers as needed for page master
application
• Add @class values as needed to enable styling
– Elements affected by descendants or following siblings
– To make CSS selectors simpler
11/1/2017 DITA Europe 2017 15
HTML Augmentation Simpler Than
FO Generation
• The XSLT required to do augmentation is much
simpler than the XSLT needed for FO
generation
• Can be a post-process applied to Web HTML
• Can be a small extension to Open Toolkit Web
HTML transform
• Largely independent of the styling details
• Minimizes amount of XSLT work needed to do
pagination styling
11/1/2017 DITA Europe 2017 16
CSS Page Edge Model Is
Limited
• CSS model for page edge regions (running
heads and feet) has some design limitations
and is underspecified.
• Don’t have full control over the placement of
content in the page header and footer
• Usually not a problem but can be in some
specific cases
11/1/2017 DITA Europe 2017 17
CSS Keep Model Limited
• No “keep together always” or “keep with next
always” options
• Limits ability to control page breaks without
proprietary extensions
11/1/2017 DITA Europe 2017 18
A Few XSL-FO Features Are
Missing from the CSS Design
• Mandatory keep-together
• Table markers
• Collapsing of page references for index entries
11/1/2017 DITA Europe 2017 19
CSS Specs Are Hard To Read
• The CSS specification is spread across a large
number of separate documents
• Pagination specs are in various draft stages
and are under active development
• Can be hard to find and understand all the
different parts
• No cohesive guide to CSS pagination as of
November 2017
11/1/2017 DITA Europe 2017 20
Implementations are Not Free
• No open-source, free-for-commercial use
implementations
• However, value of commercial options is clear
• Unlikely that browser vendors will implement
CSS pagination
11/1/2017 DITA Europe 2017 21
Can Be a Challenge to Debug
• Can be hard to find syntax errors in CSS
• Editors don’t always report errors clearly
• Processors don’t always report errors clearly
• Browsers may not recognize or validate
paging-specific properties
• Browsers will not recognize or validate
proprietary extension properties
11/1/2017 DITA Europe 2017 22
USING WITH DITA
11/1/2017 DITA Europe 2017 23
Not Too Hard With Open Toolkit
• Several options currently available:
• DITA Community org.dita-community.css-pdf
plugin
• oXygenXML Chemistry
• XML Rocks dita-ot-pdf-css-page plugin
11/1/2017 DITA Europe 2017 24
My Approach:
Extend HTML5 Transform
• DITA Community plugin: org.dita-
community.css-pdf
• Extends org.dita.html5
• Provides paging-specific CSS stylesheets
• Extends HTML5 transform
• Still in early development but easy to extend
and modify
11/1/2017 DITA Europe 2017 25
Extend HTML5 Transform
• Extend the HTML5 transform to produce
pagination-ready HTML
– Add elements for running heads and feet
– Add additional @class attributes as needed
– Generate a single chunk HTML file for entire
publication
– Generate ToCs, index, other lists
• Can be fairly generic
– Depends on page edge requirements
– Specific styling requirements not already supported by
normal @class values and HTML structure (if any)
11/1/2017 DITA Europe 2017 26
Create Print CSS Styles
• Mostly about defining the page masters
– Page geometry and page masters (first, odd, even,
blank, etc.)
– Page edge details: running heads and feet, side
decorations (e.g., thumb tabs)
• Can reuse most or all of web CSS
• Can use media queries to control print vs. web
instructions
• Can have publication-specific styles sheets if
appropriate
11/1/2017 DITA Europe 2017 27
@page Rule Example
@page {
size: 210mm 297mm;
margin-left: 6pc;
margin-right: 6pc;
counter-increment: myPage;
counter-reset: footnote;
@top-center {
font-size: 9pt;
content: 'Running head goes here';
}
@bottom-center {
content: '-' counter(myPage) '-';
}
@footnote {
width: 100%;
border-top: 0.5pt solid black;
margin-top: 0.5in;
border-length: 0.5in;
}
}
11/1/2017 DITA Europe 2017 28
Define Ant Instructions to Run CSS
Pagination Processor
• Can be generic per CSS processor
• Will likely require processor-specific font and
options configuration
11/1/2017 DITA Europe 2017 29
Another Approach: Generate XSL-
FO based on CSS styling
• oXygen Chemistry plugin
• See Radu’s talk from DITA OT Day 2017
11/1/2017 DITA Europe 2017 30
CSS PAGINATION
PROCESSORS
11/1/2017 DITA Europe 2017 31
Antenna House Formatter
• Offers separately-priced CSS pagination feature
• Very complete implementation with many
important extensions
• Can output “area tree” document
– Enables multi-pass processes
– Allows for ad-hoc fixing of CSS or AHF limitations
• Have used in challenging project, can attest to the
quality of the product
• https://www.antennahouse.com
11/1/2017 DITA Europe 2017 32
Prince
• One of the first CSS pagination
implementations
• Used by many commercial publishers
• Have not used it myself
• Free license for non-commercial use
• https://www.princexml.com
11/1/2017 DITA Europe 2017 33
Vivliostyle
• Chief designer is also a key contributor to the CSS
Pagination spec
• Javascript implementation
• Can use in-browser or as standalone server
• Provides needed extensions
• Not as mature as Prince or Antenna House
Formatter
• Free in-browser pagination for non-commercial
use
• http://vivliostyle.com/
11/1/2017 DITA Europe 2017 34
PDF Reactor
• Java library
• Designed to integrate PDF generation into
Web apps
• http://www.pdfreactor.com/
11/1/2017 DITA Europe 2017 35
Oxygen Chemistry Plugin
• Translates CSS styling to FO under the covers
• Uses FOP (or any FO engine) as the underlying
formatter
• Styles the DITA XML directly
• Somewhat experimental
• Can be used if you have an OxygenXML license
• https://www.oxygenxml.com/
11/1/2017 DITA Europe 2017 36
SUMMARY
11/1/2017 DITA Europe 2017 37
CSS Is Compelling Alternative to
XSL-FO
• Easier to learn
• Easier to use
• Separates transform concern from styling
concern
• Better coordination with Web deliverables
• Minimizes amount of XSLT required
11/1/2017 DITA Europe 2017 38
CSS Specs Need Work
• CSS Pagination specs are in progress and
various stages of completeness and stability
• CSS specs are spread over many individual
docs
• Currently no comprehensive guide to CSS
pagination
11/1/2017 DITA Europe 2017 39
CSS Pagination Not 100%
Complete
• Missing some features found in XSL-FO
• Implementations don’t necessarily provide all
the extensions you might need
11/1/2017 DITA Europe 2017 40
No One Free Solution Today
• No open-source implementation that allows
commercial use
– Vivliostyle offers free in-browser pagination for
non-commercial use
• Commercial options all provide good value
• Several commercial options to choose from
• Tools are improving
• Update: Weasy Print, http://weasyprint.org/ is
free open-source. Features are limited.
11/1/2017 DITA Europe 2017 41
Conclusion: Move to CSS
Pagination if You Can
• Seems like a no brainer if you have budget for
a processor
• If you’re already using Antenna House
Formatter then cost is small increment over
current license costs
• If you’re using Oxygen then Oxygen CSS
pagination solution is available to you now
11/1/2017 DITA Europe 2017 42
Demo
If time permits
DITA Europe 201710/29/17 43
Questions?
11/1/2017 DITA Europe 2017 44
Resources
• CSS pagination specification:
https://www.w3.org/TR/css3-page
• DITA Community CSS PDF plugin:
https://github.com/dita-community/org.dita-
community.css-pdf
• Antenna House Formatter:
https://www.antennahouse.com
• OxygenXML: http://oxygenxml.com
• Prince: https://www.princexml.com/
• Vivliostyle: http://vivliostyle.com/
• Weasy Print, http://weasyprint.org/
11/1/2017 DITA Europe 2017 45

More Related Content

What's hot

Creating Documentation With A Wiki: The DITA Storm Project
Creating Documentation With A Wiki: The DITA Storm ProjectCreating Documentation With A Wiki: The DITA Storm Project
Creating Documentation With A Wiki: The DITA Storm Project
Scott Abel
 
DITA for Small Teams
DITA for Small TeamsDITA for Small Teams
DITA for Small Teams
Contrext Solutions
 
Rosenblum Workflow Choices Introducing XML
Rosenblum Workflow Choices Introducing XMLRosenblum Workflow Choices Introducing XML
Rosenblum Workflow Choices Introducing XML
National Information Standards Organization (NISO)
 
Enterprise Architect User Group - EA and version control in practice
Enterprise Architect User Group - EA and version control in practiceEnterprise Architect User Group - EA and version control in practice
Enterprise Architect User Group - EA and version control in practice
DiVetro
 
Galichet XML Workflow Brief History NISO
Galichet XML Workflow Brief History NISOGalichet XML Workflow Brief History NISO
Galichet XML Workflow Brief History NISO
National Information Standards Organization (NISO)
 
4D Pubs - Distributed Dynamic Document Dsplay
4D Pubs - Distributed Dynamic Document Dsplay4D Pubs - Distributed Dynamic Document Dsplay
4D Pubs - Distributed Dynamic Document Dsplay
Chris Despopoulos
 
HTML-First at Wiley - Tzviya Siegman & Benjamin Young - ebookcraft 2018
HTML-First at Wiley - Tzviya Siegman & Benjamin Young - ebookcraft 2018HTML-First at Wiley - Tzviya Siegman & Benjamin Young - ebookcraft 2018
HTML-First at Wiley - Tzviya Siegman & Benjamin Young - ebookcraft 2018
BookNet Canada
 
Why Is DITA So Hard?
Why Is DITA So Hard?Why Is DITA So Hard?
Why Is DITA So Hard?
Contrext Solutions
 
Tpr1
Tpr1Tpr1
Tpr1
dzdn
 
Circuit 2015 Keynote - Carsten Ziegeler
Circuit 2015 Keynote -  Carsten ZiegelerCircuit 2015 Keynote -  Carsten Ziegeler
Circuit 2015 Keynote - Carsten Ziegeler
ICF CIRCUIT
 
IWMW 2003 b4 QA for web sites (4 - QA for MIMAS: A Case Study)
IWMW 2003 b4 QA for web sites (4 - QA for MIMAS: A Case Study)IWMW 2003 b4 QA for web sites (4 - QA for MIMAS: A Case Study)
IWMW 2003 b4 QA for web sites (4 - QA for MIMAS: A Case Study)
IWMW
 
Webアプリケーションフレームワークを利用した効率的なカスタムWeb開発
Webアプリケーションフレームワークを利用した効率的なカスタムWeb開発Webアプリケーションフレームワークを利用した効率的なカスタムWeb開発
Webアプリケーションフレームワークを利用した効率的なカスタムWeb開発
Atsushi Matsuo
 
ICONUK 2015: Files, files everywhere! Do you know where your organisations do...
ICONUK 2015: Files, files everywhere! Do you know where your organisations do...ICONUK 2015: Files, files everywhere! Do you know where your organisations do...
ICONUK 2015: Files, files everywhere! Do you know where your organisations do...
Femke Goedhart
 
Hopkins Leveraging XML to Enhance Semantic Value of Standards
Hopkins Leveraging XML to Enhance Semantic Value of StandardsHopkins Leveraging XML to Enhance Semantic Value of Standards
Hopkins Leveraging XML to Enhance Semantic Value of Standards
National Information Standards Organization (NISO)
 

What's hot (17)

Cms expo
Cms expoCms expo
Cms expo
 
Creating Documentation With A Wiki: The DITA Storm Project
Creating Documentation With A Wiki: The DITA Storm ProjectCreating Documentation With A Wiki: The DITA Storm Project
Creating Documentation With A Wiki: The DITA Storm Project
 
DITA for Small Teams
DITA for Small TeamsDITA for Small Teams
DITA for Small Teams
 
Rosenblum Workflow Choices Introducing XML
Rosenblum Workflow Choices Introducing XMLRosenblum Workflow Choices Introducing XML
Rosenblum Workflow Choices Introducing XML
 
Enterprise Architect User Group - EA and version control in practice
Enterprise Architect User Group - EA and version control in practiceEnterprise Architect User Group - EA and version control in practice
Enterprise Architect User Group - EA and version control in practice
 
Galichet XML Workflow Brief History NISO
Galichet XML Workflow Brief History NISOGalichet XML Workflow Brief History NISO
Galichet XML Workflow Brief History NISO
 
HTML 5
HTML 5HTML 5
HTML 5
 
4D Pubs - Distributed Dynamic Document Dsplay
4D Pubs - Distributed Dynamic Document Dsplay4D Pubs - Distributed Dynamic Document Dsplay
4D Pubs - Distributed Dynamic Document Dsplay
 
HTML-First at Wiley - Tzviya Siegman & Benjamin Young - ebookcraft 2018
HTML-First at Wiley - Tzviya Siegman & Benjamin Young - ebookcraft 2018HTML-First at Wiley - Tzviya Siegman & Benjamin Young - ebookcraft 2018
HTML-First at Wiley - Tzviya Siegman & Benjamin Young - ebookcraft 2018
 
Why Is DITA So Hard?
Why Is DITA So Hard?Why Is DITA So Hard?
Why Is DITA So Hard?
 
Ppt ch10
Ppt ch10Ppt ch10
Ppt ch10
 
Tpr1
Tpr1Tpr1
Tpr1
 
Circuit 2015 Keynote - Carsten Ziegeler
Circuit 2015 Keynote -  Carsten ZiegelerCircuit 2015 Keynote -  Carsten Ziegeler
Circuit 2015 Keynote - Carsten Ziegeler
 
IWMW 2003 b4 QA for web sites (4 - QA for MIMAS: A Case Study)
IWMW 2003 b4 QA for web sites (4 - QA for MIMAS: A Case Study)IWMW 2003 b4 QA for web sites (4 - QA for MIMAS: A Case Study)
IWMW 2003 b4 QA for web sites (4 - QA for MIMAS: A Case Study)
 
Webアプリケーションフレームワークを利用した効率的なカスタムWeb開発
Webアプリケーションフレームワークを利用した効率的なカスタムWeb開発Webアプリケーションフレームワークを利用した効率的なカスタムWeb開発
Webアプリケーションフレームワークを利用した効率的なカスタムWeb開発
 
ICONUK 2015: Files, files everywhere! Do you know where your organisations do...
ICONUK 2015: Files, files everywhere! Do you know where your organisations do...ICONUK 2015: Files, files everywhere! Do you know where your organisations do...
ICONUK 2015: Files, files everywhere! Do you know where your organisations do...
 
Hopkins Leveraging XML to Enhance Semantic Value of Standards
Hopkins Leveraging XML to Enhance Semantic Value of StandardsHopkins Leveraging XML to Enhance Semantic Value of Standards
Hopkins Leveraging XML to Enhance Semantic Value of Standards
 

Similar to Using CSS Paging to Render DITA Documents

Using Markdown and Lightweight DITA in a Collaborative Environment
Using Markdown and Lightweight DITA in a Collaborative EnvironmentUsing Markdown and Lightweight DITA in a Collaborative Environment
Using Markdown and Lightweight DITA in a Collaborative Environment
IXIASOFT
 
Repco Case Study - ASTC Conference 2014
Repco Case Study - ASTC Conference 2014Repco Case Study - ASTC Conference 2014
Repco Case Study - ASTC Conference 2014
Gareth Oakes
 
Efficiently theming a multi-site Drupal 8 portal - Drupal Dev Days Seville 2017
Efficiently theming a multi-site Drupal 8 portal - Drupal Dev Days Seville 2017Efficiently theming a multi-site Drupal 8 portal - Drupal Dev Days Seville 2017
Efficiently theming a multi-site Drupal 8 portal - Drupal Dev Days Seville 2017
La Drupalera
 
A Brief Look at DITA in Current Technical Communication Practices_SIGDOC 2017
A Brief Look at DITA in Current Technical Communication Practices_SIGDOC 2017A Brief Look at DITA in Current Technical Communication Practices_SIGDOC 2017
A Brief Look at DITA in Current Technical Communication Practices_SIGDOC 2017
IXIASOFT
 
Is DITA Right for You? - STC Summit 2017
Is DITA Right for You? - STC Summit 2017Is DITA Right for You? - STC Summit 2017
Is DITA Right for You? - STC Summit 2017
IXIASOFT
 
SharePoint et Javascript - Modern development - Yannick Plenevaux - Christoph...
SharePoint et Javascript - Modern development - Yannick Plenevaux - Christoph...SharePoint et Javascript - Modern development - Yannick Plenevaux - Christoph...
SharePoint et Javascript - Modern development - Yannick Plenevaux - Christoph...
aOS Community
 
SharePoint and javascript – modern development
SharePoint and javascript – modern developmentSharePoint and javascript – modern development
SharePoint and javascript – modern development
Yannick Plenevaux
 
Generating PDF output from DITA using CSS
Generating PDF output from DITA using CSSGenerating PDF output from DITA using CSS
Generating PDF output from DITA using CSS
Mark Giffin Consulting, Inc.
 
DITA for Small Teams Workshop (Tekom 2017)
DITA for Small Teams Workshop (Tekom 2017)DITA for Small Teams Workshop (Tekom 2017)
DITA for Small Teams Workshop (Tekom 2017)
Contrext Solutions
 
West Putting Structured Documents to Work
West Putting Structured Documents to WorkWest Putting Structured Documents to Work
West Putting Structured Documents to Work
National Information Standards Organization (NISO)
 
Choosing Adobe RoboHelp as Your Help Authoring Tool
Choosing Adobe RoboHelp as Your Help Authoring ToolChoosing Adobe RoboHelp as Your Help Authoring Tool
Choosing Adobe RoboHelp as Your Help Authoring Tool
Raghuram Pandurangan
 
State of PrintCSS - MarkupUK 2023.pdf
State of PrintCSS - MarkupUK 2023.pdfState of PrintCSS - MarkupUK 2023.pdf
State of PrintCSS - MarkupUK 2023.pdf
Andreas Jung
 
Html,CSS & UI/UX design
Html,CSS & UI/UX designHtml,CSS & UI/UX design
Html,CSS & UI/UX design
Karthikeyan Dhanasekaran CUA
 
DITA on a Shoe String
DITA on a Shoe StringDITA on a Shoe String
DITA on a Shoe String
Stan Doherty
 
9781111528705_PPT_ch013.pptx
9781111528705_PPT_ch013.pptx9781111528705_PPT_ch013.pptx
9781111528705_PPT_ch013.pptx
SimonChirambira
 
9781111528705_PPT_ch012.pptx
9781111528705_PPT_ch012.pptx9781111528705_PPT_ch012.pptx
9781111528705_PPT_ch012.pptx
SimonChirambira
 
9781111528705_PPT_ch014.pptx
9781111528705_PPT_ch014.pptx9781111528705_PPT_ch014.pptx
9781111528705_PPT_ch014.pptx
SimonChirambira
 
9781111528705_PPT_ch01.pptx
9781111528705_PPT_ch01.pptx9781111528705_PPT_ch01.pptx
9781111528705_PPT_ch01.pptx
SimonChirambira
 
Broaden your dev skillset with SharePoint branding options
Broaden your dev skillset with SharePoint branding optionsBroaden your dev skillset with SharePoint branding options
Broaden your dev skillset with SharePoint branding options
Eric Overfield
 

Similar to Using CSS Paging to Render DITA Documents (20)

Using Markdown and Lightweight DITA in a Collaborative Environment
Using Markdown and Lightweight DITA in a Collaborative EnvironmentUsing Markdown and Lightweight DITA in a Collaborative Environment
Using Markdown and Lightweight DITA in a Collaborative Environment
 
Repco Case Study - ASTC Conference 2014
Repco Case Study - ASTC Conference 2014Repco Case Study - ASTC Conference 2014
Repco Case Study - ASTC Conference 2014
 
Efficiently theming a multi-site Drupal 8 portal - Drupal Dev Days Seville 2017
Efficiently theming a multi-site Drupal 8 portal - Drupal Dev Days Seville 2017Efficiently theming a multi-site Drupal 8 portal - Drupal Dev Days Seville 2017
Efficiently theming a multi-site Drupal 8 portal - Drupal Dev Days Seville 2017
 
A Brief Look at DITA in Current Technical Communication Practices_SIGDOC 2017
A Brief Look at DITA in Current Technical Communication Practices_SIGDOC 2017A Brief Look at DITA in Current Technical Communication Practices_SIGDOC 2017
A Brief Look at DITA in Current Technical Communication Practices_SIGDOC 2017
 
Ppt ch01
Ppt ch01Ppt ch01
Ppt ch01
 
Is DITA Right for You? - STC Summit 2017
Is DITA Right for You? - STC Summit 2017Is DITA Right for You? - STC Summit 2017
Is DITA Right for You? - STC Summit 2017
 
SharePoint et Javascript - Modern development - Yannick Plenevaux - Christoph...
SharePoint et Javascript - Modern development - Yannick Plenevaux - Christoph...SharePoint et Javascript - Modern development - Yannick Plenevaux - Christoph...
SharePoint et Javascript - Modern development - Yannick Plenevaux - Christoph...
 
SharePoint and javascript – modern development
SharePoint and javascript – modern developmentSharePoint and javascript – modern development
SharePoint and javascript – modern development
 
Generating PDF output from DITA using CSS
Generating PDF output from DITA using CSSGenerating PDF output from DITA using CSS
Generating PDF output from DITA using CSS
 
DITA for Small Teams Workshop (Tekom 2017)
DITA for Small Teams Workshop (Tekom 2017)DITA for Small Teams Workshop (Tekom 2017)
DITA for Small Teams Workshop (Tekom 2017)
 
West Putting Structured Documents to Work
West Putting Structured Documents to WorkWest Putting Structured Documents to Work
West Putting Structured Documents to Work
 
Choosing Adobe RoboHelp as Your Help Authoring Tool
Choosing Adobe RoboHelp as Your Help Authoring ToolChoosing Adobe RoboHelp as Your Help Authoring Tool
Choosing Adobe RoboHelp as Your Help Authoring Tool
 
State of PrintCSS - MarkupUK 2023.pdf
State of PrintCSS - MarkupUK 2023.pdfState of PrintCSS - MarkupUK 2023.pdf
State of PrintCSS - MarkupUK 2023.pdf
 
Html,CSS & UI/UX design
Html,CSS & UI/UX designHtml,CSS & UI/UX design
Html,CSS & UI/UX design
 
DITA on a Shoe String
DITA on a Shoe StringDITA on a Shoe String
DITA on a Shoe String
 
9781111528705_PPT_ch013.pptx
9781111528705_PPT_ch013.pptx9781111528705_PPT_ch013.pptx
9781111528705_PPT_ch013.pptx
 
9781111528705_PPT_ch012.pptx
9781111528705_PPT_ch012.pptx9781111528705_PPT_ch012.pptx
9781111528705_PPT_ch012.pptx
 
9781111528705_PPT_ch014.pptx
9781111528705_PPT_ch014.pptx9781111528705_PPT_ch014.pptx
9781111528705_PPT_ch014.pptx
 
9781111528705_PPT_ch01.pptx
9781111528705_PPT_ch01.pptx9781111528705_PPT_ch01.pptx
9781111528705_PPT_ch01.pptx
 
Broaden your dev skillset with SharePoint branding options
Broaden your dev skillset with SharePoint branding optionsBroaden your dev skillset with SharePoint branding options
Broaden your dev skillset with SharePoint branding options
 

More from Contrext Solutions

Stupid DITA Tricks: After-The-Fact Specialization: Treating Aircraft Manuals ...
Stupid DITA Tricks:After-The-Fact Specialization: Treating Aircraft Manuals ...Stupid DITA Tricks:After-The-Fact Specialization: Treating Aircraft Manuals ...
Stupid DITA Tricks: After-The-Fact Specialization: Treating Aircraft Manuals ...
Contrext Solutions
 
Loose Leaf Publishing Using Antenna House Formatter and CSS for Pagination
Loose Leaf Publishing Using Antenna House Formatter and CSS for PaginationLoose Leaf Publishing Using Antenna House Formatter and CSS for Pagination
Loose Leaf Publishing Using Antenna House Formatter and CSS for Pagination
Contrext Solutions
 
Definition of the DITA Glossary: Or How to Get Some Cool Glossary Tools for Free
Definition of the DITA Glossary: Or How to Get Some Cool Glossary Tools for FreeDefinition of the DITA Glossary: Or How to Get Some Cool Glossary Tools for Free
Definition of the DITA Glossary: Or How to Get Some Cool Glossary Tools for Free
Contrext Solutions
 
Twisted XSL Tricks: Column Switching for FOP
Twisted XSL Tricks: Column Switching for FOPTwisted XSL Tricks: Column Switching for FOP
Twisted XSL Tricks: Column Switching for FOP
Contrext Solutions
 
Can I Have a Word: Managing Shared Glossaries and References to Terms With DITA
Can I Have a Word: Managing Shared Glossaries and References to Terms With DITACan I Have a Word: Managing Shared Glossaries and References to Terms With DITA
Can I Have a Word: Managing Shared Glossaries and References to Terms With DITA
Contrext Solutions
 
Ki, Qi, Key: The Way of DITA Harmony With Keys and Key References
Ki, Qi, Key: The Way of DITA Harmony With Keys and Key ReferencesKi, Qi, Key: The Way of DITA Harmony With Keys and Key References
Ki, Qi, Key: The Way of DITA Harmony With Keys and Key References
Contrext Solutions
 
Content Management on Zero Budget: DITA for Small Teams
Content Management on Zero Budget: DITA for Small TeamsContent Management on Zero Budget: DITA for Small Teams
Content Management on Zero Budget: DITA for Small Teams
Contrext Solutions
 
Locale-Aware Sorting and Text Handling in the Open Toolkit
Locale-Aware Sorting and Text Handling in the Open ToolkitLocale-Aware Sorting and Text Handling in the Open Toolkit
Locale-Aware Sorting and Text Handling in the Open Toolkit
Contrext Solutions
 
Can I Have a Word: Managing Shared Glossaries and References to Terms With DITA
Can I Have a Word: Managing Shared Glossaries and References to Terms With DITACan I Have a Word: Managing Shared Glossaries and References to Terms With DITA
Can I Have a Word: Managing Shared Glossaries and References to Terms With DITA
Contrext Solutions
 
XSLT Magic Tricks with DITA and FrameMaker
XSLT Magic Tricks with DITA and FrameMakerXSLT Magic Tricks with DITA and FrameMaker
XSLT Magic Tricks with DITA and FrameMaker
Contrext Solutions
 
FrameMaker and the DITA Open Toolkit
FrameMaker and the DITA Open ToolkitFrameMaker and the DITA Open Toolkit
FrameMaker and the DITA Open Toolkit
Contrext Solutions
 
DITA Reuse Challenges and Response
DITA Reuse Challenges and ResponseDITA Reuse Challenges and Response
DITA Reuse Challenges and Response
Contrext Solutions
 
RELAX NG and DITA: An Almost Perfect Match
RELAX NG and DITA: An Almost Perfect MatchRELAX NG and DITA: An Almost Perfect Match
RELAX NG and DITA: An Almost Perfect Match
Contrext Solutions
 
Managing Multiple Open Toolkit Configurations Using git Lightning Talk
Managing Multiple Open Toolkit Configurations Using git Lightning TalkManaging Multiple Open Toolkit Configurations Using git Lightning Talk
Managing Multiple Open Toolkit Configurations Using git Lightning Talk
Contrext Solutions
 
DITA OT Day 2015 Lightning Talk On The DITA Community Project
DITA OT Day 2015 Lightning Talk On The DITA Community ProjectDITA OT Day 2015 Lightning Talk On The DITA Community Project
DITA OT Day 2015 Lightning Talk On The DITA Community Project
Contrext Solutions
 
They Worked Before, What Happened? Understanding DITA Cross-Book Links
They Worked Before, What Happened? Understanding DITA Cross-Book Links They Worked Before, What Happened? Understanding DITA Cross-Book Links
They Worked Before, What Happened? Understanding DITA Cross-Book Links
Contrext Solutions
 
No Ki Magic: Managing Complex DITA Hyperdocuments
No Ki Magic: Managing Complex DITA HyperdocumentsNo Ki Magic: Managing Complex DITA Hyperdocuments
No Ki Magic: Managing Complex DITA Hyperdocuments
Contrext Solutions
 
Poster: Cross-Document Linking in DITA
Poster: Cross-Document Linking in DITAPoster: Cross-Document Linking in DITA
Poster: Cross-Document Linking in DITA
Contrext Solutions
 
Managing Deliverable-Specific Link Anchors: New Suggested Best Practice for Keys
Managing Deliverable-Specific Link Anchors: New Suggested Best Practice for KeysManaging Deliverable-Specific Link Anchors: New Suggested Best Practice for Keys
Managing Deliverable-Specific Link Anchors: New Suggested Best Practice for Keys
Contrext Solutions
 
What's New in DITA 1.3 (Tekom, Nov 2014)
What's New in DITA 1.3 (Tekom, Nov 2014)What's New in DITA 1.3 (Tekom, Nov 2014)
What's New in DITA 1.3 (Tekom, Nov 2014)
Contrext Solutions
 

More from Contrext Solutions (20)

Stupid DITA Tricks: After-The-Fact Specialization: Treating Aircraft Manuals ...
Stupid DITA Tricks:After-The-Fact Specialization: Treating Aircraft Manuals ...Stupid DITA Tricks:After-The-Fact Specialization: Treating Aircraft Manuals ...
Stupid DITA Tricks: After-The-Fact Specialization: Treating Aircraft Manuals ...
 
Loose Leaf Publishing Using Antenna House Formatter and CSS for Pagination
Loose Leaf Publishing Using Antenna House Formatter and CSS for PaginationLoose Leaf Publishing Using Antenna House Formatter and CSS for Pagination
Loose Leaf Publishing Using Antenna House Formatter and CSS for Pagination
 
Definition of the DITA Glossary: Or How to Get Some Cool Glossary Tools for Free
Definition of the DITA Glossary: Or How to Get Some Cool Glossary Tools for FreeDefinition of the DITA Glossary: Or How to Get Some Cool Glossary Tools for Free
Definition of the DITA Glossary: Or How to Get Some Cool Glossary Tools for Free
 
Twisted XSL Tricks: Column Switching for FOP
Twisted XSL Tricks: Column Switching for FOPTwisted XSL Tricks: Column Switching for FOP
Twisted XSL Tricks: Column Switching for FOP
 
Can I Have a Word: Managing Shared Glossaries and References to Terms With DITA
Can I Have a Word: Managing Shared Glossaries and References to Terms With DITACan I Have a Word: Managing Shared Glossaries and References to Terms With DITA
Can I Have a Word: Managing Shared Glossaries and References to Terms With DITA
 
Ki, Qi, Key: The Way of DITA Harmony With Keys and Key References
Ki, Qi, Key: The Way of DITA Harmony With Keys and Key ReferencesKi, Qi, Key: The Way of DITA Harmony With Keys and Key References
Ki, Qi, Key: The Way of DITA Harmony With Keys and Key References
 
Content Management on Zero Budget: DITA for Small Teams
Content Management on Zero Budget: DITA for Small TeamsContent Management on Zero Budget: DITA for Small Teams
Content Management on Zero Budget: DITA for Small Teams
 
Locale-Aware Sorting and Text Handling in the Open Toolkit
Locale-Aware Sorting and Text Handling in the Open ToolkitLocale-Aware Sorting and Text Handling in the Open Toolkit
Locale-Aware Sorting and Text Handling in the Open Toolkit
 
Can I Have a Word: Managing Shared Glossaries and References to Terms With DITA
Can I Have a Word: Managing Shared Glossaries and References to Terms With DITACan I Have a Word: Managing Shared Glossaries and References to Terms With DITA
Can I Have a Word: Managing Shared Glossaries and References to Terms With DITA
 
XSLT Magic Tricks with DITA and FrameMaker
XSLT Magic Tricks with DITA and FrameMakerXSLT Magic Tricks with DITA and FrameMaker
XSLT Magic Tricks with DITA and FrameMaker
 
FrameMaker and the DITA Open Toolkit
FrameMaker and the DITA Open ToolkitFrameMaker and the DITA Open Toolkit
FrameMaker and the DITA Open Toolkit
 
DITA Reuse Challenges and Response
DITA Reuse Challenges and ResponseDITA Reuse Challenges and Response
DITA Reuse Challenges and Response
 
RELAX NG and DITA: An Almost Perfect Match
RELAX NG and DITA: An Almost Perfect MatchRELAX NG and DITA: An Almost Perfect Match
RELAX NG and DITA: An Almost Perfect Match
 
Managing Multiple Open Toolkit Configurations Using git Lightning Talk
Managing Multiple Open Toolkit Configurations Using git Lightning TalkManaging Multiple Open Toolkit Configurations Using git Lightning Talk
Managing Multiple Open Toolkit Configurations Using git Lightning Talk
 
DITA OT Day 2015 Lightning Talk On The DITA Community Project
DITA OT Day 2015 Lightning Talk On The DITA Community ProjectDITA OT Day 2015 Lightning Talk On The DITA Community Project
DITA OT Day 2015 Lightning Talk On The DITA Community Project
 
They Worked Before, What Happened? Understanding DITA Cross-Book Links
They Worked Before, What Happened? Understanding DITA Cross-Book Links They Worked Before, What Happened? Understanding DITA Cross-Book Links
They Worked Before, What Happened? Understanding DITA Cross-Book Links
 
No Ki Magic: Managing Complex DITA Hyperdocuments
No Ki Magic: Managing Complex DITA HyperdocumentsNo Ki Magic: Managing Complex DITA Hyperdocuments
No Ki Magic: Managing Complex DITA Hyperdocuments
 
Poster: Cross-Document Linking in DITA
Poster: Cross-Document Linking in DITAPoster: Cross-Document Linking in DITA
Poster: Cross-Document Linking in DITA
 
Managing Deliverable-Specific Link Anchors: New Suggested Best Practice for Keys
Managing Deliverable-Specific Link Anchors: New Suggested Best Practice for KeysManaging Deliverable-Specific Link Anchors: New Suggested Best Practice for Keys
Managing Deliverable-Specific Link Anchors: New Suggested Best Practice for Keys
 
What's New in DITA 1.3 (Tekom, Nov 2014)
What's New in DITA 1.3 (Tekom, Nov 2014)What's New in DITA 1.3 (Tekom, Nov 2014)
What's New in DITA 1.3 (Tekom, Nov 2014)
 

Recently uploaded

Securing your Kubernetes cluster_ a step-by-step guide to success !
Securing your Kubernetes cluster_ a step-by-step guide to success !Securing your Kubernetes cluster_ a step-by-step guide to success !
Securing your Kubernetes cluster_ a step-by-step guide to success !
KatiaHIMEUR1
 
FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdfFIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
FIDO Alliance
 
Software Delivery At the Speed of AI: Inflectra Invests In AI-Powered Quality
Software Delivery At the Speed of AI: Inflectra Invests In AI-Powered QualitySoftware Delivery At the Speed of AI: Inflectra Invests In AI-Powered Quality
Software Delivery At the Speed of AI: Inflectra Invests In AI-Powered Quality
Inflectra
 
Bits & Pixels using AI for Good.........
Bits & Pixels using AI for Good.........Bits & Pixels using AI for Good.........
Bits & Pixels using AI for Good.........
Alison B. Lowndes
 
JMeter webinar - integration with InfluxDB and Grafana
JMeter webinar - integration with InfluxDB and GrafanaJMeter webinar - integration with InfluxDB and Grafana
JMeter webinar - integration with InfluxDB and Grafana
RTTS
 
Neuro-symbolic is not enough, we need neuro-*semantic*
Neuro-symbolic is not enough, we need neuro-*semantic*Neuro-symbolic is not enough, we need neuro-*semantic*
Neuro-symbolic is not enough, we need neuro-*semantic*
Frank van Harmelen
 
GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...
GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...
GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...
Sri Ambati
 
Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...
Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...
Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...
Product School
 
Connector Corner: Automate dynamic content and events by pushing a button
Connector Corner: Automate dynamic content and events by pushing a buttonConnector Corner: Automate dynamic content and events by pushing a button
Connector Corner: Automate dynamic content and events by pushing a button
DianaGray10
 
UiPath Test Automation using UiPath Test Suite series, part 3
UiPath Test Automation using UiPath Test Suite series, part 3UiPath Test Automation using UiPath Test Suite series, part 3
UiPath Test Automation using UiPath Test Suite series, part 3
DianaGray10
 
Knowledge engineering: from people to machines and back
Knowledge engineering: from people to machines and backKnowledge engineering: from people to machines and back
Knowledge engineering: from people to machines and back
Elena Simperl
 
Essentials of Automations: Optimizing FME Workflows with Parameters
Essentials of Automations: Optimizing FME Workflows with ParametersEssentials of Automations: Optimizing FME Workflows with Parameters
Essentials of Automations: Optimizing FME Workflows with Parameters
Safe Software
 
State of ICS and IoT Cyber Threat Landscape Report 2024 preview
State of ICS and IoT Cyber Threat Landscape Report 2024 previewState of ICS and IoT Cyber Threat Landscape Report 2024 preview
State of ICS and IoT Cyber Threat Landscape Report 2024 preview
Prayukth K V
 
Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...
Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...
Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...
Jeffrey Haguewood
 
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdfFIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance
 
Generating a custom Ruby SDK for your web service or Rails API using Smithy
Generating a custom Ruby SDK for your web service or Rails API using SmithyGenerating a custom Ruby SDK for your web service or Rails API using Smithy
Generating a custom Ruby SDK for your web service or Rails API using Smithy
g2nightmarescribd
 
Accelerate your Kubernetes clusters with Varnish Caching
Accelerate your Kubernetes clusters with Varnish CachingAccelerate your Kubernetes clusters with Varnish Caching
Accelerate your Kubernetes clusters with Varnish Caching
Thijs Feryn
 
Transcript: Selling digital books in 2024: Insights from industry leaders - T...
Transcript: Selling digital books in 2024: Insights from industry leaders - T...Transcript: Selling digital books in 2024: Insights from industry leaders - T...
Transcript: Selling digital books in 2024: Insights from industry leaders - T...
BookNet Canada
 
Epistemic Interaction - tuning interfaces to provide information for AI support
Epistemic Interaction - tuning interfaces to provide information for AI supportEpistemic Interaction - tuning interfaces to provide information for AI support
Epistemic Interaction - tuning interfaces to provide information for AI support
Alan Dix
 
Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024
Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024
Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024
Tobias Schneck
 

Recently uploaded (20)

Securing your Kubernetes cluster_ a step-by-step guide to success !
Securing your Kubernetes cluster_ a step-by-step guide to success !Securing your Kubernetes cluster_ a step-by-step guide to success !
Securing your Kubernetes cluster_ a step-by-step guide to success !
 
FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdfFIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
 
Software Delivery At the Speed of AI: Inflectra Invests In AI-Powered Quality
Software Delivery At the Speed of AI: Inflectra Invests In AI-Powered QualitySoftware Delivery At the Speed of AI: Inflectra Invests In AI-Powered Quality
Software Delivery At the Speed of AI: Inflectra Invests In AI-Powered Quality
 
Bits & Pixels using AI for Good.........
Bits & Pixels using AI for Good.........Bits & Pixels using AI for Good.........
Bits & Pixels using AI for Good.........
 
JMeter webinar - integration with InfluxDB and Grafana
JMeter webinar - integration with InfluxDB and GrafanaJMeter webinar - integration with InfluxDB and Grafana
JMeter webinar - integration with InfluxDB and Grafana
 
Neuro-symbolic is not enough, we need neuro-*semantic*
Neuro-symbolic is not enough, we need neuro-*semantic*Neuro-symbolic is not enough, we need neuro-*semantic*
Neuro-symbolic is not enough, we need neuro-*semantic*
 
GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...
GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...
GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...
 
Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...
Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...
Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...
 
Connector Corner: Automate dynamic content and events by pushing a button
Connector Corner: Automate dynamic content and events by pushing a buttonConnector Corner: Automate dynamic content and events by pushing a button
Connector Corner: Automate dynamic content and events by pushing a button
 
UiPath Test Automation using UiPath Test Suite series, part 3
UiPath Test Automation using UiPath Test Suite series, part 3UiPath Test Automation using UiPath Test Suite series, part 3
UiPath Test Automation using UiPath Test Suite series, part 3
 
Knowledge engineering: from people to machines and back
Knowledge engineering: from people to machines and backKnowledge engineering: from people to machines and back
Knowledge engineering: from people to machines and back
 
Essentials of Automations: Optimizing FME Workflows with Parameters
Essentials of Automations: Optimizing FME Workflows with ParametersEssentials of Automations: Optimizing FME Workflows with Parameters
Essentials of Automations: Optimizing FME Workflows with Parameters
 
State of ICS and IoT Cyber Threat Landscape Report 2024 preview
State of ICS and IoT Cyber Threat Landscape Report 2024 previewState of ICS and IoT Cyber Threat Landscape Report 2024 preview
State of ICS and IoT Cyber Threat Landscape Report 2024 preview
 
Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...
Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...
Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...
 
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdfFIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
 
Generating a custom Ruby SDK for your web service or Rails API using Smithy
Generating a custom Ruby SDK for your web service or Rails API using SmithyGenerating a custom Ruby SDK for your web service or Rails API using Smithy
Generating a custom Ruby SDK for your web service or Rails API using Smithy
 
Accelerate your Kubernetes clusters with Varnish Caching
Accelerate your Kubernetes clusters with Varnish CachingAccelerate your Kubernetes clusters with Varnish Caching
Accelerate your Kubernetes clusters with Varnish Caching
 
Transcript: Selling digital books in 2024: Insights from industry leaders - T...
Transcript: Selling digital books in 2024: Insights from industry leaders - T...Transcript: Selling digital books in 2024: Insights from industry leaders - T...
Transcript: Selling digital books in 2024: Insights from industry leaders - T...
 
Epistemic Interaction - tuning interfaces to provide information for AI support
Epistemic Interaction - tuning interfaces to provide information for AI supportEpistemic Interaction - tuning interfaces to provide information for AI support
Epistemic Interaction - tuning interfaces to provide information for AI support
 
Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024
Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024
Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024
 

Using CSS Paging to Render DITA Documents

  • 1. Using CSS Paging to Render DITA Documents Eliot Kimber Contrext DITA Europe 2017
  • 2. About the Author • Independent consultant focusing on DITA analysis, design, and implementation • Doing SGML and XML for cough 30 years cough • Founding member of the DITA Technical Committee • Founding member of the XML Working Group • Co-editor of HyTime standard (ISO/IEC 10744) • Primary developer and founder of the DITA for Publishers project • Author of DITA for Practitioners, Vol 1 (XML Press) 11/1/2017 DITA Europe 2017 2
  • 3. Agenda • What is CSS Pagination? • Why is it interesting? • Implementation challenges • Using it with DITA • Demo (?) • Summary and conclusions 11/1/2017 DITA Europe 2017 3
  • 4. WHAT IS CSS PAGINATION? 11/1/2017 DITA Europe 2017 4
  • 5. What Is CSS? • Cascading style sheets • W3C standard(s) • Provides declarative styling for HTML and XML content • Familiar to anyone who does Web work: div.note { font-size: 8pt; margin-left: 4px; margin-top: 1em; border-top: solid 0.5pt blue; } 11/1/2017 DITA Europe 2017 5
  • 6. CSS for Pagination • Original CSS specification did not directly address paged media • CSS Pagination effort adds features needed to do paged layout: – Page masters and page sequences – Generated text for page edge regions – Page number references – Additional typographic effects 11/1/2017 DITA Europe 2017 6
  • 7. Current State of CSS Paging • As of November 2017: • Pagination specifications are still drafts • Design is incomplete and in flux • No open-source implementation • Proprietary extensions needed to meet all layout requirements • Optimized for use with HTML • Not really practical to apply it directly to arbitrary XML 11/1/2017 DITA Europe 2017 7
  • 8. WHY IS CSS PAGINATION INTERESTING? 11/1/2017 DITA Europe 2017 8
  • 9. Short Version: It’s Easier and Cheaper Despite the limitations of the CSS pagination design, unfinished state of the specs, and lack of open-source implementations, CSS for pagination is so much easier to use and easier to sell that the value is quite compelling. Having done FO for decades, having now done CSS pagination, I would choose CSS over FO every time, for any XML pagination project. 11/1/2017 DITA Europe 2017 9
  • 10. Easier Than FO • CSS is objectively much easier to use than FO – Syntax is easier – Technology is familiar to all • Separates transformation concern from formatting concern • Input to pagination can be HTML augmented as required to meet paging requirements • Easier to generate different page layouts (e.g., rotated pages, foldouts) than with PDF2 transform 11/1/2017 DITA Europe 2017 10
  • 11. Easier to Staff • Anyone familiar with CSS can learn pagination styling with appropriate guidance • No shortage of CSS skills in marketplace • CSS is (and is seen as) more mainstream • FO is becoming a niche technology 11/1/2017 DITA Europe 2017 11
  • 12. Potential To Share Styling With Web Deliverables • Can share common CSS modules between Web and paged outputs • Makes it easier to coordinate and synchronize print and online styles • Can have a single base DITA-to-HTML transform – Small extensions to augment the HTML to enable paging • Avoids need for completely separate PDF transform 11/1/2017 DITA Europe 2017 12
  • 14. Transforms Still Required • CSS cannot reorder the markup • CSS cannot synthesize structures • Elements used in running heads and feet are consumed—cannot also be shown in main flow • CSS cannot style elements based on properties of descendants or following sibling 11/1/2017 DITA Europe 2017 14
  • 15. Need to Generate “Augmented HTML” • Need to augment the HTML to support pagination: • Add elements for running heads, feet, edge tabs, etc. • Add wrappers as needed for page master application • Add @class values as needed to enable styling – Elements affected by descendants or following siblings – To make CSS selectors simpler 11/1/2017 DITA Europe 2017 15
  • 16. HTML Augmentation Simpler Than FO Generation • The XSLT required to do augmentation is much simpler than the XSLT needed for FO generation • Can be a post-process applied to Web HTML • Can be a small extension to Open Toolkit Web HTML transform • Largely independent of the styling details • Minimizes amount of XSLT work needed to do pagination styling 11/1/2017 DITA Europe 2017 16
  • 17. CSS Page Edge Model Is Limited • CSS model for page edge regions (running heads and feet) has some design limitations and is underspecified. • Don’t have full control over the placement of content in the page header and footer • Usually not a problem but can be in some specific cases 11/1/2017 DITA Europe 2017 17
  • 18. CSS Keep Model Limited • No “keep together always” or “keep with next always” options • Limits ability to control page breaks without proprietary extensions 11/1/2017 DITA Europe 2017 18
  • 19. A Few XSL-FO Features Are Missing from the CSS Design • Mandatory keep-together • Table markers • Collapsing of page references for index entries 11/1/2017 DITA Europe 2017 19
  • 20. CSS Specs Are Hard To Read • The CSS specification is spread across a large number of separate documents • Pagination specs are in various draft stages and are under active development • Can be hard to find and understand all the different parts • No cohesive guide to CSS pagination as of November 2017 11/1/2017 DITA Europe 2017 20
  • 21. Implementations are Not Free • No open-source, free-for-commercial use implementations • However, value of commercial options is clear • Unlikely that browser vendors will implement CSS pagination 11/1/2017 DITA Europe 2017 21
  • 22. Can Be a Challenge to Debug • Can be hard to find syntax errors in CSS • Editors don’t always report errors clearly • Processors don’t always report errors clearly • Browsers may not recognize or validate paging-specific properties • Browsers will not recognize or validate proprietary extension properties 11/1/2017 DITA Europe 2017 22
  • 23. USING WITH DITA 11/1/2017 DITA Europe 2017 23
  • 24. Not Too Hard With Open Toolkit • Several options currently available: • DITA Community org.dita-community.css-pdf plugin • oXygenXML Chemistry • XML Rocks dita-ot-pdf-css-page plugin 11/1/2017 DITA Europe 2017 24
  • 25. My Approach: Extend HTML5 Transform • DITA Community plugin: org.dita- community.css-pdf • Extends org.dita.html5 • Provides paging-specific CSS stylesheets • Extends HTML5 transform • Still in early development but easy to extend and modify 11/1/2017 DITA Europe 2017 25
  • 26. Extend HTML5 Transform • Extend the HTML5 transform to produce pagination-ready HTML – Add elements for running heads and feet – Add additional @class attributes as needed – Generate a single chunk HTML file for entire publication – Generate ToCs, index, other lists • Can be fairly generic – Depends on page edge requirements – Specific styling requirements not already supported by normal @class values and HTML structure (if any) 11/1/2017 DITA Europe 2017 26
  • 27. Create Print CSS Styles • Mostly about defining the page masters – Page geometry and page masters (first, odd, even, blank, etc.) – Page edge details: running heads and feet, side decorations (e.g., thumb tabs) • Can reuse most or all of web CSS • Can use media queries to control print vs. web instructions • Can have publication-specific styles sheets if appropriate 11/1/2017 DITA Europe 2017 27
  • 28. @page Rule Example @page { size: 210mm 297mm; margin-left: 6pc; margin-right: 6pc; counter-increment: myPage; counter-reset: footnote; @top-center { font-size: 9pt; content: 'Running head goes here'; } @bottom-center { content: '-' counter(myPage) '-'; } @footnote { width: 100%; border-top: 0.5pt solid black; margin-top: 0.5in; border-length: 0.5in; } } 11/1/2017 DITA Europe 2017 28
  • 29. Define Ant Instructions to Run CSS Pagination Processor • Can be generic per CSS processor • Will likely require processor-specific font and options configuration 11/1/2017 DITA Europe 2017 29
  • 30. Another Approach: Generate XSL- FO based on CSS styling • oXygen Chemistry plugin • See Radu’s talk from DITA OT Day 2017 11/1/2017 DITA Europe 2017 30
  • 32. Antenna House Formatter • Offers separately-priced CSS pagination feature • Very complete implementation with many important extensions • Can output “area tree” document – Enables multi-pass processes – Allows for ad-hoc fixing of CSS or AHF limitations • Have used in challenging project, can attest to the quality of the product • https://www.antennahouse.com 11/1/2017 DITA Europe 2017 32
  • 33. Prince • One of the first CSS pagination implementations • Used by many commercial publishers • Have not used it myself • Free license for non-commercial use • https://www.princexml.com 11/1/2017 DITA Europe 2017 33
  • 34. Vivliostyle • Chief designer is also a key contributor to the CSS Pagination spec • Javascript implementation • Can use in-browser or as standalone server • Provides needed extensions • Not as mature as Prince or Antenna House Formatter • Free in-browser pagination for non-commercial use • http://vivliostyle.com/ 11/1/2017 DITA Europe 2017 34
  • 35. PDF Reactor • Java library • Designed to integrate PDF generation into Web apps • http://www.pdfreactor.com/ 11/1/2017 DITA Europe 2017 35
  • 36. Oxygen Chemistry Plugin • Translates CSS styling to FO under the covers • Uses FOP (or any FO engine) as the underlying formatter • Styles the DITA XML directly • Somewhat experimental • Can be used if you have an OxygenXML license • https://www.oxygenxml.com/ 11/1/2017 DITA Europe 2017 36
  • 38. CSS Is Compelling Alternative to XSL-FO • Easier to learn • Easier to use • Separates transform concern from styling concern • Better coordination with Web deliverables • Minimizes amount of XSLT required 11/1/2017 DITA Europe 2017 38
  • 39. CSS Specs Need Work • CSS Pagination specs are in progress and various stages of completeness and stability • CSS specs are spread over many individual docs • Currently no comprehensive guide to CSS pagination 11/1/2017 DITA Europe 2017 39
  • 40. CSS Pagination Not 100% Complete • Missing some features found in XSL-FO • Implementations don’t necessarily provide all the extensions you might need 11/1/2017 DITA Europe 2017 40
  • 41. No One Free Solution Today • No open-source implementation that allows commercial use – Vivliostyle offers free in-browser pagination for non-commercial use • Commercial options all provide good value • Several commercial options to choose from • Tools are improving • Update: Weasy Print, http://weasyprint.org/ is free open-source. Features are limited. 11/1/2017 DITA Europe 2017 41
  • 42. Conclusion: Move to CSS Pagination if You Can • Seems like a no brainer if you have budget for a processor • If you’re already using Antenna House Formatter then cost is small increment over current license costs • If you’re using Oxygen then Oxygen CSS pagination solution is available to you now 11/1/2017 DITA Europe 2017 42
  • 43. Demo If time permits DITA Europe 201710/29/17 43
  • 45. Resources • CSS pagination specification: https://www.w3.org/TR/css3-page • DITA Community CSS PDF plugin: https://github.com/dita-community/org.dita- community.css-pdf • Antenna House Formatter: https://www.antennahouse.com • OxygenXML: http://oxygenxml.com • Prince: https://www.princexml.com/ • Vivliostyle: http://vivliostyle.com/ • Weasy Print, http://weasyprint.org/ 11/1/2017 DITA Europe 2017 45