SlideShare une entreprise Scribd logo
1  sur  55
Customizing PDF output
from the DITA Open Toolkit




                       Leigh White
               ElementalSource, LLC
Me, me, me


 • Background: English, Theoretical Linguistics
 • NOT a programmer or stylesheet developer
 • 20+ years as a content creator




ElementalSource, LLC
Lower your standards?


 • That depends…
        – Are your standards based on…non-standards?
               • A tweak here, a tweak there, whatever “looks right”
 • That is not a standard!
 • A standard is “an approved model”
        – Predictable and prescriptive
 • PDF processing via the OT is absolutely based on
   standards
        – If you can’t capture your “tweak” with a context-based rule,
          it’s not predictable or prescriptive—drop it!
ElementalSource, LLC
Ask yourself…


 …which is more important:
        – perfect pages
        – more time to spend creating quality content




ElementalSource, LLC
How does the OT make PDFs?


 • Uses the FO plug-in
 • A collection of stylesheets, variables files, build files,
   etc. that transform DITA into XSL:FO and then send it to
   an FO processor
 • You never see an actual page until the PDF is done
        – This is a COMPLETE mind freak for some people
        – And a godsent miracle for others



ElementalSource, LLC
FO plug-in


 • Originally developed to fill in the “hardcopy” gap
 • Currently maintained by Suite Solutions
 • Several folks working on improvements or complete
   re-writes
 • It ain’t pretty but it works




ElementalSource, LLC
What happens




ElementalSource, LLC
Quick tour of the FO plug-in


 • DITA-OTdemofo:




ElementalSource, LLC
The cfg folder


 • DITA-OTdemofocfg:

                       Attribute sets to          Images associated
                            control                    with the
                       appearance of                customization
                           elements



             Stylesheets to
                 control                   Language-specific
             processing and                   variables for
               behavior of                  “boilerplate” text;
                elements                      header/footer
                                             definitions; note
                                              image paths

ElementalSource, LLC
ElementalSource, LLC
Attribute sets


 • Grouped by element “type” (lists, links, tables, etc.) or
   domain (ui, pr, etc.)
 • Everything else is in commons-attr.xsl




ElementalSource, LLC
Attribute sets


 • Expect to see the attributes in the default sets
 • If you customize &
   remove attributes,
   OT “fills them back
   in” from the default




ElementalSource, LLC
Attribute sets


 • Can call other attribute sets:




ElementalSource, LLC
Attribute sets


 • Called by the stylesheets in
   DITA-OTdemofoxsl
 • Use the attribute set name to find the xsl template OR
   use the xsl template to find the attribute set




ElementalSource, LLC
Attribute sets


 • Some files are specific to FO processors:
        – _axf: Antenna House
        – _xep: XEP
        – _fop: Apache FOP




ElementalSource, LLC
basic-settings.xsl


 • Variables that define:
        –   page dimensions
        –   margins
        –   default font size
        –   default line height
 • Use these variables instead of fixed values in attribute
   sets and layout-masters
 • Add more as needed for greater uniformity

ElementalSource, LLC
XSL


 • Lots of these but many you probably won’t touch
 • Grouped by element “type” (lists, links, tables, etc.) or
   domain (ui, pr, etc.)
        – Names match the attribute set files
 • Everything else is in commons.xsl
        – Kitchen sink




ElementalSource, LLC
XSL


 • Some files specific to FO processors:
        – _axf: Antenna House
        – _xep: XEP
        – _fop: Apache FOP




ElementalSource, LLC
_1.0 files


 • Sometimes replace original file:
        – bookmarks_1.0.xsl
        – front-matter_1.0.xsl
 • Sometimes supplement original file:
        –   commons_1.0.xsl
        –   index_1.0.xsl
        –   table_1.0.xsl
        –   toc_1.0.xsl


ElementalSource, LLC
root-processing.xsl


 • Creates the “shell” for your FO file
 • Calls other templates for frontmatter, TOC, index, etc.
 • Creates variables from map metadata that are available
   throughout the build in headers, footers, cover pages,
   etc.




ElementalSource, LLC
Bored?   Confused?



ElementalSource, LLC
Okay, let’s make a PDF!


 • Multiple ditamaps
 • Bookmap
 • ANT build file
        – DITA-OTsamplesant_sample
 • Batch file
        – Copy startcmd.bat from DITA-OT




ElementalSource, LLC
A couple of quick changes


 • ANT build file:
        – Change FO processor
        – Retain the topic.fo file




ElementalSource, LLC
Create your own customization


 • Copy and rename Customization folder
        – Don’t make changes to the default files!
 • Rename and edit catalog.xml.orig
 • Call your customization from your ANT build file
 • Copy a file into your customization
        – commons-attr.xsl




ElementalSource, LLC
Create your own customization


 • In IntellContfoattrs, rename custom.xsl.orig
        – Rename the one in IntellContfoxsl, too
 • Call your commons-attr.xsl from custom.xsl
        – <xsl:import href="commons-attr.xsl"/>
 • Make small, obvious change to commons-attr.xsl and
   run build to test




ElementalSource, LLC
basic-settings.xsl


 • Copy to your customization




ElementalSource, LLC
Add bookmap metadata to cover


 • Copy root-processing.xsl to your customization
 • Create variables
        – productRev
        – bookNo
 • Copy front-matter_1.0.xsl to your customization
 • Add fo:block elements that contain variables




ElementalSource, LLC
Rearrange info in headers, footers


 • Copy en.xml to your customization
 • Copy static-content.xsl to your customization




ElementalSource, LLC
static-content.xsl


 • insertBodyOddHeader
 • insertBodyEvenHeader
        – Comment out <prodname>, <pagenum>
 • insertBodyOddFooter
 • insertBodyEvenFooter
        – Comment out <heading>
        – Add <prodname>, <version>



ElementalSource, LLC
en.xml


 • <variable id="Body odd footer"/>
        – <param ref-name="prodname"/>&#xA0;<param ref-
          name="version"/><param ref-name="pagenum"/>
 • <variable id="Body even footer"/>
        – <param ref-name="pagenum"/><param ref-
          name="prodname"/>&#xA0;<param ref-name="version"/>




ElementalSource, LLC
Wait!


 • Page numbers are not on the outside in even footers
 • basic-settings.xsl:
        – <xsl:variable name="mirror-page-margins" select="true()"/>




ElementalSource, LLC
Justify footers


 • static-content.xsl:
        – <fo:leader leader-pattern="space"/>
        – Be sure to put in right place!
 • Copy static-content-attr.xsl to your customization
 • Attribute sets odd__footer, even__footer
        – text-align=“justify”
        – text-align-last=“justify”



