将所有格式放在最上面的块中是否会提高pdf生成的性能?

将所有格式放在最上面的块中是否会提高pdf生成的性能?,pdf,pdf-generation,xsl-fo,apache-fop,Pdf,Pdf Generation,Xsl Fo,Apache Fop,我有一个xslfo代码来生成PDF,我正在使用ApacheFop来实现这一点。在每个模块中,我都会提到格式化对象,例如字体系列和大小。 我可以在不降低性能的情况下将其移动到fo:block的顶部吗 电流源: <fo:block widows="2" orphans="2" font-size="10pt" line-height="1.147" white-space-collapse="false"> <fo:block space-a

我有一个xslfo代码来生成PDF,我正在使用ApacheFop来实现这一点。在每个模块中,我都会提到格式化对象,例如字体系列和大小。 我可以在不降低性能的情况下将其移动到fo:block的顶部吗

电流源:

<fo:block widows="2" orphans="2" font-size="10pt" line-height="1.147" white-space-collapse="false">
                    <fo:block space-after="8pt" space-after.conditionality="retain" line-height="1.2378041666666666" font-family="TimesNewRoman" font-size="11pt" text-align="center">
                        <fo:inline font-family="TimesNewRoman" font-weight="bold" font-size="14pt">
                            <fo:leader leader-length="0pt" />Some Title
                        </fo:inline>
                    </fo:block>

    <fo:block space-after="8pt" space-after.conditionality="retain" line-height="1.2378041666666666" font-family="TimesNewRoman" font-size="11pt" text-align="center">
                            <fo:inline font-family="TimesNewRoman" font-weight="bold" font-size="14pt">
                                <fo:leader leader-length="0pt" />Some Other Title
                            </fo:inline>
                        </fo:block>
    </fo:block>

一些头衔
其他头衔
要更改为:

<fo:block widows="2" orphans="2" line-height="1.147" white-space-collapse="false" font-family="TimesNewRoman" font-size="11pt">

                        <fo:block space-after="8pt" space-after.conditionality="retain" line-height="1.2378041666666666" text-align="center">
                            <fo:inline font-family="TimesNewRoman" font-weight="bold" font-size="14pt">
                                <fo:leader leader-length="0pt" />Some Title
                            </fo:inline>
                        </fo:block>

        <fo:block space-after="8pt" space-after.conditionality="retain" line-height="1.2378041666666666" text-align="center">
                                <fo:inline font-family="TimesNewRoman" font-weight="bold" font-size="14pt">
                                    <fo:leader leader-length="0pt" />Some Other Title
                                </fo:inline>
                            </fo:block>
        </fo:block>

一些头衔
其他头衔
很抱歉,代码的格式不正确。
我需要优先考虑文档的生成速度。两个引擎中哪一个更好?

作为了解(一个)引擎内部结构的人,答案是“非常非常小”是的。大多数引擎正在创建格式化结果的内部树,以解析所有继承。在这个表示中,您在每个元素上指定为继承或完全继承的所有内容都将消失

现在,我说。在创建过程中,会创建和比较节点,XML+XSL到XSL FO转换会占用所有这些节点的内存和空间

因此,例如,在每个元素上指定字体系列(作为相同的字体系列)可能会在引擎内部解析为引擎中间格式的一个字体开关,但当然,分析并执行此操作需要时间和内存

多少钱

最小的。有更多的时间花在决定字母的字距、笔画的方向、什么适合一行、在页尾做什么、什么保持在一起等等

我猜是的。0.5%. 如果您使用的是XML+XSL,那么读取更大的XSL FO文件或在内存中创建它们会产生更大的影响。更多的记忆就是一切。它可以影响性能,但影响很小


将表格放在表格内的表格内,并使用keeps和continued header=20+%。或者选择像Arial Unicode这样的大字体,像单个项目符号一样从中提取一个字符

这可能完全取决于xsl fo处理器和相关PDF查看器。line height=“1.2378041666666”指定的高度精度仅为一个原子。当您以1200 dpi打印时,没有必要指定比1/1200”或0.02 mm更精确的测量值。我怀疑您在这里获得了相当高的速度。我使用Apache FOP作为处理器“哪一个更好?”您为什么不自己测试它呢?