Good morning,

We plan to XSL transform a dynamically generated docbook including images to
FO and subsequently process that to PDF. Therefore I'm digging only in the
docbook to FO stylesheets. While investigating that we had the idea to
base64 encode images and include them in the docbook because it enables us
to bypass image caching while generating PDF on the fly. To include a base64
image I had the idea to write it as:

-- quote --
        <docbook:figure>
          <docbook:title>Sample</docbook:title>
          <docbook:mediaobject>
            <docbook:imageobject>
              <fo:external-graphic src="data:image/jpeg;base64,XYZ"
width="auto" height="auto" content-width="auto" content-height="auto"
content-type="content-type:image/jpeg" />
            </docbook:imageobject>
          </docbook:mediaobject>
        </docbook:figure>
-- /quote --

But unfortunately the stylesheet (1.75.2 release) would wrap that within a
<fo:instream-foreign-object /> and that causes the FO processor to fail
including the base64 encoded image.

Therefore I changed the docbook xsl stylesheet (based on the 1.75.2 release)
in the file fo/graphics.xsl slightly:

-- diffquote --
<xsl:template match="imageobject">
  <xsl:choose>
    <xsl:when test="imagedata">
      <xsl:apply-templates select="imagedata"/>
    </xsl:when>
+    <xsl:when test="fo:external-graphic">
+      <xsl:apply-templates mode="copy-all" />
+    </xsl:when>
    <xsl:otherwise>
      <fo:instream-foreign-object>
        <xsl:apply-templates mode="copy-all"/>
      </fo:instream-foreign-object>
    </xsl:otherwise>
  </xsl:choose>
</xsl:template>
-- /diffquote --

This patch drops the <fo:instream-foreign-object /> tag when encountering
<fo:external-graphic />.

Does this patch break other things? Would you guys do it somehow different?

Cheers,
Dominik


---------------------------------------------------------------------
To unsubscribe, e-mail: docbook-apps-unsubscr...@lists.oasis-open.org
For additional commands, e-mail: docbook-apps-h...@lists.oasis-open.org

Reply via email to