ElementalSource, LLC
Set up even, odd body pages


 • Copy layout-masters.xsl to your customization
        – Different path in custom.xsl
 • Copy layout-masters-attr.xsl to your customization
 • region-body.odd, region-body.even:
        – <xsl:attribute name="background-
          color">#ffffc0</xsl:attribute>
 • region.before, region.after:
        – <xsl:attribute name="background-
          color">#ffc0ff</xsl:attribute>

ElementalSource, LLC
Change inside, outside margins


 • basic-settings.xsl
        – page-margin-inside
        – page-margin-outside




ElementalSource, LLC
Align footers with margins


 • static-content-attr.xsl
        – odd__footer
               • start-indent ($page-margin-inside)
               • end-indent ($page-margin-outside)
        – even__footer
               • start-indent ($page-margin-outside)
               • end-indent ($page-margin-inside)




ElementalSource, LLC
Why are *all* the pages…


 …yellow and pink, not just body pages?

 • By default, all page types call region-body.odd and
   region-body.even
 • You can change this
        – Add new attribute sets for each page type




ElementalSource, LLC
Restart page numbering


 • Copy commons.xsl to your customization
 • startPageNumbering template:
        – Comment out xsl:if
 • processTopicAppendix template:
        – Add <xsl:call-template name="startPageNumbering"/>
        – (It’s missing for appendix)




ElementalSource, LLC
Add an image to the title page


 • Background image
        – Can also add within flow
 • layout-masters.xsl:
        – Change front-matter-first to use region-
          body__frontmatter.first
 • layout-masters-attr.xsl:
        – Create region-body__frontmatter.first




ElementalSource, LLC
Change fonts


 •    Copy font-mappings.xml to your customization
 •    Uncomment entry in catalog
 •    Add Verdana to “Sans”
 •    Add Palatino to “Serif”
 •    Processor-dependent:
        – XEP: edit xep.xml
        – FOP: edit fop.xconf
        – AH: edit font-config.xml

ElementalSource, LLC
Format TOC levels


 • Copy toc.xsl and toc-attr.xsl to your customization
 • Copy font-weight attribute
        – Add different colors for levels
        – Useful model for any level-based attribute




ElementalSource, LLC
TOC attribute set interaction


 • __toc__topic__content is overwritten by
        – __toc__chapter__content
        – __toc__appendix__content
        – __toc__part__content
  when processing bookmap
 • Many more examples




ElementalSource, LLC
Understanding indent formula


 • concat($side-col-width, ' + (', string($level - 1), ' * ',
   $toc.toc-indent, ') + ', $toc.text-indent)
        – 25pt + (0 * 14pt) + 30pt = 55pt
        – 25pt + (1 * 14pt) + 30pt = 69pt
        – 25pt + (2 * 14pt) + 30pt = 83pt
 • To play with the formula, adjust values for
        – toc.toc-indent
        – toc.text-indent


ElementalSource, LLC
Include +/- levels in TOC


 • Default is 4
 • Controlled by tocMaximumLevel
        – Defined in topic2fo.xsl, topic2fo_1.0.xsl
        – You can hardcode in your customization
 • toc.xsl:
        – <xsl:if test="$topicLevel &lt; $tocMaximumLevel">
        – <xsl:if test="$topicLevel &lt; 3">



ElementalSource, LLC
Remove the mini-TOC


 • ANT build file:
        – <property name="args.chapter.layout" value="BASIC"/>




ElementalSource, LLC
Format index page numbers


 •    Copy index-attr.xsl, index.xsl to your customization
 •    Find index-page-citation-list (in index.xsl)
 •    Put whole xsl:if inside <fo:inline>
 •    Call attribute set __index__page__link
 •    Add attributes to __index__page__link (index-attr.xsl)




ElementalSource, LLC
Omit top-level index page #s


• In index.xsl:
<xsl:when test="opentopic-index:index.entry">
   <!--<xsl:for-each select="child::opentopic-index:refID[last()]">
      <fo:inline index-key="{@value}"/>
   </xsl:for-each>-->
</xsl:when>
<xsl:otherwise>
...

• This is a complete kludge but the list is silent…any better
  ideas?


ElementalSource, LLC
Dynamically scale images


 • “Create a chart note”
        – Image is way too big
 • commons-attr.xsl
        – “image” attribute set:
        <xsl:attribute name="content-width">scale-to-
          fit</xsl:attribute>
        <xsl:attribute name="content-height">100%</xsl:attribute>
        <xsl:attribute name="width">100%</xsl:attribute>
        <xsl:attribute name="scaling">uniform</xsl:attribute>

 • Watch out for width-height ratios!

ElementalSource, LLC
Why didn’t I…


 …Talk more about how to format specific elements?

 • Because that’s the easiest thing to do!
        – Once you find the correct attribute set, it’s a matter of adding
          a new attribute or changing the value of an existing one.




ElementalSource, LLC
Frame-FO crosswalk

                       1. (attribute set name)
                       2. text-indent
                       3. margin-left
                       4. margin-right
                       5. text-align
                       6. margin-top/
                          space-above
                       7. margin-bottom/
                          space-below
                       8. line-height
                       9. line-height-shift-
                          adjustment

ElementalSource, LLC
Frame-FO crosswalk

                       1.   font-family
                       2.   font-size
                       3.   font-style
                       4.   font-weight
                       5.   text-transform
                       6.   color
                       7.   letter-spacing
                       8.   font-stretch
                       9.   xml:lang

ElementalSource, LLC
Frame-FO crosswalk

                       10. text-decoration
                       11. text-decoration
                       12. text-decoration
                       13. baseline-shift
                       14. font-variant




ElementalSource, LLC
Frame-FO crosswalk

                       1. break-before;
                          page-break-before
                       2. keep-with-next.within-
                          page/keep-together
                       3. keep-with-
                          previous.within-page/
                          keep-together
                       4. orphans, widows
                       5. span
                       6. fo:float*
                       7. relative-align
ElementalSource, LLC
Frame-FO crosswalk

                       1. hyphenation-ladder-
                          count
                       2. hyphenation-remain-
                          character-count
                       3. hyphenation-push-
                          character-count
                       4. hyphenate;
                          hyphenation-keep
                       5. word-spacing
                       6. border-top*
                       7. border-bottom*
