如何用asciidoctor-fopub生成封面图图片
How to generate a cover image picture with asciidoctor-fopub
我正在尝试自定义 developer guide pdf 以获得美观的首页。我完全可以在 photoshop 中将所有内容都作为图像处理,因为 asciidoc 在这里的能力似乎非常有限。
不幸的是,尽管四处寻找,我似乎无法找到一种方法来自定义封面 sheet 或将其替换为适用于 asciidoctor-fopub 的图像。
令人恼火的是,这个用例在项目的自述文件 https://github.com/asciidoctor/asciidoctor-fopub 中特别提及(在自定义 XSL 模板下),但除了 "its in the XSL".作为一个不熟悉 docbook 的人,我不知道从哪里开始。
asciidoctor-pdf
有一个用于包含图像的标签,但它会在我们的文档上呕吐并产生垃圾(目录被涂在所有东西上)。
这可以使用 build/fopub/docbook/fo/
下的 division.xsl 文件来完成
搜索 "Placeholder templates"
并粘贴下面的代码,您将能够在生成的 fopub 中看到封面图片
<!-- Placeholder templates -->
<xsl:template name="front.cover">
<xsl:call-template name="page.sequence">
<xsl:with-param name="master-reference">titlepage-cover-image</xsl:with-param>
<xsl:with-param name="content">
<fo:block text-align="center">
<fo:external-graphic src="url(path/to/cover.png)" content-height="250mm" content-width="176mm"/>
</fo:block>
</xsl:with-param>
</xsl:call-template>
</xsl:template>
根据您的书籍要求更改高度和宽度。
完成后,您需要为封面上的图像留出边距以使其清晰。在下面添加 pagesetup.xsl
<fo:simple-page-master master-name="titlepage-cover-image"
page-width="{$page.width}"
page-height="{$page.height}"
margin-top="{$title.page.margin.top}"
margin-bottom="{$page.margin.bottom}">
<xsl:attribute name="margin-{$direction.align.start}">
<xsl:value-of select="$page.margin.inner"/>
<xsl:if test="$fop.extensions != 0">
<xsl:value-of select="concat(' - (',$title.margin.left,')')"/>
</xsl:if>
</xsl:attribute>
<xsl:attribute name="margin-{$direction.align.end}">
<xsl:value-of select="$page.margin.outer"/>
</xsl:attribute>
<xsl:if test="$axf.extensions != 0">
<xsl:call-template name="axf-page-master-properties">
<xsl:with-param name="page.master">titlepage-cover-image</xsl:with-param>
</xsl:call-template>
</xsl:if>
<fo:region-body margin-bottom="{$body.margin.bottom}"
margin-top="{$title.body.margin.top}"
column-gap="{$column.gap.titlepage}"
column-count="{$column.count.titlepage}">
<xsl:attribute name="margin-{$direction.align.start}">
<xsl:value-of select="$body.margin.inner"/>
</xsl:attribute>
<xsl:attribute name="margin-{$direction.align.end}">
<xsl:value-of select="$body.margin.outer"/>
</xsl:attribute>
</fo:region-body>
<fo:region-before region-name="xsl-region-before-first"
extent="{$region.before.extent}"
precedence="{$region.before.precedence}"
display-align="before"/>
<fo:region-after region-name="xsl-region-after-first"
extent="{$region.after.extent}"
precedence="{$region.after.precedence}"
display-align="after"/>
<xsl:call-template name="region.inner">
<xsl:with-param name="sequence">first</xsl:with-param>
<xsl:with-param name="pageclass">titlepage</xsl:with-param>
</xsl:call-template>
<xsl:call-template name="region.outer">
<xsl:with-param name="sequence">first</xsl:with-param>
<xsl:with-param name="pageclass">titlepage</xsl:with-param>
</xsl:call-template>
</fo:simple-page-master>
然后在 fo-pdf.xsl 中添加变量以将您的正文上边距清零。
HTH.
我正在尝试自定义 developer guide pdf 以获得美观的首页。我完全可以在 photoshop 中将所有内容都作为图像处理,因为 asciidoc 在这里的能力似乎非常有限。
不幸的是,尽管四处寻找,我似乎无法找到一种方法来自定义封面 sheet 或将其替换为适用于 asciidoctor-fopub 的图像。
令人恼火的是,这个用例在项目的自述文件 https://github.com/asciidoctor/asciidoctor-fopub 中特别提及(在自定义 XSL 模板下),但除了 "its in the XSL".作为一个不熟悉 docbook 的人,我不知道从哪里开始。
asciidoctor-pdf
有一个用于包含图像的标签,但它会在我们的文档上呕吐并产生垃圾(目录被涂在所有东西上)。
这可以使用 build/fopub/docbook/fo/
下的 division.xsl 文件来完成搜索 "Placeholder templates"
并粘贴下面的代码,您将能够在生成的 fopub 中看到封面图片
<!-- Placeholder templates -->
<xsl:template name="front.cover">
<xsl:call-template name="page.sequence">
<xsl:with-param name="master-reference">titlepage-cover-image</xsl:with-param>
<xsl:with-param name="content">
<fo:block text-align="center">
<fo:external-graphic src="url(path/to/cover.png)" content-height="250mm" content-width="176mm"/>
</fo:block>
</xsl:with-param>
</xsl:call-template>
</xsl:template>
根据您的书籍要求更改高度和宽度。
完成后,您需要为封面上的图像留出边距以使其清晰。在下面添加 pagesetup.xsl
<fo:simple-page-master master-name="titlepage-cover-image"
page-width="{$page.width}"
page-height="{$page.height}"
margin-top="{$title.page.margin.top}"
margin-bottom="{$page.margin.bottom}">
<xsl:attribute name="margin-{$direction.align.start}">
<xsl:value-of select="$page.margin.inner"/>
<xsl:if test="$fop.extensions != 0">
<xsl:value-of select="concat(' - (',$title.margin.left,')')"/>
</xsl:if>
</xsl:attribute>
<xsl:attribute name="margin-{$direction.align.end}">
<xsl:value-of select="$page.margin.outer"/>
</xsl:attribute>
<xsl:if test="$axf.extensions != 0">
<xsl:call-template name="axf-page-master-properties">
<xsl:with-param name="page.master">titlepage-cover-image</xsl:with-param>
</xsl:call-template>
</xsl:if>
<fo:region-body margin-bottom="{$body.margin.bottom}"
margin-top="{$title.body.margin.top}"
column-gap="{$column.gap.titlepage}"
column-count="{$column.count.titlepage}">
<xsl:attribute name="margin-{$direction.align.start}">
<xsl:value-of select="$body.margin.inner"/>
</xsl:attribute>
<xsl:attribute name="margin-{$direction.align.end}">
<xsl:value-of select="$body.margin.outer"/>
</xsl:attribute>
</fo:region-body>
<fo:region-before region-name="xsl-region-before-first"
extent="{$region.before.extent}"
precedence="{$region.before.precedence}"
display-align="before"/>
<fo:region-after region-name="xsl-region-after-first"
extent="{$region.after.extent}"
precedence="{$region.after.precedence}"
display-align="after"/>
<xsl:call-template name="region.inner">
<xsl:with-param name="sequence">first</xsl:with-param>
<xsl:with-param name="pageclass">titlepage</xsl:with-param>
</xsl:call-template>
<xsl:call-template name="region.outer">
<xsl:with-param name="sequence">first</xsl:with-param>
<xsl:with-param name="pageclass">titlepage</xsl:with-param>
</xsl:call-template>
</fo:simple-page-master>
然后在 fo-pdf.xsl 中添加变量以将您的正文上边距清零。
HTH.