繁体   English   中英

打印pdf时XSL-FO格式已关闭,但xsl-fo代码似乎可以吗? 软体:XML2PDF

[英]XSL-FO format is off when printing pdf, but xsl-fo code appears okay? software: XML2PDF

我正在使用XML2PDF来创建打印徽章。 不幸的是,我遇到一个问题,当创建一个新页面时(page-break-after =“ always”),下一个块容器被复制了。 当块容器具有指定的高度时,似乎会发生这种情况。 没有height属性,数据看起来还可以(尽管我需要指定高度)。

我还注意到,增加simple-page-master中的页面高度也可以解决此问题。 我不确定为什么会这样,因为块状容器和边距不会超过11英寸的高度。

任何帮助是极大的赞赏。 如果我缺少任何信息,请告诉我

注意:

每页有6个徽章。 2列3行。 (每个徽章的宽度为4英寸,高度为3英寸)

每页的页脚宽度为4英寸,高度为1.5英寸

  <fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format">
 <fo:layout-master-set>
     <fo:simple-page-master master-name="badge" page-width="8.5in" page-height="11in" margin-top="0.00in" margin-bottom="0.00in" margin-left="0.00in" margin-right="0.00in">
        <fo:region-body margin=".25in"/>
        <fo:region-before extent="0in"/>
        <fo:region-after extent="0in"/>
        <fo:region-start extent="0in"/>
        <fo:region-end extent="0in"/>
    </fo:simple-page-master>
</fo:layout-master-set>
 <fo:page-sequence master-reference="badge">
     <fo:flow flow-name="xsl-region-body">
         <fo:float float="left">
             <fo:block-container background-color="gray" height="3in" width="4in">
                <fo:block font-size="34px" font-weight="bold">Name - 1</fo:block>
                <fo:block font-size="18px">Full Name</fo:block>
                <fo:block font-size="18px">Company</fo:block>
                <fo:block font-size="18px">City, State</fo:block>
            </fo:block-container>
        </fo:float>
         <fo:float float="left">
             <fo:block-container background-color="gray" height="3in" width="4in">
                <fo:block font-size="34px" font-weight="bold">Name - 2</fo:block>
                <fo:block font-size="18px">Full Name</fo:block>
                <fo:block font-size="18px">Company</fo:block>
                <fo:block font-size="18px">City, State</fo:block>
            </fo:block-container>
        </fo:float>
        <fo:float clear="left"/>
         <fo:float float="left">
             <fo:block-container background-color="gray" height="3in" width="4in">
                <fo:block font-size="34px" font-weight="bold">Name - 3</fo:block>
                <fo:block font-size="18px">FullName</fo:block>
                <fo:block font-size="18px">Company</fo:block>
                <fo:block font-size="18px">City, State</fo:block>
            </fo:block-container>
        </fo:float>
         <fo:float float="left">
             <fo:block-container background-color="gray" height="3in" width="4in">
                <fo:block font-size="34px" font-weight="bold">Name - 4</fo:block>
                <fo:block font-size="18px">Full Name</fo:block>
                <fo:block font-size="18px">Company</fo:block>
                <fo:block font-size="18px">City, State</fo:block>
            </fo:block-container>
        </fo:float>
        <fo:float clear="left"/>
         <fo:float float="left">
             <fo:block-container background-color="gray" height="3in" width="4in">
                <fo:block font-size="34px" font-weight="bold">Name - 5</fo:block>
                <fo:block font-size="18px">Full Name </fo:block>
                <fo:block font-size="18px">Company</fo:block>
                <fo:block font-size="18px">City, State</fo:block>
            </fo:block-container>
        </fo:float>
         <fo:float float="left">
             <fo:block-container background-color="gray" height="3in" width="4in">
                <fo:block font-size="34px" font-weight="bold">Name - 6</fo:block>
                <fo:block font-size="18px">Full Name</fo:block>
                <fo:block font-size="18px"/>
                <fo:block font-size="18px">City, State</fo:block>
            </fo:block-container>
        </fo:float>
        <fo:float clear="left"/>
         <fo:block-container background-color="gray" height="1.5in" width="8in" page-break-after="always">
            <fo:block> Text goes here </fo:block>
        </fo:block-container>
         <fo:float float="left">
             <fo:block-container background-color="gray" height="3in" width="4in">
                <fo:block font-size="34px" font-weight="bold">Name - 7</fo:block>
                <fo:block font-size="18px">Full Name</fo:block>
                <fo:block font-size="18px">Company</fo:block>
                <fo:block font-size="18px">City, State</fo:block>
            </fo:block-container>
        </fo:float>
    </fo:flow>