ElementalSource, LLC
Other resources


 • Jarno Elovirta's web-based PDF plug-in generator:
   http://dita-generator.appspot.com/pdf-plugin/

 • Patrick Quinlan's (Ditanauts.org) mypdf plug-in:
   http://sourceforge.net/p/mypdf/home/Home/

 • Suite Solutions’ DITA-OT webinars:
   http://www.suite-sol.com

 • Custom PDFs from the DITA Open Toolkit, Leigh White
   XML Press, 2012
ElementalSource, LLC
Contact me




                                     Leigh White
                             ElementalSource, LLC

                       elementalsource@gmail.com
                                     678.467.7706



ElementalSource, LLC

Contenu connexe

En vedette

Success Factors for DITA Adoption with XMetaL: Best Practices and Fundamentals
Success Factors for DITA Adoption with XMetaL: Best Practices and FundamentalsSuccess Factors for DITA Adoption with XMetaL: Best Practices and Fundamentals
Success Factors for DITA Adoption with XMetaL: Best Practices and FundamentalsScott Abel
 
Structured Thinking: Authoring for Precision Content
Structured Thinking: Authoring for Precision ContentStructured Thinking: Authoring for Precision Content
Structured Thinking: Authoring for Precision ContentRob Hanna, ECMs
 
Comparing DITA Support in XMetaL and FrameMaker
Comparing DITA Support in XMetaL and FrameMakerComparing DITA Support in XMetaL and FrameMaker
Comparing DITA Support in XMetaL and FrameMakerScott Abel
 
Using adobe® framemaker® 10 part 2
Using adobe® framemaker® 10  part 2Using adobe® framemaker® 10  part 2
Using adobe® framemaker® 10 part 2Raghu nath
 
Authoring and Publishing with XMetaL and DITA
Authoring and Publishing with XMetaL and DITAAuthoring and Publishing with XMetaL and DITA
Authoring and Publishing with XMetaL and DITAScott Abel
 
Dante teologo areopago_raffi
Dante teologo areopago_raffiDante teologo areopago_raffi
Dante teologo areopago_raffiAlessandro Raffi
 
Fahrzeugklinik baut Werkstattkette mit Beteiligungskapital aus
Fahrzeugklinik baut Werkstattkette mit Beteiligungskapital ausFahrzeugklinik baut Werkstattkette mit Beteiligungskapital aus
Fahrzeugklinik baut Werkstattkette mit Beteiligungskapital ausfahrzeugklinik GmbH
 
Are Clouds a Game Change? Business says Yes; IT says No!
Are Clouds a Game Change? Business says Yes; IT says No! Are Clouds a Game Change? Business says Yes; IT says No!
Are Clouds a Game Change? Business says Yes; IT says No! Capgemini
 
InP Light Emitting Diodes
InP Light Emitting DiodesInP Light Emitting Diodes
InP Light Emitting Diodesrajvkk
 
Herausforderungen Neuer Medien in der Lehre
Herausforderungen Neuer Medien in der LehreHerausforderungen Neuer Medien in der Lehre
Herausforderungen Neuer Medien in der LehreJohannes Dorfinger
 
Plan social media para un blog
Plan social media para un blogPlan social media para un blog
Plan social media para un blogLluís Raga
 
Short introduction at Informatio Scientifica & Informatio Medicata 2014
Short introduction at Informatio Scientifica & Informatio Medicata 2014Short introduction at Informatio Scientifica & Informatio Medicata 2014
Short introduction at Informatio Scientifica & Informatio Medicata 2014Peter Bencsik
 
Articles and Reviews for March 8, 2012
Articles and Reviews for March 8, 2012Articles and Reviews for March 8, 2012
Articles and Reviews for March 8, 2012levelquilt1692
 
Curso certificado de social media strategist
Curso certificado de social media strategistCurso certificado de social media strategist
Curso certificado de social media strategistJosep Claret
 

En vedette (20)

Success Factors for DITA Adoption with XMetaL: Best Practices and Fundamentals
Success Factors for DITA Adoption with XMetaL: Best Practices and FundamentalsSuccess Factors for DITA Adoption with XMetaL: Best Practices and Fundamentals
Success Factors for DITA Adoption with XMetaL: Best Practices and Fundamentals
 
Structured Thinking: Authoring for Precision Content
Structured Thinking: Authoring for Precision ContentStructured Thinking: Authoring for Precision Content
Structured Thinking: Authoring for Precision Content
 
Comparing DITA Support in XMetaL and FrameMaker
Comparing DITA Support in XMetaL and FrameMakerComparing DITA Support in XMetaL and FrameMaker
Comparing DITA Support in XMetaL and FrameMaker
 
Using adobe® framemaker® 10 part 2
Using adobe® framemaker® 10  part 2Using adobe® framemaker® 10  part 2
Using adobe® framemaker® 10 part 2
 
XMetaL DITA Workshop
XMetaL DITA WorkshopXMetaL DITA Workshop
XMetaL DITA Workshop
 
Authoring and Publishing with XMetaL and DITA
Authoring and Publishing with XMetaL and DITAAuthoring and Publishing with XMetaL and DITA
Authoring and Publishing with XMetaL and DITA
 
Dante teologo areopago_raffi
Dante teologo areopago_raffiDante teologo areopago_raffi
Dante teologo areopago_raffi
 
Act. 1 unidad 2 yannine adriana martínez valle lao
Act. 1 unidad 2 yannine adriana martínez valle laoAct. 1 unidad 2 yannine adriana martínez valle lao
Act. 1 unidad 2 yannine adriana martínez valle lao
 
Anúncios 24 12 pdf
Anúncios 24 12 pdfAnúncios 24 12 pdf
Anúncios 24 12 pdf
 
Fahrzeugklinik baut Werkstattkette mit Beteiligungskapital aus
Fahrzeugklinik baut Werkstattkette mit Beteiligungskapital ausFahrzeugklinik baut Werkstattkette mit Beteiligungskapital aus
Fahrzeugklinik baut Werkstattkette mit Beteiligungskapital aus
 
Are Clouds a Game Change? Business says Yes; IT says No!
Are Clouds a Game Change? Business says Yes; IT says No! Are Clouds a Game Change? Business says Yes; IT says No!
Are Clouds a Game Change? Business says Yes; IT says No!
 
CV
CVCV
CV
 
InP Light Emitting Diodes
InP Light Emitting DiodesInP Light Emitting Diodes
InP Light Emitting Diodes
 
Herausforderungen Neuer Medien in der Lehre
Herausforderungen Neuer Medien in der LehreHerausforderungen Neuer Medien in der Lehre
Herausforderungen Neuer Medien in der Lehre
 
Apasionada
ApasionadaApasionada
Apasionada
 
