CSS Paged Media - A review of tools and techniques

Andreas Jung
Andreas JungPublishing Freelancer, XML, Python, Plone, PDF, CMS, Content-Management at print-css.rocks
Publishing with CSS Paged Media

A review of existing tools and techniques
Andreas Jung @MacYET
ZOPYX • www.zopyx.com
XML Prague 2015
www.produce-and-publish.com Professional XML Publishing (C) 2015 ZOPYX
Speaker
‣ 20 years in electronic publishing
‣ Saarbrücker Zeitung, Haufe-Lexware
‣ Freelancer since 2004
‣ Python, Zope, Plone development
‣ content-management and large web apps
‣ "Produce & Publish" publishing platform
‣ using w/ CSS Paged Media in production since 2005
(csstoxslfo + FOP)
‣ "XML is data, not a religion" 😊
CSS Paged Media - A review of tools and techniques
www.produce-and-publish.com Professional XML Publishing (C) 2015 ZOPYX
The case against XSL-FO
‣ XSL-FO Working Group has disbanded
‣ "We have closed the Working Group because not enough people
were taking part." 

Liam R. E. Quin (W3C XML Activity Lead) - November 2013
‣ Too complicated, too verbose
‣ Lack of experienced XSL-FO developers
‣ Publishers are on the move away from XSL-FO
‣ Vendors are on the move towards CSS support
‣ Customers are checking for alternatives
‣ XSL-FO is going to die (slowly)
www.produce-and-publish.com Professional XML Publishing (C) 2015 ZOPYX
What is CSS Paged Media?
‣ CSS Paged Media Module Level 3
‣ W3C Working Draft 14 March 2013 (1st version in 2006)
Converter
www.produce-and-publish.com Professional XML Publishing (C) 2015 ZOPYX
Why HTML and not XML???
‣ PDFreactor and PrinceXML work natively on HTML
‣ XML conversion supported through display property
mytable {
display: table;
}
mycell {
display: table-cell;
}
‣ XML can be converted to HTML (easily, XSLT)
‣ Javascript processing works only on HTML DOM
www.produce-and-publish.com Professional XML Publishing (C) 2015 ZOPYX
Supported publication types
Traditional automatic
typesetting
✓ one/multi-col layouts
✓ images
✓ footnotes
✓ hyphenation
✓ headers and footers
✓ footnotes
✓ cross-references
www.produce-and-publish.com Professional XML Publishing (C) 2015 ZOPYX
Supported publication types
̈ ̈
̈
̈
·
̈
Layout-oriented publications
✓ absolute positioning of boxes
✓ web-to-print applications
✓ brochures
✓ flyers
✓ catalogs
www.produce-and-publish.com Professional XML Publishing (C) 2015 ZOPYX
Tools
‣ CSS Paged Media Tools with a XSL-FO history:
‣ cloudformatter.com (RenderX/XEP under the hood)
‣ Native CSS Paged Media Tools:
‣ Pisa, Weasyprint (free, Python)
‣ WKHTMLTOPDF (free, open-source)
‣ PrinceXML (proprietary, 3800 USD)
‣ PDFreactor (proprietary, 2250 €)
‣ Antennahouse 6.2 CSS (prop, 5000 USD)
better
www.produce-and-publish.com Professional XML Publishing (C) 2015 ZOPYX
@page rule
@page {
size: a4;
margin: 1cm;
}
@page {
size: 20cm 10cm;
margin: 1cm;
}
@page :left {
margin-left: 2cm
}
@page :right {
margin-right: 2cm
}
div.special {
page: special;
}
@page special {
color: red
}
www.produce-and-publish.com Professional XML Publishing (C) 2015 ZOPYX
Page regions
(www.pdfreactor.com)
@page :left {
@bottom-left {
content: counter(page);
}
}
@page :right {
@bottom-right {
content: counter(page);
}
}
www.produce-and-publish.com Professional XML Publishing (C) 2015 ZOPYX
Multi column layouts
div {
column-count: 3;
column-width: 5cm;
}
(src: PDFreactor documentation)
www.produce-and-publish.com Professional XML Publishing (C) 2015 ZOPYX
Images
‣ Raster formats: PNG, GIF, JPG, TIFF, BMP
‣ Vector formats: SVG
‣ Color spaces: RGB(A), CMYK (PDFreactor, AH)
‣ Positioning: relative or absolute
‣ Size: CSS width and height properties
‣ CSS 3 transformations applicable
www.produce-and-publish.com Professional XML Publishing (C) 2015 ZOPYX
Images
www.produce-and-publish.com Professional XML Publishing (C) 2015 ZOPYX
Images
www.produce-and-publish.com Professional XML Publishing (C) 2015 ZOPYX
Problems with images
‣ Floating capabilities (PrinceXML has some options)
‣ Correct sizing and auto-placing of images
‣ Auto-adjustment of image sizes using CSS 

