从剪切标题图像防止长时间运行的表

时间:2015-07-22 19:30:35

标签: java xsl-fo

我正在用Java创建一个XSL-FO文档。它包含一个包含多个单元格的长表,有时可以运行多个页面。如果是这样,它会导致表格剪切到顶部标题中的图像。

我需要添加什么类型的填充以防止在剪切发生在桌面中时我们的表被剪切成标题图像?

我们无法向上或向下移动标题,因为它是一份法律文件。

编辑:我会尽力包含应用程序中的代码,但我必须稍微编辑一下。

这是我们的标题:

  w.write("<fo:static-content flow-name=\"xsl-region-before\">");
  w.write("<fo:block-container height=\"1.01in\" width=\"7in\" padding-bottom=\".1in\">");
  w.write("<fo:table table-layout=\"fixed\"  width=\"7in\">");
  w.write("<fo:table-column column-width=\"2.4cm\"/><fo:table-column column-width=\"14cm\"/>");
  w.write("<fo:table-body>");
  w.write("<fo:table-row>");
  w.write("<fo:table-cell number-rows-spanned=\"2\">");
  w.write("<fo:block padding-left=\"4mm\">");
  w.write("<fo:external-graphic top=\"0cm\" src=\"url('"+this.getResourceUrl("Url.tif")+"')\" width=\"2.4cm\"/>");
  w.write("</fo:block>");
  w.write("</fo:table-cell>");
  w.write("<fo:table-cell>");
  w.write("<fo:block font-size=\"10pt\" padding-top=\"4mm\" text-align=\"left\"><fo:inline font-weight=\"bold\">");
  w.filteredWrite("SomeCompany");
  w.write("</fo:inline></fo:block>");
  w.write("<fo:block font-size=\"10pt\" padding-top=\"1mm\" text-align=\"left\"><fo:inline font-weight=\"bold\">");
  w.filteredWrite(this.getStuff());
  w.write(",</fo:inline> Stuff");
  w.write("</fo:block>");
  w.write("<fo:block font-size=\"10pt\" padding-top=\"1mm\" padding-bottom=\"1mm\" text-align=\"left\"><fo:inline font-weight=\"bold\">");
  w.filteredWrite(this.getAThing());
  w.write(",</fo:inline> ");
  if (this.getAVariable() != null && this.getAVariableLength().length() > 0)
  {
  w.write(this.getAVariable());
  }
  else
  {
  w.write("TEXT");
  }
  w.write("</fo:block>");
  w.write("</fo:table-cell>");
  w.write("</fo:table-row>");

  w.write("<fo:table-row>");

  w.write("<fo:table-cell border-top-style=\"solid\" border-top-color=\"#000000\" border-top-width=\"0.2mm\" >");

  w.write("</fo:table-cell>");
  w.write("</fo:table-row>");
  w.write("</fo:table-body>");
  w.write("</fo:table>");
  w.write("</fo:block-container>");
  w.write("</fo:static-content>");      
}

这是我们表的初始声明:

  w.write("<fo:table table-layout=\"fixed\" width=\"176mm\">");
  w.write("<fo:table-column column-width=\"38mm\"/><fo:table-column column-width=\"38mm\"/>");
  w.write("<fo:table-column column-width=\"28mm\"/><fo:table-column column-width=\"27mm\"/>");

  w.write("<fo:table-column column-width=\"25mm\"/>");
  w.write("<fo:table-column column-width=\"20mm\"/>");

这就是表头的样子:

  w.write("<fo:table-header>");
  w.write("<fo:table-row background-color=\"black\" color=\"white\" padding=\"2px\" border-width=\"0.2mm\">");
  w.write("<fo:table-cell padding=\"inherit\" border-right-style=\"solid\" border-right-color=\"#000000\" border-right-width=\"0.2mm\">");
  w.write("<fo:block text-align=\"left\" font-size=\"10pt\" color=\"white\" font-weight=\"bold\" font-family=\""+font+"\">NameOfColumn</fo:block>");
  w.write("</fo:table-cell>");
-Four Additional identical sets of cells-
                 }
  w.write("</fo:table-row>");
  w.write("</fo:table-header>");
  w.write("<fo:table-body>");

这是每个额外行在最初声明时的样子:

  w.write("<fo:table-row keep-together=\"always\" padding=\"2px\">");
  w.write("<fo:table-cell padding=\"inherit\"  number-rows-spanned=" + rowsToSpan+" border-right-style=\"solid\" border-right-color=\"#000000\" border-right-width=\"0.2mm\" border-left-style=\"solid\" border-left-color=\"#000000\" border-left-width=\"0.2mm\"  border-bottom-style=\"solid\" border-bottom-color=\"#000000\" border-bottom-width=\"0.2mm\">");
  w.write("<fo:block text-align=\"left\" font-size=\"10pt\" font-family=\""+font+"\">");

1 个答案:

答案 0 :(得分:0)

我找到了一种方法来完成这项工作 - 我只需要扩展主页面主体的上边距,这样标题就不会与我的文本重叠。

 w.write("<fo:simple-page-master master-name=\"main-master\" ");    
 w.write("page-height=\"11in\" page-width=\"8.5in\" margin-top=\".5in\" ");
 w.write("margin-bottom=\".5in\" margin-left=\".5in\" margin-right=\".5in\">"); 
 //w.write("<fo:region-body margin-top=\"20mm\" margin-bottom=\"4in\"/>");
 w.write("<fo:region-body margin-top=\"25mm\" margin-bottom=\"4in\"/>");

这意味着页面顶部在正文开头和标题之间会有一个小空格,但这对我来说是一个可接受的折衷方案。