Libros de texto 2012 2013
Libros de texto 2012 2013Libros de texto 2012 2013
Libros de texto 2012 2013
 
Plan social media para un blog
Plan social media para un blogPlan social media para un blog
Plan social media para un blog
 
Short introduction at Informatio Scientifica & Informatio Medicata 2014
Short introduction at Informatio Scientifica & Informatio Medicata 2014Short introduction at Informatio Scientifica & Informatio Medicata 2014
Short introduction at Informatio Scientifica & Informatio Medicata 2014
 
Articles and Reviews for March 8, 2012
Articles and Reviews for March 8, 2012Articles and Reviews for March 8, 2012
Articles and Reviews for March 8, 2012
 
Curso certificado de social media strategist
Curso certificado de social media strategistCurso certificado de social media strategist
Curso certificado de social media strategist
 

Similaire à Custom PDFs from the DITA OT

Getting Started With Xsl Templates
Getting Started With Xsl TemplatesGetting Started With Xsl Templates
Getting Started With Xsl TemplatesWill Trillich
 
Building Content Types with Dexterity
Building Content Types with DexterityBuilding Content Types with Dexterity
Building Content Types with DexterityDavid Glick
 
24221030 Enhance Oracle Sshr With Advanced Personalizations And Oa Fwk Extens...
24221030 Enhance Oracle Sshr With Advanced Personalizations And Oa Fwk Extens...24221030 Enhance Oracle Sshr With Advanced Personalizations And Oa Fwk Extens...
24221030 Enhance Oracle Sshr With Advanced Personalizations And Oa Fwk Extens...Hossam El-Faxe
 
Solr Application Development Tutorial
Solr Application Development TutorialSolr Application Development Tutorial
Solr Application Development TutorialErik Hatcher
 
Information Retrieval - Data Science Bootcamp
Information Retrieval - Data Science BootcampInformation Retrieval - Data Science Bootcamp
Information Retrieval - Data Science BootcampKais Hassan, PhD
 
07 Advanced RTF Template Techniques.doc
07 Advanced RTF Template Techniques.doc07 Advanced RTF Template Techniques.doc
07 Advanced RTF Template Techniques.docMaqsood Joyo
 
20120606 Lazy Programmers Write Self-Modifying Code /or/ Dealing with XML Ord...
20120606 Lazy Programmers Write Self-Modifying Code /or/ Dealing with XML Ord...20120606 Lazy Programmers Write Self-Modifying Code /or/ Dealing with XML Ord...
20120606 Lazy Programmers Write Self-Modifying Code /or/ Dealing with XML Ord...David Horvath
 
Vibe Custom Development
Vibe Custom DevelopmentVibe Custom Development
Vibe Custom DevelopmentGWAVA
 
Solr Recipes Workshop
Solr Recipes WorkshopSolr Recipes Workshop
Solr Recipes WorkshopErik Hatcher
 
Creating Custom Templates for Joomla! 2.5
Creating Custom Templates for Joomla! 2.5Creating Custom Templates for Joomla! 2.5
Creating Custom Templates for Joomla! 2.5Don Cranford
 
Upgrading PDF Plugins to DITA_DITA-OT Day 2016
Upgrading PDF Plugins to DITA_DITA-OT Day 2016Upgrading PDF Plugins to DITA_DITA-OT Day 2016
Upgrading PDF Plugins to DITA_DITA-OT Day 2016IXIASOFT
 
Introduction to Drupal (7) Theming
Introduction to Drupal (7) ThemingIntroduction to Drupal (7) Theming
Introduction to Drupal (7) ThemingRobert Carr
 

Similaire à Custom PDFs from the DITA OT (20)

Getting Started With Xsl Templates
Getting Started With Xsl TemplatesGetting Started With Xsl Templates
Getting Started With Xsl Templates
 
Building Content Types with Dexterity
Building Content Types with DexterityBuilding Content Types with Dexterity
Building Content Types with Dexterity
 
24221030 Enhance Oracle Sshr With Advanced Personalizations And Oa Fwk Extens...
24221030 Enhance Oracle Sshr With Advanced Personalizations And Oa Fwk Extens...24221030 Enhance Oracle Sshr With Advanced Personalizations And Oa Fwk Extens...
24221030 Enhance Oracle Sshr With Advanced Personalizations And Oa Fwk Extens...
 
Solr Application Development Tutorial
Solr Application Development TutorialSolr Application Development Tutorial
Solr Application Development Tutorial
 
Information Retrieval - Data Science Bootcamp
Information Retrieval - Data Science BootcampInformation Retrieval - Data Science Bootcamp
Information Retrieval - Data Science Bootcamp
 
Xml
XmlXml
Xml
 
07 Advanced RTF Template Techniques.doc
07 Advanced RTF Template Techniques.doc07 Advanced RTF Template Techniques.doc
07 Advanced RTF Template Techniques.doc
 
20120606 Lazy Programmers Write Self-Modifying Code /or/ Dealing with XML Ord...
20120606 Lazy Programmers Write Self-Modifying Code /or/ Dealing with XML Ord...20120606 Lazy Programmers Write Self-Modifying Code /or/ Dealing with XML Ord...
20120606 Lazy Programmers Write Self-Modifying Code /or/ Dealing with XML Ord...
 
23xml
23xml23xml
23xml
 
Vibe Custom Development
Vibe Custom DevelopmentVibe Custom Development
Vibe Custom Development
 
Solr Recipes Workshop
Solr Recipes WorkshopSolr Recipes Workshop
Solr Recipes Workshop
 
Creating Custom Templates for Joomla! 2.5
Creating Custom Templates for Joomla! 2.5Creating Custom Templates for Joomla! 2.5
Creating Custom Templates for Joomla! 2.5
 
Solr Masterclass Bangkok, June 2014
Solr Masterclass Bangkok, June 2014Solr Masterclass Bangkok, June 2014
Solr Masterclass Bangkok, June 2014
 
XML
XMLXML
XML
 
The CoFX Data Model
The CoFX Data ModelThe CoFX Data Model
The CoFX Data Model
 
Upgrading PDF Plugins to DITA_DITA-OT Day 2016
Upgrading PDF Plugins to DITA_DITA-OT Day 2016Upgrading PDF Plugins to DITA_DITA-OT Day 2016
Upgrading PDF Plugins to DITA_DITA-OT Day 2016
 
1 xml fundamentals
1 xml fundamentals1 xml fundamentals
1 xml fundamentals
 
Introduce to XML
Introduce to XMLIntroduce to XML
Introduce to XML
 