</fo:page-sequence>

我相信我理解您的问题,您是在说带有“文本在此处”的块容器被扔到下一页吗? 当您“认为”所有间隔加在一起时,您会想念一件事。 抛出fo:float时,它具有基于默认字体的固有线高。 如果要使其完全适合,则需要在浮子上将行高设置为“ 0”,然后在内部的块容器中将其重新设置为正常。 实际上,您的文件实际上与第一个块的行高不符。 这将格式化为两页(请注意,我还删除了空的fo:float元素,从技术上讲,这是格式化程序的错误,因为float不能为空,也不需要它们)。

(仅使用RenderX的格式化程序进行了测试,我没有XML2PDF):

    <fo:page-sequence master-reference="badge">
        <fo:flow flow-name="xsl-region-body">

            <fo:float float="left" line-height="0">
                <fo:block-container background-color="gray" height="3in" width="4in" line-height="normal">
                    <fo:block font-size="34px" font-weight="bold">Name - 1</fo:block>
                    <fo:block font-size="18px">Full Name</fo:block>
                    <fo:block font-size="18px">Company</fo:block>
                    <fo:block font-size="18px">City, State</fo:block>
                </fo:block-container>
            </fo:float>
            <fo:float float="left" line-height="0">
                <fo:block-container background-color="gray" height="3in" width="4in" line-height="normal">
                    <fo:block font-size="34px" font-weight="bold">Name - 2</fo:block>
                    <fo:block font-size="18px">Full Name</fo:block>
                    <fo:block font-size="18px">Company</fo:block>
                    <fo:block font-size="18px">City, State</fo:block>
                </fo:block-container>
            </fo:float>
            <fo:float float="left" line-height="0">
                <fo:block-container background-color="gray" height="3in" width="4in" line-height="normal">
                    <fo:block font-size="34px" font-weight="bold">Name - 3</fo:block>
                    <fo:block font-size="18px">FullName</fo:block>
                    <fo:block font-size="18px">Company</fo:block>
                    <fo:block font-size="18px">City, State</fo:block>
                </fo:block-container>
            </fo:float>
            <fo:float float="left" line-height="0">
                <fo:block-container background-color="gray" height="3in" width="4in" line-height="normal">
                    <fo:block font-size="34px" font-weight="bold">Name - 4</fo:block>
                    <fo:block font-size="18px">Full Name</fo:block>
                    <fo:block font-size="18px">Company</fo:block>
                    <fo:block font-size="18px">City, State</fo:block>
                </fo:block-container>
            </fo:float>
            <fo:float float="left" line-height="0">
                <fo:block-container background-color="gray" height="3in" width="4in" line-height="normal">
                    <fo:block font-size="34px" font-weight="bold">Name - 5</fo:block>
                    <fo:block font-size="18px">Full Name </fo:block>
                    <fo:block font-size="18px">Company</fo:block>
                    <fo:block font-size="18px">City, State</fo:block>
                </fo:block-container>
            </fo:float>
            <fo:float float="left" line-height="0">
                <fo:block-container background-color="gray" height="3in" width="4in" line-height="normal">
                    <fo:block font-size="34px" font-weight="bold">Name - 6</fo:block>
                    <fo:block font-size="18px">Full Name</fo:block>
                    <fo:block font-size="18px"/>
                    <fo:block font-size="18px">City, State</fo:block>
                </fo:block-container>
            </fo:float>
            <fo:block-container background-color="gray" height="1.3in" width="8in" page-break-after="always" clear="left">
                <fo:block> Text goes here </fo:block>
            </fo:block-container>
            <fo:float float="left" line-height="0">
                <fo:block-container background-color="gray" height="3in" width="4in" line-height="normal">
                    <fo:block font-size="34px" font-weight="bold">Name - 7</fo:block>
                    <fo:block font-size="18px">Full Name</fo:block>
                    <fo:block font-size="18px">Company</fo:block>
                    <fo:block font-size="18px">City, State</fo:block>
                </fo:block-container>
            </fo:float>

        </fo:flow>
    </fo:page-sequence>

PDF结果

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM