XSL-FO Tutorials - Herong's Tutorial Examples - Version 2.10, by Dr. Herong Yang
"instream-foreign-object" Formatting Object
This section describes the 'instream-foreign-object' formatting object, which is used to take embedded object to generate an inline area. It is mostly used to embed SVG diagrams.
What Is an "instream-foreign-object" Formatting Object? "instream-foreign-object" is an inline-level formatting object that takes an embedded XML structure to generate an inline area.
An "instream-foreign-object" formatting object supports the following main attributes:
Here is my tutorial example, instream-foreign-object-SVG.fo, that shows an "instream-foreign-object" formatting object inserting a SVG diagram with an embedded SVG XML sub structure:
<?xml version="1.0" encoding="utf-8"?>
<!-- instream-foreign-object-SVG.fo
- Copyright (c) 2016, HerongYang.com, All Rights Reserved.
-->
<fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format">
<fo:layout-master-set>
<fo:simple-page-master master-name="page"
margin="0.1in" page-height="4in" page-width="3in">
<fo:region-body region-name="body" background-color="#eeffff"/>
</fo:simple-page-master>
</fo:layout-master-set>
<fo:page-sequence master-reference="page">
<fo:flow flow-name="body">
<fo:block border-width="1px" border-style="solid">
<fo:block-container width="1in" border-width="1px"
border-style="solid">
<fo:block>1 inch</fo:block>
</fo:block-container>
<fo:block-container width="72px" border-width="1px"
border-style="solid">
<fo:block>72 px</fo:block>
</fo:block-container>
<fo:block-container width="120px" border-width="1px"
border-style="solid">
<fo:block>120 px</fo:block>
</fo:block-container>
<fo:block border-width="1px" border-style="solid">
Embedded SVG diagram:
<fo:instream-foreign-object width="1.5in" height="1.5in"
content-width="scale-to-fit" content-height="scale-to-fit"
xmlns:svg="http://www.w3.org/2000/svg">
<svg:svg width="200" height="200"
viewBox="0 0 20 20">
<svg:g style="fill:red; stroke:#000000">
<svg:rect x="0" y="0" width="15" height="15"/>
<svg:rect x="5" y="5" width="15" height="15"/>
</svg:g>
</svg:svg>
</fo:instream-foreign-object>
</fo:block>
</fo:block>
</fo:flow>
</fo:page-sequence>
</fo:root>
If you process this example XSL-FO document with Apache FOP, you should see a diagram of two red boxes displayed on the page:
Last update: 2016.
Table of Contents
About This XSL-FO Tutorial Book
Apache™ FOP (Formatting Objects Processor)
XSL-FO Document Basics and Examples
Block-Level Formatting Objects
Inline-Level Formatting Objects
►Including Graphics in XSL-FO document
What Is "external-graphic" Formatting Object?
Control DPI with "content-width" and "content-height"
Fixed Higher DPI with "scale-to-fit"
Resolution Included in Image Files
Image Over and Under Flow Area
"external-graphic" with SVG Diagram
►"instream-foreign-object" Formatting Object
Floating Blocks - "float" and "footnote"
Hyperlinks, Table of Contents and Indexes
Headers and Footers using "static-content"
Font Attributes and Font Families
Apache FOP Font Configurations