Apache solr
Apache solrApache solr
Apache solr
 
Introduction to Drupal (7) Theming
Introduction to Drupal (7) ThemingIntroduction to Drupal (7) Theming
Introduction to Drupal (7) Theming
 

Plus de Leigh White

DITA 1.3 Keyscopes
DITA 1.3 KeyscopesDITA 1.3 Keyscopes
DITA 1.3 KeyscopesLeigh White
 
The Content Revolution: Managing the Move to a CCMS
The Content Revolution: Managing the Move to a CCMSThe Content Revolution: Managing the Move to a CCMS
The Content Revolution: Managing the Move to a CCMSLeigh White
 
The Elusive Promise of Reuse
The Elusive Promise of ReuseThe Elusive Promise of Reuse
The Elusive Promise of ReuseLeigh White
 
To CMS or Not to CMS?
To CMS or Not to CMS?To CMS or Not to CMS?
To CMS or Not to CMS?Leigh White
 
Making the Mental Shift to Topic-Based Authoring and a CMS
Making the Mental Shift to Topic-Based Authoring and a CMSMaking the Mental Shift to Topic-Based Authoring and a CMS
Making the Mental Shift to Topic-Based Authoring and a CMSLeigh White
 
Information Architecture Explained
Information Architecture ExplainedInformation Architecture Explained
Information Architecture ExplainedLeigh White
 
Estimating time-tracking
Estimating time-trackingEstimating time-tracking
Estimating time-trackingLeigh White
 

Plus de Leigh White (8)

DITA 1.3 Keyscopes
DITA 1.3 KeyscopesDITA 1.3 Keyscopes
DITA 1.3 Keyscopes
 
The Content Revolution: Managing the Move to a CCMS
The Content Revolution: Managing the Move to a CCMSThe Content Revolution: Managing the Move to a CCMS
The Content Revolution: Managing the Move to a CCMS
 
The Elusive Promise of Reuse
The Elusive Promise of ReuseThe Elusive Promise of Reuse
The Elusive Promise of Reuse
 
To CMS or Not to CMS?
To CMS or Not to CMS?To CMS or Not to CMS?
To CMS or Not to CMS?
 
Making the Mental Shift to Topic-Based Authoring and a CMS
Making the Mental Shift to Topic-Based Authoring and a CMSMaking the Mental Shift to Topic-Based Authoring and a CMS
Making the Mental Shift to Topic-Based Authoring and a CMS
 
Information Architecture Explained
Information Architecture ExplainedInformation Architecture Explained
Information Architecture Explained
 
Taxonomy
TaxonomyTaxonomy
Taxonomy
 
Estimating time-tracking
Estimating time-trackingEstimating time-tracking
Estimating time-tracking
 

Dernier

Design Guidelines for Passkeys 2024.pptx
Design Guidelines for Passkeys 2024.pptxDesign Guidelines for Passkeys 2024.pptx
Design Guidelines for Passkeys 2024.pptxFIDO Alliance
 
WebAssembly is Key to Better LLM Performance
WebAssembly is Key to Better LLM PerformanceWebAssembly is Key to Better LLM Performance
WebAssembly is Key to Better LLM PerformanceSamy Fodil
 
Google I/O Extended 2024 Warsaw
Google I/O Extended 2024 WarsawGoogle I/O Extended 2024 Warsaw
Google I/O Extended 2024 WarsawGDSC PJATK
 
Event-Driven Architecture Masterclass: Engineering a Robust, High-performance...
Event-Driven Architecture Masterclass: Engineering a Robust, High-performance...Event-Driven Architecture Masterclass: Engineering a Robust, High-performance...
Event-Driven Architecture Masterclass: Engineering a Robust, High-performance...ScyllaDB
 
Generative AI Use Cases and Applications.pdf
Generative AI Use Cases and Applications.pdfGenerative AI Use Cases and Applications.pdf
Generative AI Use Cases and Applications.pdfalexjohnson7307
 
The Metaverse: Are We There Yet?
The  Metaverse:    Are   We  There  Yet?The  Metaverse:    Are   We  There  Yet?
The Metaverse: Are We There Yet?Mark Billinghurst
 
Intro in Product Management - Коротко про професію продакт менеджера
Intro in Product Management - Коротко про професію продакт менеджераIntro in Product Management - Коротко про професію продакт менеджера
Intro in Product Management - Коротко про професію продакт менеджераMark Opanasiuk
 
Hyatt driving innovation and exceptional customer experiences with FIDO passw...
Hyatt driving innovation and exceptional customer experiences with FIDO passw...Hyatt driving innovation and exceptional customer experiences with FIDO passw...
Hyatt driving innovation and exceptional customer experiences with FIDO passw...FIDO Alliance
 
Human Expert Website Manual WCAG 2.0 2.1 2.2 Audit - Digital Accessibility Au...
Human Expert Website Manual WCAG 2.0 2.1 2.2 Audit - Digital Accessibility Au...Human Expert Website Manual WCAG 2.0 2.1 2.2 Audit - Digital Accessibility Au...
Human Expert Website Manual WCAG 2.0 2.1 2.2 Audit - Digital Accessibility Au...Skynet Technologies
 
Working together SRE & Platform Engineering
Working together SRE & Platform EngineeringWorking together SRE & Platform Engineering
Working together SRE & Platform EngineeringMarcus Vechiato
 
Where to Learn More About FDO _ Richard at FIDO Alliance.pdf
Where to Learn More About FDO _ Richard at FIDO Alliance.pdfWhere to Learn More About FDO _ Richard at FIDO Alliance.pdf
Where to Learn More About FDO _ Richard at FIDO Alliance.pdfFIDO Alliance
 
Secure Zero Touch enabled Edge compute with Dell NativeEdge via FDO _ Brad at...
Secure Zero Touch enabled Edge compute with Dell NativeEdge via FDO _ Brad at...Secure Zero Touch enabled Edge compute with Dell NativeEdge via FDO _ Brad at...
Secure Zero Touch enabled Edge compute with Dell NativeEdge via FDO _ Brad at...FIDO Alliance
 
Collecting & Temporal Analysis of Behavioral Web Data - Tales From The Inside
Collecting & Temporal Analysis of Behavioral Web Data - Tales From The InsideCollecting & Temporal Analysis of Behavioral Web Data - Tales From The Inside
Collecting & Temporal Analysis of Behavioral Web Data - Tales From The InsideStefan Dietze
 
State of the Smart Building Startup Landscape 2024!
State of the Smart Building Startup Landscape 2024!State of the Smart Building Startup Landscape 2024!
State of the Smart Building Startup Landscape 2024!Memoori
 
