SlideShare uma empresa Scribd logo
1 de 27
Baixar para ler offline
Producing high-Quality
   office documents
      with Plone
  Plone Conference 2007, Naples, Italy


            Andreas Jung
        ZOPYX Ltd. & Co KG
     D-72070 Tübingen, Germany
    www.zopyx.com, info@zopyx.com
Available solutions for PDF
                  htmldoc-based solutions:

                       Plone2PDF

                       htmldoc is fast but it sucks:
                       no CSS support, poor PDF quality

                  Reportlab-based solutions

                       fast, good quality, not straight-forward


zopyx.com - SmartPrintNG
No out-of-the-box solution for Plone
                  available:

                       for generating PDF and other office
                       formats (Word, RTF, Open-Office)

                       stylesheet support

                       configurable templates and content
                       aggregation


zopyx.com - SmartPrintNG
SmartPrintNG

              exports Plone content to PDF, ODT, WML, RTF

              per content-type configurable

                   content-aggregation

                   templates and styles

              out-of-the-box working with any content-type

              highly configurable and customizable

zopyx.com - SmartPrintNG
Historical background

                  XSL-FO based approach in use for the
                  Haufe iDesk plattform

                  iDesk: Zope 2-based cross-plattform
                  framework for content-retrieval applications

                  in use since 2005

                  deployed to more than 150K customers
                  (means: 150K customers running Zope on
                  their Windows desktop)
zopyx.com - SmartPrintNG
Let‘s look under the hood
              of SmartPrintNG



zopyx.com - SmartPrintNG
A cross-format solution
                  Build on top of XSL-FO technology

                  XSL-FO:

                       Extensible Stylesheet Language-
                       Formatting Objects

                       a W3C recommendation

                  consider it as a XML-ish typesetting system
                  similiar to TEX

                  much nicer output; supports hyphenation
zopyx.com - SmartPrintNG
XSL-FO




zopyx.com - SmartPrintNG
Fix this




                           XSL-FO example


                  .....




zopyx.com - SmartPrintNG
XSL-FO wants XML,
            but we have only HTML!



zopyx.com - SmartPrintNG
All hail css2xslfo


                  Input: XML/CSS2 or XHTML/CSS

                  Output: XSL-FO document

                  Java-based

                  http://www.re.be/css2xslfo



zopyx.com - SmartPrintNG
From XSL-FO to
                            PDF & friends



zopyx.com - SmartPrintNG
XSL-FO processors

                  a XSL-FO processor converts a XSL-FO
                  document to some output format

                  XINC (www.lunasil.com):

                       Output format: PDF

                  XFC (www.xmlmind.com):

                       Output formats: RTF, DOCX, WML, ODT


zopyx.com - SmartPrintNG
XSL-FO processors (2)
                  XFC and XINC:

                           Java-based -> cross-plattform

                      „it just works“ [tm]

                      commercial :-(

                            but worth their money

                            other converter are even more expensive

                      about 500-600 Euro/CPU core/server
zopyx.com - SmartPrintNG
Why not using any free
             XSL-FO processors ?




zopyx.com - SmartPrintNG
Why not using any free
             XSL-FO processors ?
                Apache FOP (Formatting Objects Processor):

                    old FOP 0.4 sucked like hell

                    new FOP 0.9.X sucks less, moving slowly

                    only PDF support




zopyx.com - SmartPrintNG
Why not using any free
             XSL-FO processors ?
                Apache FOP (Formatting Objects Processor):

                    old FOP 0.4 sucked like hell

                    new FOP 0.9.X sucks less, moving slowly

                    only PDF support

                most XSL-FO converters are commercial



zopyx.com - SmartPrintNG
Why not using any free
             XSL-FO processors ?
                Apache FOP (Formatting Objects Processor):

                    old FOP 0.4 sucked like hell

                    new FOP 0.9.X sucks less, moving slowly

                    only PDF support

                most XSL-FO converters are commercial

                quality has its price

zopyx.com - SmartPrintNG
HTML-Fixer                        HTML-Tidy
            HTML
         aggregation
           adapter



                     HTML         css2xslfo (Java)                 XSL-FO xer
                   manipulator




                   Template/
                                   XINC (java)                      XFC (Java)
                  CSS chooser




                       Template                     Document
                       renderer                  (PDF, RTF, ODT,
                                                     DOCX)


               SmartPrintNG                 zopyx.convert
zopyx.com - SmartPrintNG
Content-type specific
                   configuration
     ZCML:
     <smartprintng:resourceDirectory
            interfaces=quot;Products.ATContentTypes.interface.interfaces.IATDocumentquot;
            directory=quot;documentquot;
     />




     Filesystem:
     > ls -la document
     -rw------- 1 ajung    users   540   Sep   5   18:53   Big.css
     -rw------- 1 ajung    users   515   Sep   5   18:52   StandardStylesheet.css
     -rw------- 1 ajung    users   820   Sep   5   18:50   StandardTemplate.pt
     -rw------- 1 ajung    users   617   Sep   5   17:34   default.fo_css




zopyx.com - SmartPrintNG
SmartPrintNG - more features

                  configure header & footer regions within
                  HTML

                  support for counters (e.g. page counters)

                  conditional output for left and right pages

                  multi-column support



zopyx.com - SmartPrintNG
zopyx.convert

                  encapsulates the complete XSL-FO conversion
                  logic

                  wraps css2xslfo, XINC and XFC inside a
                  Python Package

                  eats HTML

                  spits out PDF, RTF, ODT, DOCX


zopyx.com - SmartPrintNG
Image support

                  supports images inside Plone and external
                  images

                  converted internally to PNG

                  open issues:

                       images resolution selection

                       fitting images into a fixed layout


zopyx.com - SmartPrintNG
SmartPrintNG Licensing

                  Free for non-commercial use

                       educational institutions

                       NGOs

                       charity organiziations

                  commercial license in preparation for
                  commercial usage


zopyx.com - SmartPrintNG
zopyx.com - SmartPrintNG
zopyx.com - SmartPrintNG
zopyx.com - SmartPrintNG

Mais conteúdo relacionado

Mais de Vincenzo Barone

ItalianSkin: an improvement in the accessibility of the Plone interface in or...
ItalianSkin: an improvement in the accessibility of the Plone interface in or...ItalianSkin: an improvement in the accessibility of the Plone interface in or...
ItalianSkin: an improvement in the accessibility of the Plone interface in or...Vincenzo Barone
 
How to market Plone the Web2.0 way
How to market Plone the Web2.0 wayHow to market Plone the Web2.0 way
How to market Plone the Web2.0 wayVincenzo Barone
 
Lennart Regebro What Zope Did Wrong (And What To Do Instead)
Lennart Regebro   What Zope Did Wrong (And What To Do Instead)Lennart Regebro   What Zope Did Wrong (And What To Do Instead)
Lennart Regebro What Zope Did Wrong (And What To Do Instead)Vincenzo Barone
 
Wichert Akkerman Plone Deployment Practices The Plone.Org Setup
Wichert Akkerman   Plone Deployment Practices   The Plone.Org SetupWichert Akkerman   Plone Deployment Practices   The Plone.Org Setup
Wichert Akkerman Plone Deployment Practices The Plone.Org SetupVincenzo Barone
 
Philipp Von Weitershausen Untested Code Is Broken Code
Philipp Von Weitershausen   Untested Code Is Broken CodePhilipp Von Weitershausen   Untested Code Is Broken Code
Philipp Von Weitershausen Untested Code Is Broken CodeVincenzo Barone
 
Duco Dokter - Plone for the enterprise market: technical musing on caching, C...
Duco Dokter - Plone for the enterprise market: technical musing on caching, C...Duco Dokter - Plone for the enterprise market: technical musing on caching, C...
Duco Dokter - Plone for the enterprise market: technical musing on caching, C...Vincenzo Barone
 
Rocky Burt Subtyping Unleashed
Rocky Burt   Subtyping UnleashedRocky Burt   Subtyping Unleashed
Rocky Burt Subtyping UnleashedVincenzo Barone
 
Alec Mitchell Relationship Building Defining And Querying Complex Relatio...
Alec Mitchell   Relationship Building   Defining And Querying Complex Relatio...Alec Mitchell   Relationship Building   Defining And Querying Complex Relatio...
Alec Mitchell Relationship Building Defining And Querying Complex Relatio...Vincenzo Barone
 
Wageindicator Foundation: a Case Study
Wageindicator Foundation: a Case StudyWageindicator Foundation: a Case Study
Wageindicator Foundation: a Case StudyVincenzo Barone
 
Tom Lazar Using Zope3 Views And Viewlets For Plone 3.0 Product Development
Tom Lazar   Using Zope3 Views And Viewlets For Plone 3.0 Product DevelopmentTom Lazar   Using Zope3 Views And Viewlets For Plone 3.0 Product Development
Tom Lazar Using Zope3 Views And Viewlets For Plone 3.0 Product DevelopmentVincenzo Barone
 
Xavier Heymans Plone Gov Plone In The Public Sector. Panel Presenting The...
Xavier Heymans   Plone Gov   Plone In The Public Sector. Panel Presenting The...Xavier Heymans   Plone Gov   Plone In The Public Sector. Panel Presenting The...
Xavier Heymans Plone Gov Plone In The Public Sector. Panel Presenting The...Vincenzo Barone
 
Brent Lambert Plone In Education A Case Study Of The Use Of Plone And Educa...
Brent Lambert   Plone In Education A Case Study Of The Use Of Plone And Educa...Brent Lambert   Plone In Education A Case Study Of The Use Of Plone And Educa...
Brent Lambert Plone In Education A Case Study Of The Use Of Plone And Educa...Vincenzo Barone
 
Wichert Akkerman - Plone.Org Infrastructure
Wichert Akkerman - Plone.Org InfrastructureWichert Akkerman - Plone.Org Infrastructure
Wichert Akkerman - Plone.Org InfrastructureVincenzo Barone
 
Duncan Booth Kupu, Past Present And Future
Duncan Booth   Kupu, Past Present And FutureDuncan Booth   Kupu, Past Present And Future
Duncan Booth Kupu, Past Present And FutureVincenzo Barone
 
Jeroen Vloothuis Bend Kss To Your Will
Jeroen Vloothuis   Bend Kss To Your WillJeroen Vloothuis   Bend Kss To Your Will
Jeroen Vloothuis Bend Kss To Your WillVincenzo Barone
 
Jared Whitlock Open Source In The Enterprise Plone @ Novell
Jared Whitlock   Open Source In The Enterprise    Plone @ NovellJared Whitlock   Open Source In The Enterprise    Plone @ Novell
Jared Whitlock Open Source In The Enterprise Plone @ NovellVincenzo Barone
 
Paul Everitt Community And Foundation Plones Past, Present, Future
Paul Everitt   Community And Foundation   Plones Past, Present, Future Paul Everitt   Community And Foundation   Plones Past, Present, Future
Paul Everitt Community And Foundation Plones Past, Present, Future Vincenzo Barone
 
Thomas Moroz Open Source And The Open Society Using Plone To Build Commun...
Thomas Moroz   Open Source And The Open Society   Using Plone To Build Commun...Thomas Moroz   Open Source And The Open Society   Using Plone To Build Commun...
Thomas Moroz Open Source And The Open Society Using Plone To Build Commun...Vincenzo Barone
 
Lennart Regebro What Zope Did Wrong (And What To Do Instead)
Lennart Regebro   What Zope Did Wrong (And What To Do Instead)Lennart Regebro   What Zope Did Wrong (And What To Do Instead)
Lennart Regebro What Zope Did Wrong (And What To Do Instead)Vincenzo Barone
 
Roberto Allende Plone Cono Sur Creating A Plone Users Group From Scratch
Roberto Allende Plone Cono Sur   Creating A Plone Users Group From ScratchRoberto Allende Plone Cono Sur   Creating A Plone Users Group From Scratch
Roberto Allende Plone Cono Sur Creating A Plone Users Group From ScratchVincenzo Barone
 

Mais de Vincenzo Barone (20)

ItalianSkin: an improvement in the accessibility of the Plone interface in or...
ItalianSkin: an improvement in the accessibility of the Plone interface in or...ItalianSkin: an improvement in the accessibility of the Plone interface in or...
ItalianSkin: an improvement in the accessibility of the Plone interface in or...
 
How to market Plone the Web2.0 way
How to market Plone the Web2.0 wayHow to market Plone the Web2.0 way
How to market Plone the Web2.0 way
 
Lennart Regebro What Zope Did Wrong (And What To Do Instead)
Lennart Regebro   What Zope Did Wrong (And What To Do Instead)Lennart Regebro   What Zope Did Wrong (And What To Do Instead)
Lennart Regebro What Zope Did Wrong (And What To Do Instead)
 
Wichert Akkerman Plone Deployment Practices The Plone.Org Setup
Wichert Akkerman   Plone Deployment Practices   The Plone.Org SetupWichert Akkerman   Plone Deployment Practices   The Plone.Org Setup
Wichert Akkerman Plone Deployment Practices The Plone.Org Setup
 
Philipp Von Weitershausen Untested Code Is Broken Code
Philipp Von Weitershausen   Untested Code Is Broken CodePhilipp Von Weitershausen   Untested Code Is Broken Code
Philipp Von Weitershausen Untested Code Is Broken Code
 
Duco Dokter - Plone for the enterprise market: technical musing on caching, C...
Duco Dokter - Plone for the enterprise market: technical musing on caching, C...Duco Dokter - Plone for the enterprise market: technical musing on caching, C...
Duco Dokter - Plone for the enterprise market: technical musing on caching, C...
 
Rocky Burt Subtyping Unleashed
Rocky Burt   Subtyping UnleashedRocky Burt   Subtyping Unleashed
Rocky Burt Subtyping Unleashed
 
Alec Mitchell Relationship Building Defining And Querying Complex Relatio...
Alec Mitchell   Relationship Building   Defining And Querying Complex Relatio...Alec Mitchell   Relationship Building   Defining And Querying Complex Relatio...
Alec Mitchell Relationship Building Defining And Querying Complex Relatio...
 
Wageindicator Foundation: a Case Study
Wageindicator Foundation: a Case StudyWageindicator Foundation: a Case Study
Wageindicator Foundation: a Case Study
 
Tom Lazar Using Zope3 Views And Viewlets For Plone 3.0 Product Development
Tom Lazar   Using Zope3 Views And Viewlets For Plone 3.0 Product DevelopmentTom Lazar   Using Zope3 Views And Viewlets For Plone 3.0 Product Development
Tom Lazar Using Zope3 Views And Viewlets For Plone 3.0 Product Development
 
Xavier Heymans Plone Gov Plone In The Public Sector. Panel Presenting The...
Xavier Heymans   Plone Gov   Plone In The Public Sector. Panel Presenting The...Xavier Heymans   Plone Gov   Plone In The Public Sector. Panel Presenting The...
Xavier Heymans Plone Gov Plone In The Public Sector. Panel Presenting The...
 
Brent Lambert Plone In Education A Case Study Of The Use Of Plone And Educa...
Brent Lambert   Plone In Education A Case Study Of The Use Of Plone And Educa...Brent Lambert   Plone In Education A Case Study Of The Use Of Plone And Educa...
Brent Lambert Plone In Education A Case Study Of The Use Of Plone And Educa...
 
Wichert Akkerman - Plone.Org Infrastructure
Wichert Akkerman - Plone.Org InfrastructureWichert Akkerman - Plone.Org Infrastructure
Wichert Akkerman - Plone.Org Infrastructure
 
Duncan Booth Kupu, Past Present And Future
Duncan Booth   Kupu, Past Present And FutureDuncan Booth   Kupu, Past Present And Future
Duncan Booth Kupu, Past Present And Future
 
Jeroen Vloothuis Bend Kss To Your Will
Jeroen Vloothuis   Bend Kss To Your WillJeroen Vloothuis   Bend Kss To Your Will
Jeroen Vloothuis Bend Kss To Your Will
 
Jared Whitlock Open Source In The Enterprise Plone @ Novell
Jared Whitlock   Open Source In The Enterprise    Plone @ NovellJared Whitlock   Open Source In The Enterprise    Plone @ Novell
Jared Whitlock Open Source In The Enterprise Plone @ Novell
 
Paul Everitt Community And Foundation Plones Past, Present, Future
Paul Everitt   Community And Foundation   Plones Past, Present, Future Paul Everitt   Community And Foundation   Plones Past, Present, Future
Paul Everitt Community And Foundation Plones Past, Present, Future
 
Thomas Moroz Open Source And The Open Society Using Plone To Build Commun...
Thomas Moroz   Open Source And The Open Society   Using Plone To Build Commun...Thomas Moroz   Open Source And The Open Society   Using Plone To Build Commun...
Thomas Moroz Open Source And The Open Society Using Plone To Build Commun...
 
Lennart Regebro What Zope Did Wrong (And What To Do Instead)
Lennart Regebro   What Zope Did Wrong (And What To Do Instead)Lennart Regebro   What Zope Did Wrong (And What To Do Instead)
Lennart Regebro What Zope Did Wrong (And What To Do Instead)
 
Roberto Allende Plone Cono Sur Creating A Plone Users Group From Scratch
Roberto Allende Plone Cono Sur   Creating A Plone Users Group From ScratchRoberto Allende Plone Cono Sur   Creating A Plone Users Group From Scratch
Roberto Allende Plone Cono Sur Creating A Plone Users Group From Scratch
 

Último

04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptxHampshireHUG
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking MenDelhi Call girls
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreternaman860154
 
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
 
Top 5 Benefits OF Using Muvi Live Paywall For Live Streams
Top 5 Benefits OF Using Muvi Live Paywall For Live StreamsTop 5 Benefits OF Using Muvi Live Paywall For Live Streams
Top 5 Benefits OF Using Muvi Live Paywall For Live StreamsRoshan Dwivedi
 
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
 
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
 
🐬 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
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsEnterprise Knowledge
 
Developing An App To Navigate The Roads of Brazil
Developing An App To Navigate The Roads of BrazilDeveloping An App To Navigate The Roads of Brazil
Developing An App To Navigate The Roads of BrazilV3cube
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsMaria Levchenko
 
Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Paola De la Torre
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slidespraypatel2
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024The Digital Insurer
 
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
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationRadu Cotescu
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonetsnaman860154
 
Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024The Digital Insurer
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024Rafal Los
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Enterprise Knowledge
 

Último (20)

04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreter
 
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
 
Top 5 Benefits OF Using Muvi Live Paywall For Live Streams
Top 5 Benefits OF Using Muvi Live Paywall For Live StreamsTop 5 Benefits OF Using Muvi Live Paywall For Live Streams
Top 5 Benefits OF Using Muvi Live Paywall For Live Streams
 
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
 
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
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
 
Developing An App To Navigate The Roads of Brazil
Developing An App To Navigate The Roads of BrazilDeveloping An App To Navigate The Roads of Brazil
Developing An App To Navigate The Roads of Brazil
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed texts
 
Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slides
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
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
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonets
 
Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...
 

Andreas Jung Producing High Quality Documents With Plone New Approaches In Exporting Plone Content Into Office Formats

  • 1. Producing high-Quality office documents with Plone Plone Conference 2007, Naples, Italy Andreas Jung ZOPYX Ltd. & Co KG D-72070 Tübingen, Germany www.zopyx.com, info@zopyx.com
  • 2. Available solutions for PDF htmldoc-based solutions: Plone2PDF htmldoc is fast but it sucks: no CSS support, poor PDF quality Reportlab-based solutions fast, good quality, not straight-forward zopyx.com - SmartPrintNG
  • 3. No out-of-the-box solution for Plone available: for generating PDF and other office formats (Word, RTF, Open-Office) stylesheet support configurable templates and content aggregation zopyx.com - SmartPrintNG
  • 4. SmartPrintNG exports Plone content to PDF, ODT, WML, RTF per content-type configurable content-aggregation templates and styles out-of-the-box working with any content-type highly configurable and customizable zopyx.com - SmartPrintNG
  • 5. Historical background XSL-FO based approach in use for the Haufe iDesk plattform iDesk: Zope 2-based cross-plattform framework for content-retrieval applications in use since 2005 deployed to more than 150K customers (means: 150K customers running Zope on their Windows desktop) zopyx.com - SmartPrintNG
  • 6. Let‘s look under the hood of SmartPrintNG zopyx.com - SmartPrintNG
  • 7. A cross-format solution Build on top of XSL-FO technology XSL-FO: Extensible Stylesheet Language- Formatting Objects a W3C recommendation consider it as a XML-ish typesetting system similiar to TEX much nicer output; supports hyphenation zopyx.com - SmartPrintNG
  • 9. Fix this XSL-FO example ..... zopyx.com - SmartPrintNG
  • 10. XSL-FO wants XML, but we have only HTML! zopyx.com - SmartPrintNG
  • 11. All hail css2xslfo Input: XML/CSS2 or XHTML/CSS Output: XSL-FO document Java-based http://www.re.be/css2xslfo zopyx.com - SmartPrintNG
  • 12. From XSL-FO to PDF & friends zopyx.com - SmartPrintNG
  • 13. XSL-FO processors a XSL-FO processor converts a XSL-FO document to some output format XINC (www.lunasil.com): Output format: PDF XFC (www.xmlmind.com): Output formats: RTF, DOCX, WML, ODT zopyx.com - SmartPrintNG
  • 14. XSL-FO processors (2) XFC and XINC: Java-based -> cross-plattform „it just works“ [tm] commercial :-( but worth their money other converter are even more expensive about 500-600 Euro/CPU core/server zopyx.com - SmartPrintNG
  • 15. Why not using any free XSL-FO processors ? zopyx.com - SmartPrintNG
  • 16. Why not using any free XSL-FO processors ? Apache FOP (Formatting Objects Processor): old FOP 0.4 sucked like hell new FOP 0.9.X sucks less, moving slowly only PDF support zopyx.com - SmartPrintNG
  • 17. Why not using any free XSL-FO processors ? Apache FOP (Formatting Objects Processor): old FOP 0.4 sucked like hell new FOP 0.9.X sucks less, moving slowly only PDF support most XSL-FO converters are commercial zopyx.com - SmartPrintNG
  • 18. Why not using any free XSL-FO processors ? Apache FOP (Formatting Objects Processor): old FOP 0.4 sucked like hell new FOP 0.9.X sucks less, moving slowly only PDF support most XSL-FO converters are commercial quality has its price zopyx.com - SmartPrintNG
  • 19. HTML-Fixer HTML-Tidy HTML aggregation adapter HTML css2xslfo (Java) XSL-FO xer manipulator Template/ XINC (java) XFC (Java) CSS chooser Template Document renderer (PDF, RTF, ODT, DOCX) SmartPrintNG zopyx.convert zopyx.com - SmartPrintNG
  • 20. Content-type specific configuration ZCML: <smartprintng:resourceDirectory interfaces=quot;Products.ATContentTypes.interface.interfaces.IATDocumentquot; directory=quot;documentquot; /> Filesystem: > ls -la document -rw------- 1 ajung users 540 Sep 5 18:53 Big.css -rw------- 1 ajung users 515 Sep 5 18:52 StandardStylesheet.css -rw------- 1 ajung users 820 Sep 5 18:50 StandardTemplate.pt -rw------- 1 ajung users 617 Sep 5 17:34 default.fo_css zopyx.com - SmartPrintNG
  • 21. SmartPrintNG - more features configure header & footer regions within HTML support for counters (e.g. page counters) conditional output for left and right pages multi-column support zopyx.com - SmartPrintNG
  • 22. zopyx.convert encapsulates the complete XSL-FO conversion logic wraps css2xslfo, XINC and XFC inside a Python Package eats HTML spits out PDF, RTF, ODT, DOCX zopyx.com - SmartPrintNG
  • 23. Image support supports images inside Plone and external images converted internally to PNG open issues: images resolution selection fitting images into a fixed layout zopyx.com - SmartPrintNG
  • 24. SmartPrintNG Licensing Free for non-commercial use educational institutions NGOs charity organiziations commercial license in preparation for commercial usage zopyx.com - SmartPrintNG