(min-width, max-width, min-height, max-height)
‣ Some relief: rescaling the image through Javascript
based on width/height of the outer container
www.produce-and-publish.com Professional XML Publishing (C) 2015 ZOPYX
Tables
‣ Standard HTML table model with table head, body, foot
‣ Tables can span multiple pages
‣ Table head repeating on successive pages
‣ Extra-wide tables:
table.wide {
page: widetable;
}
@page widetable {
size: a4 landscape;
}
table.wide {
transform: rotate(90deg);
}
www.produce-and-publish.com Professional XML Publishing (C) 2015 ZOPYX
Tables
19
Bei relevanter Niereninsuffizienz muss eine individuelle Risikoabschätzung erfol-
gen und ggf. eine Dosisreduktion des Bisphosphonates durchgeführt werden.
Aktuelle Daten der MRC-Studiengruppe, welche einen Überlebensvorteil für Pati-
enten unter einer Bisphosphonattherapie mit Zoledronat bis zum Krankheitspro-
gress zeigen, haben die Diskussion über die Dauer einer Bisphosphonattherapie
verändert. So weichen einige Empfehlungen jetzt wieder von dem bisherigen
Konsensus einer zweijährigen Bisphosphonatbehandlung ab und empfehlen eine
langfristige Therapie mit Zoledronat bei Patienten, die keine CR erreichen.
Ein Nutzen für den Einsatz des Anti-RANKL Antikörpers Denosumab ist bei Patien-
ten mit Multiplem Myelom nicht belegt.
7. Verlaufskontrolle
2006 wurden durch die International Myeloma Working Group (IMWG) internatio-
nal akzeptierte Kriterien vereinbart, um die Vergleichbarkeit von Studienergebnis-
sen zu ermöglichen [54] . Wichtigste Änderung in Bezug auf die bis dahin im
europäischen Raum benutzten Ansprechkriterien der EBMT ist die Implementie-
rung der Bestimmung freier Leichtketten im Serum mittels FLC Assay, welche
insbesondere die Verlaufskontrolle vieler oligo-sekretorischer und nicht-sekretori-
scher Myelomformen ermöglicht. Weiterhin wurde die near complete response
(nCR) in die very good partial response (VGPR) integriert und die stringent
complete response (sCR) als vorerst höherwertige Remissionsqualität eingeführt.
1 FLC (Free Light Chain) – Quotient: Quotient aus beteiligter und nicht-beteiligter Leichtkette;
2 sCR (stringent Complete Remission) – stringente komplette Remission; 2 CR (Complete Remis-
sion) – komplette Remission; 4 VGPR (Very Good Partial Remission) – sehr gute partielle Remis-
sion; 5 PR (Partial Remission) – partielle Remission; 6 SD (Stable Disease) – stabile Erkrankung;
7 PD (Progressive Disease) – progrediente Erkrankung; 8 weitere Kriterien sind: Neuauftreten oder
Progress ossärer Manifestationen, MM-bedingte Hyperkalzämie;
Kriterien
Status
M Protein
Elektropho-
rese
M Protein
Immunfixa-
tion
Freie Leichtket-
ten (FLC-Quoti-
ent1)
Weichteil-
Manifesta-
tion
Plasmazellen im
Knochenmark
sCR2
(alle Kriterien
sind erfüllt)
nicht nach-
weisbar in
Serum und
Urin
normalisiert nicht nach-
weisbar
≤ 5 %;
keine klonalen Plas-
mazellen nachweis-
bar (Immunhistoche-
mie)
CR3
(alle Krite-
rien sind
erfüllt)
nicht nach-
weisbar in
Serum und
Urin
nicht nach-
weisbar
< 5 %
VGPR4
(alle Kriterien
sind erfüllt)
≥ 90%
Reduktion im
Serum und
< 100 mg/
24h im Urin
oder
nachweis-
bar
20
Kriterien
Status
M Protein
Elektropho-
rese
M Protein
Immunfixa-
tion
Freie Leichtket-
ten (FLC-Quoti-
ent1)
Weichteil-
Manifesta-
tion
Plasmazellen im
Knochenmark
kein M
Protein in
Serum und
Urin nach-
weisbar
PR5 ≥ 50%
Reduktion im
Serum und
≥ 90%
Reduktion im
Urin oder <
200 mg/24h
im Urin
> 50 % Reduk-
tion des Quoti-
enten, falls M-
Protein nicht
bestimmbar
> 50 %
Reduktion
(obligates
Kriterium)
> 50 % Reduktion
der Infiltration, falls
Anteil vor Therapie >
30% und falls M-
Protein und FLC
Quotient nicht
bestimmbar
SD6 weder Kriterien von sCR, CR, VGPR, PR noch PD erfüllt
PD7
(mindestens
ein Kriterium
ist erfüllt,
oder neue
Symptome8)
≥ 25%
Anstieg im
Serum und
absolut ≥ 0,5
g/dl und/oder
≥ 25%
Reduktion im
Urin oder
absolut ≥
200 mg/24h
> 25 % Anstieg
des Quotienten
Neuauftre-
ten oder
Progress
> 25 % Anstieg und
absolut um > 10%
Weitere Definitionen betreffen:
Refraktäres Myelom:
• Fortschreiten der Erkrankung unter Therapie oder
• innerhalb von 60 Tagen nach Therapie.
Minor response (MR) bei rezidivierten, refraktären Myelomerkrankungen
• Reduktion des Serum M-Gradienten > 25%, aber < 49% UND
• Reduktion des Urin M-Gradienten um 50-89% (>200mg/24h)
• Größenreduktion von Weichteilmanifestationen um 24-49%
• keine Zunahme in Anzahl und Größen von Osteolysen.
Übergang in ein aktives Myelom bei bestehendem Smouldering myeloma
• Kriterien der PD nach IMWG oder
• positive CRAB-Kriterien oder
• Entwicklung extramedullärer Weichteilmanifestationen.
www.produce-and-publish.com Professional XML Publishing (C) 2015 ZOPYX
Tables
7.4 Anti-VEGF Therapie (Bevacizumab)
Erstautor
/ Jahr
Studie Patienten Kontrolle
Neue
Therapie
N1 RR2 PFÜ4
(HR3)
ÜLZ5 Anmerkung DOI, PMID6
Miller,
2007
Gray,
2009
E2100 Erstlinie Pac7 Pac +
Bev
722
21,26
vs 36,9
p <
0,001
5,9 vs
11,8
0,6010
p <
0,001
n.s.9
PMID: 18160686
DOI: 10.1200/
JCO.2008.21.6630
Miles,
2010
AVADO Erstlinie Doc
Doc +
Bev11 488
46,4 vs
64,1
p =
0,0003
8,1 vs
10,0
0,67
p =
0,0002
n.s.
DOI: 10.1200/
JCO.2008.21.6457
Valachis,
2010
Erstlinie
+ spätere
Chemo
Chemo-
+ Bev
3163
1,26
p <
0,00001
0,70
p <
0,0001
n.s. Metaanalyse
DOI:10.1007/
s10549-009-0727-0
60
www.produce-and-publish.com Professional XML Publishing (C) 2015 ZOPYX
Counters
<h1>title</h1>
<h2>subtitle</h1>
<h2>another subtitle</h2>
<h1>title 2</h1>
h1 {
counter-increment: c1;
counter-reset: c2;
}
h2 {
counter-increment: c2;
}
h1:before {
content: counter(c1) "."
}
h2:before {
content: counter(c1) "."
counter(c2);
}
1. title
1.1 subtitle
1.2 another subtitle
2. title 2
www.produce-and-publish.com Professional XML Publishing (C) 2015 ZOPYX
Footnotes
.fn {
float: footnote
}
<p>
Footnotes <span class="fn">A footnote is a note placed at
the bottom of a page of a book or manuscript that comments on or
cites a reference for a designated part of the text.</span>
…
</p>
www.produce-and-publish.com Professional XML Publishing (C) 2015 ZOPYX
Footnotes
1 A footnote is a note placed at the bottom of a page of a
book or manuscript that comments on or cites a
reference for a designated part of the text.
2 Often, the most interesting information is found in the
footnotes.
Footnotes1 are essential in printed documents and
Prince knows how to generate them. Most readers will
read the footnotes before they read the text from where
the footnotes are anchored2.
Limitation: no footnotes in multi-column layouts (Antennahouse?)
www.produce-and-publish.com Professional XML Publishing (C) 2015 ZOPYX
Cross references
<a class="pageref" href="#figure">see the figure</a>
a.pageref::after {
content: " on page " target-counter(attr(href), page);
}
"…see the figure on page 22"
<div name="figure">This is a figure</div>
<a class="pageref" href="#figure">see the figure</a>
a.pageref: {
content: "See '" target-content(attr(href)) "'";
}
"See 'this is a figure' "
www.produce-and-publish.com Professional XML Publishing (C) 2015 ZOPYX
Pagination & Page breaks
<h1>title</h1>
<p>…</p>
h1 {
page-break-before: always;
}
<h1>title</h1>
<div class=„sub“>…</p>
<div class=„content“>…</div>
h1 { page-break-before: always;}
div.sub { page-break-after: always; }
<ul>
…
</ul>
ul {
page-break-inside: avoid;
}
www.produce-and-publish.com Professional XML Publishing (C) 2015 ZOPYX
Hyphenation, Orphans, Widows
<p>
….long paragraph…
</p>
p {
orphans: 4;
widows: 3;
}
<body lang=„de“>
<div lang=„en“>
EN Text
</div>
<p>DE text</ep>
</body>
body {
hyphens: auto;
hyphenate-before: 4;
hyphenate-after: 4;
}
www.produce-and-publish.com Professional XML Publishing (C) 2015 ZOPYX
The Power of Javascript
‣ HTML represented internally as DOM 

(Document Object Model)
‣ Javascript code interacts with the DOM as with browsers
‣ Use cases:
‣ modification of content (table of content generation)
‣ index generation
‣ adaptive image scaling
‣ PrinceXML/PDFreactor support standard 

Javascript modules like jQuery
‣ possibly a lot of potential (documentation problem)
www.produce-and-publish.com Professional XML Publishing (C) 2015 ZOPYX
CSS Page Floats
‣ Float = content that can be moved ouf of the current text
flow into a different place
‣ Different implementations
‣ AH: http://www.antennahouse.com/CSSInfo/float-
extension.html
‣ PrinceXML: http://www.princexml.com/doc/properties/float/
‣ W3C: http://dev.w3.org/csswg/css-page-floats/
www.produce-and-publish.com Professional XML Publishing (C) 2015 ZOPYX
CSS Page Floats (W3C Draft)
www.produce-and-publish.com Professional XML Publishing (C) 2015 ZOPYX
CSS Page Floats (W3C Draft)
www.produce-and-publish.com Professional XML Publishing (C) 2015 ZOPYX
Summary of tools
PrinceXML 9 PDFreactor 7 AH 6.2/CSS Extensions
Price 3800 USD 2250 € 5000 USD
Licence
proprietary

(4 CPU)
proprietary

(4 CPU)
proprietary

(1 CPU)
Documentation
poor/inconsistent/
incomplete
good average/incomplete
Support good good limited/no experience
Javascript yes/limited yes/good support no
Tagged PDF no yes yes
PDF Metadata yes yes yes
Signed PDF no yes yes
Encrypted PDF yes yes yes
www.produce-and-publish.com Professional XML Publishing (C) 2015 ZOPYX
Limitations of CSS Paged Media
‣ Automatic typesetting means automatic
‣ Limited influence on the typesetting process
‣ Manual interaction through specific CSS hints/rules
‣ (sometimes time consuming) iterative interactive process
(except using PDFreactor/Nimbudocs Editor)
‣ Typical usecases
‣ Technical documentation, manuals
‣ Catalogs
‣ Brochures
‣ (Mass) Publications with similar layouts
Questions?
‣ www.andreas-jung.com
‣ www.zopyx.com
‣ www.produce-and-publish.com
‣ www.xml-director.info
1 of 32

Recommended

Oracle APEX Nitro by
Oracle APEX NitroOracle APEX Nitro
Oracle APEX NitroMarko Gorički
1.6K views58 slides
confirm & alert by
confirm & alertconfirm & alert
confirm & alertOliver Lemm
242 views26 slides
Shaping Up Theme Roller Beyond Universal Theme by
Shaping Up Theme Roller Beyond Universal ThemeShaping Up Theme Roller Beyond Universal Theme
Shaping Up Theme Roller Beyond Universal ThemeInsum Solutions
615 views30 slides
Tweaking the interactive grid by
Tweaking the interactive gridTweaking the interactive grid
Tweaking the interactive gridRoel Hartman
1.4K views60 slides
APEX richtig installieren und konfigurieren by
APEX richtig installieren und konfigurierenAPEX richtig installieren und konfigurieren
APEX richtig installieren und konfigurierenOliver Lemm
164 views48 slides
Advanced JS Deobfuscation by
Advanced JS DeobfuscationAdvanced JS Deobfuscation
Advanced JS DeobfuscationMinded Security
30.9K views18 slides

More Related Content

What's hot

Validate Your Validations: Both Sides Now by
Validate Your Validations: Both Sides NowValidate Your Validations: Both Sides Now
Validate Your Validations: Both Sides NowKaren Cannell
245 views71 slides
Find Anything In Your APEX App - Fuzzy Search with Oracle Text by
Find Anything In Your APEX App - Fuzzy Search with Oracle TextFind Anything In Your APEX App - Fuzzy Search with Oracle Text
Find Anything In Your APEX App - Fuzzy Search with Oracle TextCarsten Czarski
1.7K views25 slides
Building Cloud Native Applications with Oracle Autonomous Database. by
Building Cloud Native Applications with Oracle Autonomous Database.Building Cloud Native Applications with Oracle Autonomous Database.
Building Cloud Native Applications with Oracle Autonomous Database.Oracle Developers
222 views20 slides
51811680 open layers by
51811680 open layers51811680 open layers
51811680 open layersGien Rockmantic
2K views36 slides
My Top 5 APEX JavaScript API's by
My Top 5 APEX JavaScript API'sMy Top 5 APEX JavaScript API's
My Top 5 APEX JavaScript API'sRoel Hartman
7.3K views49 slides
2.apache spark 실습 by
2.apache spark 실습2.apache spark 실습
2.apache spark 실습동현 강
9.5K views46 slides

What's hot(20)

Validate Your Validations: Both Sides Now by Karen Cannell
Validate Your Validations: Both Sides NowValidate Your Validations: Both Sides Now
Validate Your Validations: Both Sides Now
Karen Cannell245 views
Find Anything In Your APEX App - Fuzzy Search with Oracle Text by Carsten Czarski
Find Anything In Your APEX App - Fuzzy Search with Oracle TextFind Anything In Your APEX App - Fuzzy Search with Oracle Text
Find Anything In Your APEX App - Fuzzy Search with Oracle Text
Carsten Czarski1.7K views
Building Cloud Native Applications with Oracle Autonomous Database. by Oracle Developers
Building Cloud Native Applications with Oracle Autonomous Database.Building Cloud Native Applications with Oracle Autonomous Database.
Building Cloud Native Applications with Oracle Autonomous Database.
Oracle Developers222 views
My Top 5 APEX JavaScript API's by Roel Hartman
My Top 5 APEX JavaScript API'sMy Top 5 APEX JavaScript API's
My Top 5 APEX JavaScript API's
Roel Hartman7.3K views
2.apache spark 실습 by 동현 강
2.apache spark 실습2.apache spark 실습
2.apache spark 실습
동현 강9.5K views
Eclipse RDF4J - Working with RDF in Java by Jeen Broekstra
Eclipse RDF4J - Working with RDF in JavaEclipse RDF4J - Working with RDF in Java
Eclipse RDF4J - Working with RDF in Java
Jeen Broekstra426 views
How to use source control with apex? by Oliver Lemm
How to use source control with apex?How to use source control with apex?
How to use source control with apex?
Oliver Lemm5.8K views
Oracle GoldenGate 18c - REST API Examples by Bobby Curtis
Oracle GoldenGate 18c - REST API ExamplesOracle GoldenGate 18c - REST API Examples
Oracle GoldenGate 18c - REST API Examples
Bobby Curtis4.1K views
Deep Dive into Oracle ADF Transactions by Eugene Fedorenko
Deep Dive into Oracle ADF TransactionsDeep Dive into Oracle ADF Transactions
Deep Dive into Oracle ADF Transactions
Eugene Fedorenko2.2K views
Integration patterns in AEM 6 by Yuval Ararat
Integration patterns in AEM 6Integration patterns in AEM 6
Integration patterns in AEM 6
Yuval Ararat4.3K views
CUST-10 Customizing the Upload File(s) dialog in Alfresco Share by Alfresco Software
CUST-10 Customizing the Upload File(s) dialog in Alfresco ShareCUST-10 Customizing the Upload File(s) dialog in Alfresco Share
CUST-10 Customizing the Upload File(s) dialog in Alfresco Share
Alfresco Software6.1K views
Oracle REST Data Services: Options for your Web Services by Jeff Smith
Oracle REST Data Services: Options for your Web ServicesOracle REST Data Services: Options for your Web Services
Oracle REST Data Services: Options for your Web Services
Jeff Smith15.8K views
Take a load off! Load testing your Oracle APEX or JDeveloper web applications by Sage Computing Services
Take a load off! Load testing your Oracle APEX or JDeveloper web applicationsTake a load off! Load testing your Oracle APEX or JDeveloper web applications
Take a load off! Load testing your Oracle APEX or JDeveloper web applications
Build Your Own CMS with Apache Sling by Bob Paulin
Build Your Own CMS with Apache SlingBuild Your Own CMS with Apache Sling
Build Your Own CMS with Apache Sling
Bob Paulin15.8K views
Grails Connecting to MySQL by ashishkirpan
Grails Connecting to MySQLGrails Connecting to MySQL
Grails Connecting to MySQL
ashishkirpan7.8K views

More from Andreas Jung

State of PrintCSS - MarkupUK 2023.pdf by
State of PrintCSS - MarkupUK 2023.pdfState of PrintCSS - MarkupUK 2023.pdf
State of PrintCSS - MarkupUK 2023.pdfAndreas Jung
483 views31 slides
Typesense Plone Integration Plone Conference 2022 Namur by
Typesense Plone Integration Plone Conference 2022 NamurTypesense Plone Integration Plone Conference 2022 Namur
Typesense Plone Integration Plone Conference 2022 NamurAndreas Jung
22 views11 slides
Onkopedia - Plone Tagung 2020 Dresden by
Onkopedia - Plone Tagung 2020 DresdenOnkopedia - Plone Tagung 2020 Dresden
Onkopedia - Plone Tagung 2020 DresdenAndreas Jung
416 views36 slides
PrintCSS W3C workshop at XMLPrague 2020 by
PrintCSS W3C workshop at XMLPrague 2020PrintCSS W3C workshop at XMLPrague 2020
PrintCSS W3C workshop at XMLPrague 2020Andreas Jung
303 views14 slides
PrintCSS workshop XMLPrague 2020 by
PrintCSS workshop XMLPrague 2020PrintCSS workshop XMLPrague 2020
PrintCSS workshop XMLPrague 2020Andreas Jung
573 views48 slides
Plone 5.2 migration at University Ghent, Belgium by
Plone 5.2 migration at University Ghent, BelgiumPlone 5.2 migration at University Ghent, Belgium
Plone 5.2 migration at University Ghent, BelgiumAndreas Jung
759 views29 slides

More from Andreas Jung(20)

State of PrintCSS - MarkupUK 2023.pdf by Andreas Jung
State of PrintCSS - MarkupUK 2023.pdfState of PrintCSS - MarkupUK 2023.pdf
State of PrintCSS - MarkupUK 2023.pdf
Andreas Jung483 views
Typesense Plone Integration Plone Conference 2022 Namur by Andreas Jung
Typesense Plone Integration Plone Conference 2022 NamurTypesense Plone Integration Plone Conference 2022 Namur
Typesense Plone Integration Plone Conference 2022 Namur
Andreas Jung22 views
Onkopedia - Plone Tagung 2020 Dresden by Andreas Jung
Onkopedia - Plone Tagung 2020 DresdenOnkopedia - Plone Tagung 2020 Dresden
Onkopedia - Plone Tagung 2020 Dresden
Andreas Jung416 views
PrintCSS W3C workshop at XMLPrague 2020 by Andreas Jung
PrintCSS W3C workshop at XMLPrague 2020PrintCSS W3C workshop at XMLPrague 2020
PrintCSS W3C workshop at XMLPrague 2020
Andreas Jung303 views
PrintCSS workshop XMLPrague 2020 by Andreas Jung
PrintCSS workshop XMLPrague 2020PrintCSS workshop XMLPrague 2020
PrintCSS workshop XMLPrague 2020
Andreas Jung573 views
Plone 5.2 migration at University Ghent, Belgium by Andreas Jung
Plone 5.2 migration at University Ghent, BelgiumPlone 5.2 migration at University Ghent, Belgium
Plone 5.2 migration at University Ghent, Belgium
Andreas Jung759 views
Back to the future - Plone 5.2 und Python 3 Migration am Beispiel Onkopedia by Andreas Jung
Back to the future - Plone 5.2 und Python 3 Migration am Beispiel OnkopediaBack to the future - Plone 5.2 und Python 3 Migration am Beispiel Onkopedia
Back to the future - Plone 5.2 und Python 3 Migration am Beispiel Onkopedia
Andreas Jung999 views
Plone migrations using plone.restapi by Andreas Jung
Plone migrations using plone.restapiPlone migrations using plone.restapi
Plone migrations using plone.restapi
Andreas Jung642 views
Plone Migrationen mit Plone REST API by Andreas Jung
Plone Migrationen mit Plone REST APIPlone Migrationen mit Plone REST API
Plone Migrationen mit Plone REST API
Andreas Jung603 views
Plone im Einsatz bei der Universität des Saarländes als Shop-System und Gefah... by Andreas Jung
Plone im Einsatz bei der Universität des Saarländes als Shop-System und Gefah...Plone im Einsatz bei der Universität des Saarländes als Shop-System und Gefah...
Plone im Einsatz bei der Universität des Saarländes als Shop-System und Gefah...
Andreas Jung579 views
Generierung von PDF aus XML/HTML mit PrintCSS by Andreas Jung
Generierung von PDF aus XML/HTML mit PrintCSSGenerierung von PDF aus XML/HTML mit PrintCSS
Generierung von PDF aus XML/HTML mit PrintCSS
Andreas Jung1.4K views
Creating Content Together - Plone Integration with SMASHDOCs by Andreas Jung
Creating Content Together - Plone Integration with SMASHDOCsCreating Content Together - Plone Integration with SMASHDOCs
Creating Content Together - Plone Integration with SMASHDOCs
Andreas Jung387 views
Creating Content Together - Plone Integration with SMASHDOCs by Andreas Jung
Creating Content Together - Plone Integration with SMASHDOCsCreating Content Together - Plone Integration with SMASHDOCs
Creating Content Together - Plone Integration with SMASHDOCs
Andreas Jung343 views
The Plone and The Blockchain by Andreas Jung
The Plone and The BlockchainThe Plone and The Blockchain
The Plone and The Blockchain
Andreas Jung727 views
Content Gemeinsam Erstellen: Integration Plone mit SMASHDOCs by Andreas Jung
Content Gemeinsam Erstellen: Integration Plone mit SMASHDOCsContent Gemeinsam Erstellen: Integration Plone mit SMASHDOCs
Content Gemeinsam Erstellen: Integration Plone mit SMASHDOCs
Andreas Jung562 views
PDF Generierung mit XML/HTML und CSS - was die Tools können und was nicht. by Andreas Jung
PDF Generierung mit XML/HTML und CSS - was die Tools können und was nicht.PDF Generierung mit XML/HTML und CSS - was die Tools können und was nicht.
PDF Generierung mit XML/HTML und CSS - was die Tools können und was nicht.
Andreas Jung22.8K views
Why we love ArangoDB. The hunt for the right NosQL Database by Andreas Jung
Why we love ArangoDB. The hunt for the right NosQL DatabaseWhy we love ArangoDB. The hunt for the right NosQL Database
Why we love ArangoDB. The hunt for the right NosQL Database
Andreas Jung6.4K views
XML Director - the technical foundation of onkopedia.com by Andreas Jung
XML Director - the technical foundation of onkopedia.comXML Director - the technical foundation of onkopedia.com
XML Director - the technical foundation of onkopedia.com
Andreas Jung1.5K views
Building bridges - Plone Conference 2015 Bucharest by Andreas Jung
Building bridges   - Plone Conference 2015 BucharestBuilding bridges   - Plone Conference 2015 Bucharest
Building bridges - Plone Conference 2015 Bucharest
Andreas Jung3.4K views

