SlideShare ist ein Scribd-Unternehmen logo
1 von 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

Weitere ähnliche Inhalte

Andere mochten auch

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
 
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 laoYannine Adriana Martinez Valle
 
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
 
Apasionada
ApasionadaApasionada
ApasionadaAna Silva
 
Libros de texto 2012 2013
Libros de texto 2012 2013Libros de texto 2012 2013
Libros de texto 2012 2013Ies De Valdemoro
 
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
 
Renungan tentang waktu
Renungan tentang waktuRenungan tentang waktu
Renungan tentang waktuMuhsin Hariyanto
 

Andere mochten auch (20)

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
 
Renungan tentang waktu
Renungan tentang waktuRenungan tentang waktu
Renungan tentang waktu
 

Ähnlich wie 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
 
Xml
XmlXml
XmlAnas Sa
 
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
 
Solr Masterclass Bangkok, June 2014
Solr Masterclass Bangkok, June 2014Solr Masterclass Bangkok, June 2014
Solr Masterclass Bangkok, June 2014Alexandre Rafalovitch
 
The CoFX Data Model
The CoFX Data ModelThe CoFX Data Model
The CoFX Data ModelRainer Stropek
 
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
 
1 xml fundamentals
1 xml fundamentals1 xml fundamentals
1 xml fundamentalsDr.Saranya K.G
 
Introduce to XML
Introduce to XMLIntroduce to XML
Introduce to XMLvidede_group
 
Puppet for Everybody: Federated and Hierarchical Puppet Enterprise
Puppet for Everybody: Federated and Hierarchical Puppet EnterprisePuppet for Everybody: Federated and Hierarchical Puppet Enterprise
Puppet for Everybody: Federated and Hierarchical Puppet EnterprisecbowlesUT
 

Ähnlich wie 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
 
Puppet for Everybody: Federated and Hierarchical Puppet Enterprise
Puppet for Everybody: Federated and Hierarchical Puppet EnterprisePuppet for Everybody: Federated and Hierarchical Puppet Enterprise
Puppet for Everybody: Federated and Hierarchical Puppet Enterprise
 
Apache solr
Apache solrApache solr
Apache solr
 

Mehr von 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
 

Mehr von 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
 

KĂźrzlich hochgeladen

A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024Results
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)Gabriella Davis
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slidevu2urc
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Scriptwesley chun
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...Neo4j
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking MenDelhi Call girls
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking MenDelhi Call girls
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationMichael W. Hawkins
 
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxFactors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxKatpro Technologies
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerThousandEyes
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)wesley chun
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slidespraypatel2
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘RTylerCroy
 
Advantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your BusinessAdvantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your BusinessPixlogix Infotech
 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUK Journal
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfsudhanshuwaghmare1
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdfhans926745
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxMalak Abu Hammad
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024The Digital Insurer
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024The Digital Insurer
 

KĂźrzlich hochgeladen (20)

A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxFactors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slides
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 
Advantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your BusinessAdvantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your Business
 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptx
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024
 

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