TopCryptoSupers 12thReport OrionX May2024
TopCryptoSupers 12thReport OrionX May2024TopCryptoSupers 12thReport OrionX May2024
TopCryptoSupers 12thReport OrionX May2024Stephen Perrenod
 
Harnessing Passkeys in the Battle Against AI-Powered Cyber Threats.pptx
Harnessing Passkeys in the Battle Against AI-Powered Cyber Threats.pptxHarnessing Passkeys in the Battle Against AI-Powered Cyber Threats.pptx
Harnessing Passkeys in the Battle Against AI-Powered Cyber Threats.pptxFIDO Alliance
 
Continuing Bonds Through AI: A Hermeneutic Reflection on Thanabots
Continuing Bonds Through AI: A Hermeneutic Reflection on ThanabotsContinuing Bonds Through AI: A Hermeneutic Reflection on Thanabots
Continuing Bonds Through AI: A Hermeneutic Reflection on ThanabotsLeah Henrickson
 
Long journey of Ruby Standard library at RubyKaigi 2024
Long journey of Ruby Standard library at RubyKaigi 2024Long journey of Ruby Standard library at RubyKaigi 2024
Long journey of Ruby Standard library at RubyKaigi 2024Hiroshi SHIBATA
 
Design and Development of a Provenance Capture Platform for Data Science
Design and Development of a Provenance Capture Platform for Data ScienceDesign and Development of a Provenance Capture Platform for Data Science
Design and Development of a Provenance Capture Platform for Data SciencePaolo Missier
 
The Zero-ETL Approach: Enhancing Data Agility and Insight
The Zero-ETL Approach: Enhancing Data Agility and InsightThe Zero-ETL Approach: Enhancing Data Agility and Insight
The Zero-ETL Approach: Enhancing Data Agility and InsightSafe Software
 

Dernier (20)

Design Guidelines for Passkeys 2024.pptx
Design Guidelines for Passkeys 2024.pptxDesign Guidelines for Passkeys 2024.pptx
Design Guidelines for Passkeys 2024.pptx
 
WebAssembly is Key to Better LLM Performance
WebAssembly is Key to Better LLM PerformanceWebAssembly is Key to Better LLM Performance
WebAssembly is Key to Better LLM Performance
 
Google I/O Extended 2024 Warsaw
Google I/O Extended 2024 WarsawGoogle I/O Extended 2024 Warsaw
Google I/O Extended 2024 Warsaw
 
Event-Driven Architecture Masterclass: Engineering a Robust, High-performance...
Event-Driven Architecture Masterclass: Engineering a Robust, High-performance...Event-Driven Architecture Masterclass: Engineering a Robust, High-performance...
Event-Driven Architecture Masterclass: Engineering a Robust, High-performance...
 
Generative AI Use Cases and Applications.pdf
Generative AI Use Cases and Applications.pdfGenerative AI Use Cases and Applications.pdf
Generative AI Use Cases and Applications.pdf
 
The Metaverse: Are We There Yet?
The  Metaverse:    Are   We  There  Yet?The  Metaverse:    Are   We  There  Yet?
The Metaverse: Are We There Yet?
 
Intro in Product Management - Коротко про професію продакт менеджера
Intro in Product Management - Коротко про професію продакт менеджераIntro in Product Management - Коротко про професію продакт менеджера
Intro in Product Management - Коротко про професію продакт менеджера
 
Hyatt driving innovation and exceptional customer experiences with FIDO passw...
Hyatt driving innovation and exceptional customer experiences with FIDO passw...Hyatt driving innovation and exceptional customer experiences with FIDO passw...
Hyatt driving innovation and exceptional customer experiences with FIDO passw...
 
Human Expert Website Manual WCAG 2.0 2.1 2.2 Audit - Digital Accessibility Au...
Human Expert Website Manual WCAG 2.0 2.1 2.2 Audit - Digital Accessibility Au...Human Expert Website Manual WCAG 2.0 2.1 2.2 Audit - Digital Accessibility Au...
Human Expert Website Manual WCAG 2.0 2.1 2.2 Audit - Digital Accessibility Au...
 
Working together SRE & Platform Engineering
Working together SRE & Platform EngineeringWorking together SRE & Platform Engineering
Working together SRE & Platform Engineering
 
Where to Learn More About FDO _ Richard at FIDO Alliance.pdf
Where to Learn More About FDO _ Richard at FIDO Alliance.pdfWhere to Learn More About FDO _ Richard at FIDO Alliance.pdf
Where to Learn More About FDO _ Richard at FIDO Alliance.pdf
 
Secure Zero Touch enabled Edge compute with Dell NativeEdge via FDO _ Brad at...
Secure Zero Touch enabled Edge compute with Dell NativeEdge via FDO _ Brad at...Secure Zero Touch enabled Edge compute with Dell NativeEdge via FDO _ Brad at...
Secure Zero Touch enabled Edge compute with Dell NativeEdge via FDO _ Brad at...
 
Collecting & Temporal Analysis of Behavioral Web Data - Tales From The Inside
Collecting & Temporal Analysis of Behavioral Web Data - Tales From The InsideCollecting & Temporal Analysis of Behavioral Web Data - Tales From The Inside
Collecting & Temporal Analysis of Behavioral Web Data - Tales From The Inside
 
State of the Smart Building Startup Landscape 2024!
State of the Smart Building Startup Landscape 2024!State of the Smart Building Startup Landscape 2024!
State of the Smart Building Startup Landscape 2024!
 
TopCryptoSupers 12thReport OrionX May2024
TopCryptoSupers 12thReport OrionX May2024TopCryptoSupers 12thReport OrionX May2024
TopCryptoSupers 12thReport OrionX May2024
 
Harnessing Passkeys in the Battle Against AI-Powered Cyber Threats.pptx
Harnessing Passkeys in the Battle Against AI-Powered Cyber Threats.pptxHarnessing Passkeys in the Battle Against AI-Powered Cyber Threats.pptx
Harnessing Passkeys in the Battle Against AI-Powered Cyber Threats.pptx
 
Continuing Bonds Through AI: A Hermeneutic Reflection on Thanabots
Continuing Bonds Through AI: A Hermeneutic Reflection on ThanabotsContinuing Bonds Through AI: A Hermeneutic Reflection on Thanabots
Continuing Bonds Through AI: A Hermeneutic Reflection on Thanabots
 