CSS Paged Media - A review of tools and techniques

  • 1. Publishing with CSS Paged Media
 A review of existing tools and techniques Andreas Jung @MacYET ZOPYX • www.zopyx.com XML Prague 2015
  • 2. www.produce-and-publish.com Professional XML Publishing (C) 2015 ZOPYX Speaker ‣ 20 years in electronic publishing ‣ Saarbrücker Zeitung, Haufe-Lexware ‣ Freelancer since 2004 ‣ Python, Zope, Plone development ‣ content-management and large web apps ‣ "Produce & Publish" publishing platform ‣ using w/ CSS Paged Media in production since 2005 (csstoxslfo + FOP) ‣ "XML is data, not a religion" 😊
  • 4. www.produce-and-publish.com Professional XML Publishing (C) 2015 ZOPYX The case against XSL-FO ‣ XSL-FO Working Group has disbanded ‣ "We have closed the Working Group because not enough people were taking part." 
 Liam R. E. Quin (W3C XML Activity Lead) - November 2013 ‣ Too complicated, too verbose ‣ Lack of experienced XSL-FO developers ‣ Publishers are on the move away from XSL-FO ‣ Vendors are on the move towards CSS support ‣ Customers are checking for alternatives ‣ XSL-FO is going to die (slowly)
  • 5. www.produce-and-publish.com Professional XML Publishing (C) 2015 ZOPYX What is CSS Paged Media? ‣ CSS Paged Media Module Level 3 ‣ W3C Working Draft 14 March 2013 (1st version in 2006) Converter
  • 6. www.produce-and-publish.com Professional XML Publishing (C) 2015 ZOPYX Why HTML and not XML??? ‣ PDFreactor and PrinceXML work natively on HTML ‣ XML conversion supported through display property mytable { display: table; } mycell { display: table-cell; } ‣ XML can be converted to HTML (easily, XSLT) ‣ Javascript processing works only on HTML DOM
  • 7. www.produce-and-publish.com Professional XML Publishing (C) 2015 ZOPYX Supported publication types Traditional automatic typesetting ✓ one/multi-col layouts ✓ images ✓ footnotes ✓ hyphenation ✓ headers and footers ✓ footnotes ✓ cross-references
  • 8. www.produce-and-publish.com Professional XML Publishing (C) 2015 ZOPYX Supported publication types ̈ ̈ ̈ ̈ · ̈ Layout-oriented publications ✓ absolute positioning of boxes ✓ web-to-print applications ✓ brochures ✓ flyers ✓ catalogs
  • 9. www.produce-and-publish.com Professional XML Publishing (C) 2015 ZOPYX Tools ‣ CSS Paged Media Tools with a XSL-FO history: ‣ cloudformatter.com (RenderX/XEP under the hood) ‣ Native CSS Paged Media Tools: ‣ Pisa, Weasyprint (free, Python) ‣ WKHTMLTOPDF (free, open-source) ‣ PrinceXML (proprietary, 3800 USD) ‣ PDFreactor (proprietary, 2250 €) ‣ Antennahouse 6.2 CSS (prop, 5000 USD) better
  • 10. www.produce-and-publish.com Professional XML Publishing (C) 2015 ZOPYX @page rule @page { size: a4; margin: 1cm; } @page { size: 20cm 10cm; margin: 1cm; } @page :left { margin-left: 2cm } @page :right { margin-right: 2cm } div.special { page: special; } @page special { color: red }
  • 11. www.produce-and-publish.com Professional XML Publishing (C) 2015 ZOPYX Page regions (www.pdfreactor.com) @page :left { @bottom-left { content: counter(page); } } @page :right { @bottom-right { content: counter(page); } }
  • 12. www.produce-and-publish.com Professional XML Publishing (C) 2015 ZOPYX Multi column layouts div { column-count: 3; column-width: 5cm; } (src: PDFreactor documentation)
  • 13. www.produce-and-publish.com Professional XML Publishing (C) 2015 ZOPYX Images ‣ Raster formats: PNG, GIF, JPG, TIFF, BMP ‣ Vector formats: SVG ‣ Color spaces: RGB(A), CMYK (PDFreactor, AH) ‣ Positioning: relative or absolute ‣ Size: CSS width and height properties ‣ CSS 3 transformations applicable
  • 14. www.produce-and-publish.com Professional XML Publishing (C) 2015 ZOPYX Images
  • 15. www.produce-and-publish.com Professional XML Publishing (C) 2015 ZOPYX Images
  • 16. www.produce-and-publish.com Professional XML Publishing (C) 2015 ZOPYX Problems with images ‣ Floating capabilities (PrinceXML has some options) ‣ Correct sizing and auto-placing of images ‣ Auto-adjustment of image sizes using CSS 
 (min-width, max-width, min-height, max-height) ‣ Some relief: rescaling the image through Javascript based on width/height of the outer container
  • 17. www.produce-and-publish.com Professional XML Publishing (C) 2015 ZOPYX Tables ‣ Standard HTML table model with table head, body, foot ‣ Tables can span multiple pages ‣ Table head repeating on successive pages ‣ Extra-wide tables: table.wide { page: widetable; } @page widetable { size: a4 landscape; } table.wide { transform: rotate(90deg); }
  • 18. www.produce-and-publish.com Professional XML Publishing (C) 2015 ZOPYX Tables 19 Bei relevanter Niereninsuffizienz muss eine individuelle Risikoabschätzung erfol- gen und ggf. eine Dosisreduktion des Bisphosphonates durchgeführt werden. Aktuelle Daten der MRC-Studiengruppe, welche einen Überlebensvorteil für Pati- enten unter einer Bisphosphonattherapie mit Zoledronat bis zum Krankheitspro- gress zeigen, haben die Diskussion über die Dauer einer Bisphosphonattherapie verändert. So weichen einige Empfehlungen jetzt wieder von dem bisherigen Konsensus einer zweijährigen Bisphosphonatbehandlung ab und empfehlen eine langfristige Therapie mit Zoledronat bei Patienten, die keine CR erreichen. Ein Nutzen für den Einsatz des Anti-RANKL Antikörpers Denosumab ist bei Patien- ten mit Multiplem Myelom nicht belegt. 7. Verlaufskontrolle 2006 wurden durch die International Myeloma Working Group (IMWG) internatio- nal akzeptierte Kriterien vereinbart, um die Vergleichbarkeit von Studienergebnis- sen zu ermöglichen [54] . Wichtigste Änderung in Bezug auf die bis dahin im europäischen Raum benutzten Ansprechkriterien der EBMT ist die Implementie- rung der Bestimmung freier Leichtketten im Serum mittels FLC Assay, welche insbesondere die Verlaufskontrolle vieler oligo-sekretorischer und nicht-sekretori- scher Myelomformen ermöglicht. Weiterhin wurde die near complete response (nCR) in die very good partial response (VGPR) integriert und die stringent complete response (sCR) als vorerst höherwertige Remissionsqualität eingeführt. 1 FLC (Free Light Chain) – Quotient: Quotient aus beteiligter und nicht-beteiligter Leichtkette; 2 sCR (stringent Complete Remission) – stringente komplette Remission; 2 CR (Complete Remis- sion) – komplette Remission; 4 VGPR (Very Good Partial Remission) – sehr gute partielle Remis- sion; 5 PR (Partial Remission) – partielle Remission; 6 SD (Stable Disease) – stabile Erkrankung; 7 PD (Progressive Disease) – progrediente Erkrankung; 8 weitere Kriterien sind: Neuauftreten oder Progress ossärer Manifestationen, MM-bedingte Hyperkalzämie; Kriterien Status M Protein Elektropho- rese M Protein Immunfixa- tion Freie Leichtket- ten (FLC-Quoti- ent1) Weichteil- Manifesta- tion Plasmazellen im Knochenmark sCR2 (alle Kriterien sind erfüllt) nicht nach- weisbar in Serum und Urin normalisiert nicht nach- weisbar ≤ 5 %; keine klonalen Plas- mazellen nachweis- bar (Immunhistoche- mie) CR3 (alle Krite- rien sind erfüllt) nicht nach- weisbar in Serum und Urin nicht nach- weisbar < 5 % VGPR4 (alle Kriterien sind erfüllt) ≥ 90% Reduktion im Serum und < 100 mg/ 24h im Urin oder nachweis- bar 20 Kriterien Status M Protein Elektropho- rese M Protein Immunfixa- tion Freie Leichtket- ten (FLC-Quoti- ent1) Weichteil- Manifesta- tion Plasmazellen im Knochenmark kein M Protein in Serum und Urin nach- weisbar PR5 ≥ 50% Reduktion im Serum und ≥ 90% Reduktion im Urin oder < 200 mg/24h im Urin > 50 % Reduk- tion des Quoti- enten, falls M- Protein nicht bestimmbar > 50 % Reduktion (obligates Kriterium) > 50 % Reduktion der Infiltration, falls Anteil vor Therapie > 30% und falls M- Protein und FLC Quotient nicht bestimmbar SD6 weder Kriterien von sCR, CR, VGPR, PR noch PD erfüllt PD7 (mindestens ein Kriterium ist erfüllt, oder neue Symptome8) ≥ 25% Anstieg im Serum und absolut ≥ 0,5 g/dl und/oder ≥ 25% Reduktion im Urin oder absolut ≥ 200 mg/24h > 25 % Anstieg des Quotienten Neuauftre- ten oder Progress > 25 % Anstieg und absolut um > 10% Weitere Definitionen betreffen: Refraktäres Myelom: • Fortschreiten der Erkrankung unter Therapie oder • innerhalb von 60 Tagen nach Therapie. Minor response (MR) bei rezidivierten, refraktären Myelomerkrankungen • Reduktion des Serum M-Gradienten > 25%, aber < 49% UND • Reduktion des Urin M-Gradienten um 50-89% (>200mg/24h) • Größenreduktion von Weichteilmanifestationen um 24-49% • keine Zunahme in Anzahl und Größen von Osteolysen. Übergang in ein aktives Myelom bei bestehendem Smouldering myeloma • Kriterien der PD nach IMWG oder • positive CRAB-Kriterien oder • Entwicklung extramedullärer Weichteilmanifestationen.
  • 19. www.produce-and-publish.com Professional XML Publishing (C) 2015 ZOPYX Tables 7.4 Anti-VEGF Therapie (Bevacizumab) Erstautor / Jahr Studie Patienten Kontrolle Neue Therapie N1 RR2 PFÜ4 (HR3) ÜLZ5 Anmerkung DOI, PMID6 Miller, 2007 Gray, 2009 E2100 Erstlinie Pac7 Pac + Bev 722 21,26 vs 36,9 p < 0,001 5,9 vs 11,8 0,6010 p < 0,001 n.s.9 PMID: 18160686 DOI: 10.1200/ JCO.2008.21.6630 Miles, 2010 AVADO Erstlinie Doc Doc + Bev11 488 46,4 vs 64,1 p = 0,0003 8,1 vs 10,0 0,67 p = 0,0002 n.s. DOI: 10.1200/ JCO.2008.21.6457 Valachis, 2010 Erstlinie + spätere Chemo Chemo- + Bev 3163 1,26 p < 0,00001 0,70 p < 0,0001 n.s. Metaanalyse DOI:10.1007/ s10549-009-0727-0 60
  • 20. www.produce-and-publish.com Professional XML Publishing (C) 2015 ZOPYX Counters <h1>title</h1> <h2>subtitle</h1> <h2>another subtitle</h2> <h1>title 2</h1> h1 { counter-increment: c1; counter-reset: c2; } h2 { counter-increment: c2; } h1:before { content: counter(c1) "." } h2:before { content: counter(c1) "." counter(c2); } 1. title 1.1 subtitle 1.2 another subtitle 2. title 2
  • 21. www.produce-and-publish.com Professional XML Publishing (C) 2015 ZOPYX Footnotes .fn { float: footnote } <p> Footnotes <span class="fn">A footnote is a note placed at the bottom of a page of a book or manuscript that comments on or cites a reference for a designated part of the text.</span> … </p>
  • 22. www.produce-and-publish.com Professional XML Publishing (C) 2015 ZOPYX Footnotes 1 A footnote is a note placed at the bottom of a page of a book or manuscript that comments on or cites a reference for a designated part of the text. 2 Often, the most interesting information is found in the footnotes. Footnotes1 are essential in printed documents and Prince knows how to generate them. Most readers will read the footnotes before they read the text from where the footnotes are anchored2. Limitation: no footnotes in multi-column layouts (Antennahouse?)
  • 23. www.produce-and-publish.com Professional XML Publishing (C) 2015 ZOPYX Cross references <a class="pageref" href="#figure">see the figure</a> a.pageref::after { content: " on page " target-counter(attr(href), page); } "…see the figure on page 22" <div name="figure">This is a figure</div> <a class="pageref" href="#figure">see the figure</a> a.pageref: { content: "See '" target-content(attr(href)) "'"; } "See 'this is a figure' "
  • 24. www.produce-and-publish.com Professional XML Publishing (C) 2015 ZOPYX Pagination & Page breaks <h1>title</h1> <p>…</p> h1 { page-break-before: always; } <h1>title</h1> <div class=„sub“>…</p> <div class=„content“>…</div> h1 { page-break-before: always;} div.sub { page-break-after: always; } <ul> … </ul> ul { page-break-inside: avoid; }
  • 25. www.produce-and-publish.com Professional XML Publishing (C) 2015 ZOPYX Hyphenation, Orphans, Widows <p> ….long paragraph… </p> p { orphans: 4; widows: 3; } <body lang=„de“> <div lang=„en“> EN Text </div> <p>DE text</ep> </body> body { hyphens: auto; hyphenate-before: 4; hyphenate-after: 4; }
  • 26. www.produce-and-publish.com Professional XML Publishing (C) 2015 ZOPYX The Power of Javascript ‣ HTML represented internally as DOM 
 (Document Object Model) ‣ Javascript code interacts with the DOM as with browsers ‣ Use cases: ‣ modification of content (table of content generation) ‣ index generation ‣ adaptive image scaling ‣ PrinceXML/PDFreactor support standard 
 Javascript modules like jQuery ‣ possibly a lot of potential (documentation problem)
  • 27. www.produce-and-publish.com Professional XML Publishing (C) 2015 ZOPYX CSS Page Floats ‣ Float = content that can be moved ouf of the current text flow into a different place ‣ Different implementations ‣ AH: http://www.antennahouse.com/CSSInfo/float- extension.html ‣ PrinceXML: http://www.princexml.com/doc/properties/float/ ‣ W3C: http://dev.w3.org/csswg/css-page-floats/
  • 28. www.produce-and-publish.com Professional XML Publishing (C) 2015 ZOPYX CSS Page Floats (W3C Draft)
  • 29. www.produce-and-publish.com Professional XML Publishing (C) 2015 ZOPYX CSS Page Floats (W3C Draft)
  • 30. www.produce-and-publish.com Professional XML Publishing (C) 2015 ZOPYX Summary of tools PrinceXML 9 PDFreactor 7 AH 6.2/CSS Extensions Price 3800 USD 2250 € 5000 USD Licence proprietary
 (4 CPU) proprietary
 (4 CPU) proprietary
 (1 CPU) Documentation poor/inconsistent/ incomplete good average/incomplete Support good good limited/no experience Javascript yes/limited yes/good support no Tagged PDF no yes yes PDF Metadata yes yes yes Signed PDF no yes yes Encrypted PDF yes yes yes
  • 31. www.produce-and-publish.com Professional XML Publishing (C) 2015 ZOPYX Limitations of CSS Paged Media ‣ Automatic typesetting means automatic ‣ Limited influence on the typesetting process ‣ Manual interaction through specific CSS hints/rules ‣ (sometimes time consuming) iterative interactive process (except using PDFreactor/Nimbudocs Editor) ‣ Typical usecases ‣ Technical documentation, manuals ‣ Catalogs ‣ Brochures ‣ (Mass) Publications with similar layouts
  • 32. Questions? ‣ www.andreas-jung.com ‣ www.zopyx.com ‣ www.produce-and-publish.com ‣ www.xml-director.info