Long journey of Ruby Standard library at RubyKaigi 2024
Long journey of Ruby Standard library at RubyKaigi 2024Long journey of Ruby Standard library at RubyKaigi 2024
Long journey of Ruby Standard library at RubyKaigi 2024
 
Design and Development of a Provenance Capture Platform for Data Science
Design and Development of a Provenance Capture Platform for Data ScienceDesign and Development of a Provenance Capture Platform for Data Science
Design and Development of a Provenance Capture Platform for Data Science
 
The Zero-ETL Approach: Enhancing Data Agility and Insight
The Zero-ETL Approach: Enhancing Data Agility and InsightThe Zero-ETL Approach: Enhancing Data Agility and Insight
The Zero-ETL Approach: Enhancing Data Agility and Insight
 

Custom PDFs from the DITA OT

  • 1. Customizing PDF output from the DITA Open Toolkit Leigh White ElementalSource, LLC
  • 2. Me, me, me • Background: English, Theoretical Linguistics • NOT a programmer or stylesheet developer • 20+ years as a content creator ElementalSource, LLC
  • 3. Lower your standards? • That depends… – Are your standards based on…non-standards? • A tweak here, a tweak there, whatever “looks right” • That is not a standard! • A standard is “an approved model” – Predictable and prescriptive • PDF processing via the OT is absolutely based on standards – If you can’t capture your “tweak” with a context-based rule, it’s not predictable or prescriptive—drop it! ElementalSource, LLC
  • 4. Ask yourself… …which is more important: – perfect pages – more time to spend creating quality content ElementalSource, LLC
  • 5. How does the OT make PDFs? • Uses the FO plug-in • A collection of stylesheets, variables files, build files, etc. that transform DITA into XSL:FO and then send it to an FO processor • You never see an actual page until the PDF is done – This is a COMPLETE mind freak for some people – And a godsent miracle for others ElementalSource, LLC
  • 6. FO plug-in • Originally developed to fill in the “hardcopy” gap • Currently maintained by Suite Solutions • Several folks working on improvements or complete re-writes • It ain’t pretty but it works ElementalSource, LLC
  • 8. Quick tour of the FO plug-in • DITA-OTdemofo: ElementalSource, LLC
  • 9. The cfg folder • DITA-OTdemofocfg: Attribute sets to Images associated control with the appearance of customization elements Stylesheets to control Language-specific processing and variables for behavior of “boilerplate” text; elements header/footer definitions; note image paths ElementalSource, LLC
  • 11. Attribute sets • Grouped by element “type” (lists, links, tables, etc.) or domain (ui, pr, etc.) • Everything else is in commons-attr.xsl ElementalSource, LLC
  • 12. Attribute sets • Expect to see the attributes in the default sets • If you customize & remove attributes, OT “fills them back in” from the default ElementalSource, LLC
  • 13. Attribute sets • Can call other attribute sets: ElementalSource, LLC
  • 14. Attribute sets • Called by the stylesheets in DITA-OTdemofoxsl • Use the attribute set name to find the xsl template OR use the xsl template to find the attribute set ElementalSource, LLC
  • 15. Attribute sets • Some files are specific to FO processors: – _axf: Antenna House – _xep: XEP – _fop: Apache FOP ElementalSource, LLC
  • 16. basic-settings.xsl • Variables that define: – page dimensions – margins – default font size – default line height • Use these variables instead of fixed values in attribute sets and layout-masters • Add more as needed for greater uniformity ElementalSource, LLC
  • 17. XSL • Lots of these but many you probably won’t touch • Grouped by element “type” (lists, links, tables, etc.) or domain (ui, pr, etc.) – Names match the attribute set files • Everything else is in commons.xsl – Kitchen sink ElementalSource, LLC
  • 18. XSL • Some files specific to FO processors: – _axf: Antenna House – _xep: XEP – _fop: Apache FOP ElementalSource, LLC
  • 19. _1.0 files • Sometimes replace original file: – bookmarks_1.0.xsl – front-matter_1.0.xsl • Sometimes supplement original file: – commons_1.0.xsl – index_1.0.xsl – table_1.0.xsl – toc_1.0.xsl ElementalSource, LLC
  • 20. root-processing.xsl • Creates the “shell” for your FO file • Calls other templates for frontmatter, TOC, index, etc. • Creates variables from map metadata that are available throughout the build in headers, footers, cover pages, etc. ElementalSource, LLC
  • 21. Bored? Confused? ElementalSource, LLC
  • 22. Okay, let’s make a PDF! • Multiple ditamaps • Bookmap • ANT build file – DITA-OTsamplesant_sample • Batch file – Copy startcmd.bat from DITA-OT ElementalSource, LLC
  • 23. A couple of quick changes • ANT build file: – Change FO processor – Retain the topic.fo file ElementalSource, LLC
  • 24. Create your own customization • Copy and rename Customization folder – Don’t make changes to the default files! • Rename and edit catalog.xml.orig • Call your customization from your ANT build file • Copy a file into your customization – commons-attr.xsl ElementalSource, LLC
  • 25. Create your own customization • In IntellContfoattrs, rename custom.xsl.orig – Rename the one in IntellContfoxsl, too • Call your commons-attr.xsl from custom.xsl – <xsl:import href="commons-attr.xsl"/> • Make small, obvious change to commons-attr.xsl and run build to test ElementalSource, LLC
  • 26. basic-settings.xsl • Copy to your customization ElementalSource, LLC
  • 27. Add bookmap metadata to cover • Copy root-processing.xsl to your customization • Create variables – productRev – bookNo • Copy front-matter_1.0.xsl to your customization • Add fo:block elements that contain variables ElementalSource, LLC
  • 28. Rearrange info in headers, footers • Copy en.xml to your customization • Copy static-content.xsl to your customization ElementalSource, LLC
  • 29. static-content.xsl • insertBodyOddHeader • insertBodyEvenHeader – Comment out <prodname>, <pagenum> • insertBodyOddFooter • insertBodyEvenFooter – Comment out <heading> – Add <prodname>, <version> ElementalSource, LLC
  • 30. en.xml • <variable id="Body odd footer"/> – <param ref-name="prodname"/>&#xA0;<param ref- name="version"/><param ref-name="pagenum"/> • <variable id="Body even footer"/> – <param ref-name="pagenum"/><param ref- name="prodname"/>&#xA0;<param ref-name="version"/> ElementalSource, LLC
  • 31. Wait! • Page numbers are not on the outside in even footers • basic-settings.xsl: – <xsl:variable name="mirror-page-margins" select="true()"/> ElementalSource, LLC
  • 32. Justify footers • static-content.xsl: – <fo:leader leader-pattern="space"/> – Be sure to put in right place! • Copy static-content-attr.xsl to your customization • Attribute sets odd__footer, even__footer – text-align=“justify” – text-align-last=“justify” ElementalSource, LLC
  • 33. Set up even, odd body pages • Copy layout-masters.xsl to your customization – Different path in custom.xsl • Copy layout-masters-attr.xsl to your customization • region-body.odd, region-body.even: – <xsl:attribute name="background- color">#ffffc0</xsl:attribute> • region.before, region.after: – <xsl:attribute name="background- color">#ffc0ff</xsl:attribute> ElementalSource, LLC
  • 34. Change inside, outside margins • basic-settings.xsl – page-margin-inside – page-margin-outside ElementalSource, LLC
  • 35. Align footers with margins • static-content-attr.xsl – odd__footer • start-indent ($page-margin-inside) • end-indent ($page-margin-outside) – even__footer • start-indent ($page-margin-outside) • end-indent ($page-margin-inside) ElementalSource, LLC
  • 36. Why are *all* the pages… …yellow and pink, not just body pages? • By default, all page types call region-body.odd and region-body.even • You can change this – Add new attribute sets for each page type ElementalSource, LLC
  • 37. Restart page numbering • Copy commons.xsl to your customization • startPageNumbering template: – Comment out xsl:if • processTopicAppendix template: – Add <xsl:call-template name="startPageNumbering"/> – (It’s missing for appendix) ElementalSource, LLC
  • 38. Add an image to the title page • Background image – Can also add within flow • layout-masters.xsl: – Change front-matter-first to use region- body__frontmatter.first • layout-masters-attr.xsl: – Create region-body__frontmatter.first ElementalSource, LLC
  • 39. Change fonts • Copy font-mappings.xml to your customization • Uncomment entry in catalog • Add Verdana to “Sans” • Add Palatino to “Serif” • Processor-dependent: – XEP: edit xep.xml – FOP: edit fop.xconf – AH: edit font-config.xml ElementalSource, LLC
  • 40. Format TOC levels • Copy toc.xsl and toc-attr.xsl to your customization • Copy font-weight attribute – Add different colors for levels – Useful model for any level-based attribute ElementalSource, LLC
  • 41. TOC attribute set interaction • __toc__topic__content is overwritten by – __toc__chapter__content – __toc__appendix__content – __toc__part__content when processing bookmap • Many more examples ElementalSource, LLC
  • 42. Understanding indent formula • concat($side-col-width, ' + (', string($level - 1), ' * ', $toc.toc-indent, ') + ', $toc.text-indent) – 25pt + (0 * 14pt) + 30pt = 55pt – 25pt + (1 * 14pt) + 30pt = 69pt – 25pt + (2 * 14pt) + 30pt = 83pt • To play with the formula, adjust values for – toc.toc-indent – toc.text-indent ElementalSource, LLC
  • 43. Include +/- levels in TOC • Default is 4 • Controlled by tocMaximumLevel – Defined in topic2fo.xsl, topic2fo_1.0.xsl – You can hardcode in your customization • toc.xsl: – <xsl:if test="$topicLevel &lt; $tocMaximumLevel"> – <xsl:if test="$topicLevel &lt; 3"> ElementalSource, LLC
  • 44. Remove the mini-TOC • ANT build file: – <property name="args.chapter.layout" value="BASIC"/> ElementalSource, LLC
  • 45. Format index page numbers • Copy index-attr.xsl, index.xsl to your customization • Find index-page-citation-list (in index.xsl) • Put whole xsl:if inside <fo:inline> • Call attribute set __index__page__link • Add attributes to __index__page__link (index-attr.xsl) ElementalSource, LLC
  • 46. Omit top-level index page #s • In index.xsl: <xsl:when test="opentopic-index:index.entry"> <!--<xsl:for-each select="child::opentopic-index:refID[last()]"> <fo:inline index-key="{@value}"/> </xsl:for-each>--> </xsl:when> <xsl:otherwise> ... • This is a complete kludge but the list is silent…any better ideas? ElementalSource, LLC
  • 47. Dynamically scale images • “Create a chart note” – Image is way too big • commons-attr.xsl – “image” attribute set: <xsl:attribute name="content-width">scale-to- fit</xsl:attribute> <xsl:attribute name="content-height">100%</xsl:attribute> <xsl:attribute name="width">100%</xsl:attribute> <xsl:attribute name="scaling">uniform</xsl:attribute> • Watch out for width-height ratios! ElementalSource, LLC
  • 48. Why didn’t I… …Talk more about how to format specific elements? • Because that’s the easiest thing to do! – Once you find the correct attribute set, it’s a matter of adding a new attribute or changing the value of an existing one. ElementalSource, LLC
  • 49. Frame-FO crosswalk 1. (attribute set name) 2. text-indent 3. margin-left 4. margin-right 5. text-align 6. margin-top/ space-above 7. margin-bottom/ space-below 8. line-height 9. line-height-shift- adjustment ElementalSource, LLC
  • 50. Frame-FO crosswalk 1. font-family 2. font-size 3. font-style 4. font-weight 5. text-transform 6. color 7. letter-spacing 8. font-stretch 9. xml:lang ElementalSource, LLC
  • 51. Frame-FO crosswalk 10. text-decoration 11. text-decoration 12. text-decoration 13. baseline-shift 14. font-variant ElementalSource, LLC
  • 52. Frame-FO crosswalk 1. break-before; page-break-before 2. keep-with-next.within- page/keep-together 3. keep-with- previous.within-page/ keep-together 4. orphans, widows 5. span 6. fo:float* 7. relative-align ElementalSource, LLC
  • 53. Frame-FO crosswalk 1. hyphenation-ladder- count 2. hyphenation-remain- character-count 3. hyphenation-push- character-count 4. hyphenate; hyphenation-keep 5. word-spacing 6. border-top* 7. border-bottom* ElementalSource, LLC
  • 54. Other resources • Jarno Elovirta's web-based PDF plug-in generator: http://dita-generator.appspot.com/pdf-plugin/ • Patrick Quinlan's (Ditanauts.org) mypdf plug-in: http://sourceforge.net/p/mypdf/home/Home/ • Suite Solutions’ DITA-OT webinars: http://www.suite-sol.com • Custom PDFs from the DITA Open Toolkit, Leigh White XML Press, 2012 ElementalSource, LLC
  • 55. Contact me Leigh White ElementalSource, LLC elementalsource@gmail.com 678.467.7706 ElementalSource, LLC