当前位置: 首页 > 知识库问答 >
问题:

行跨单元格中的文本在分页符上分页符

东方旭东
2023-03-14

我正在使用iText 5.5.4生成pdf。

我有一组行,这些行应该分组在一起,并有一个rowspan单元格来命名组。但是,在分页符上,“GRP”一词被分为“G”和“RP”。有没有一种方法可以让这个小组牢不可破,如果它不能放在当前的页面上,就可以在下一页上画出来?

我尝试了同时保持prowstogether和setBreakpoints,但没有得到一致的结果。

-------------------
| G |    row 1    |
| R |    row 2    |
| P |    row 3    |
-------------------


布局图像:

Document document = new Document(new Rectangle(300, 125));
PdfWriter.getInstance(document, new FileOutputStream(dest));
document.open();
document.add(new Paragraph("Table with setSplitLate(true):"));
PdfPTable table = new PdfPTable(2);
table.setWidths(new float[]{1,5});
table.setSpacingBefore(10);
PdfPCell cell = new PdfPCell();
cell.addElement(new Paragraph("G"));
cell.addElement(new Paragraph("R"));
cell.addElement(new Paragraph("O"));
cell.addElement(new Paragraph("U"));
cell.addElement(new Paragraph("P"));

//PdfPCell cell = new PdfPCell( new Phrase("GROUP"));
//cell.setNoWrap(true);
//cell.setRotation(90);
//cell.setVerticalAlignment(Element.ALIGN_MIDDLE);
//cell.setHorizontalAlignment(Element.ALIGN_CENTER);

cell.setRowspan(5);
table.addCell(cell);
table.addCell("row 1");
table.addCell("row 2");
table.addCell("row 3");
table.addCell("row 4");
table.addCell("row 5");
document.add(table);
document.add(new Paragraph("Table with setSplitLate(false):"));
table.setSplitLate(false);
document.add(table);
document.close();

上述代码的PDF输出

共有1个答案

韦星文
2023-03-14

由于您在StackOverflow上发布问题时没有提供任何强制的代码(除非您真的对得到答案不感兴趣),因此我尝试编写一个示例来重现(不希望的)结果。

我没有成功。请参阅我的SplittinAndRowspan示例:

document.add(new Paragraph("Table with setSplitLate(true):"));
PdfPTable table = new PdfPTable(2);
table.setSpacingBefore(10);
PdfPCell cell = new PdfPCell();
cell.addElement(new Paragraph("G"));
cell.addElement(new Paragraph("R"));
cell.addElement(new Paragraph("P"));
cell.setRowspan(3);
table.addCell(cell);
table.addCell("row 1");
table.addCell("row 2");
table.addCell("row 3");
document.add(table);

我没有真正使用setSplitLate(true)

由于包含GRP的单元格不适合该页,因此该表被转发到下一页(这正是您想要的)。

当然,当我使用setSplitLate(false)时不会发生这种情况:

document.add(new Paragraph("Table with setSplitLate(false):"));
table.setSplitLate(false);
document.add(table);

在这种情况下,包含G R P的单元格被拆分:

基于您的问题中共享的稀缺信息,我假设您有行表。setSplitLate(假) 代码中的某个地方。如果是,请将其移除。如果没有,请共享您的代码。

 类似资料:
  • 我有一个单列的PdfPTable。一页可容纳50行。若我向表中添加一些文本数据(例如,300行),则报告工作正常。当我将PdfPTable添加到单元格中(例如,20个字符串单元格、PdfPTable(其中包含20行或更少)和270个字符串单元格)时,所有这些都可以正常工作: 但是,当我的内部表有更多行时(mainTable[20个字符串行,innerTable[90个字符串行],270个字符串行)

  • 问题 我正在使用XSL-T(V1.0)和XSL-FO(Apache FOP 1.0)来生成PDF(A4)报告,使用的数据来自用户在第三方软件中填写的表单(输出XML)。 表单包含用户可以根据需要填充的文本区域(不控制内容大小)。然后以XML形式输出文本区域内容,作为()。为了保留用户的输入格式,我在块级使用属性。 问题是,每当文本区域填充了足以导致分页的数据,当分页发生在换行时,我在Apache

  • 问题内容: 我正在生成一个动态pdf文件,该文件包含大约10,000个用户的数据,通常该应用程序是使用MySQL和PHP开发的。动态内容是如此繁重,以至于我发现很难在课堂上进行处理。因此,我使用将输出的PHP页面转换为HTML文件。现在,已成功生成html文件和pdf文件。但是我想在每个用户的数据之后留下一个分页符,也就是说,每个用户的数据都必须从一个新的页面开始。我无法使用任何HTML标记,因为

  • 我有带水平滚动的UICollectionView,整个屏幕上总是有两个单元格并排显示。我需要滚动到单元格开始处。启用分页后,集合视图将滚动整个页面,即一次滚动2个单元格,然后停止。 我需要启用按单个单元格滚动,或按多个单元格滚动,并在单元格边缘停止。 我尝试子类化并实现方法子类的所有方法?谢谢

  • 我们正在使用iText 5.13。我正在使用一系列表格创建一个表单文档,每个表格都有一列,一个接一个地放置以创建表单框。在这些单元格中有不同大小的段落。查看PDF时,如果下一个表格不适合页面,我们在页面的下半部分有一个大的空白空间,表格从下一页开始。如果单元格足够大,以至于它不适合一页,引擎将允许它在单元格中间分页,这正是我希望单元格一直做的,而不仅仅是当有一个大单元格时。我尝试过设置,但没有帮助

  • 本文向大家介绍PHP函数实现分页含文本分页和数字分页,包括了PHP函数实现分页含文本分页和数字分页的使用技巧和注意事项,需要的朋友参考一下 最近,在项目中要用到分页。分页功能是经常使用的一个功能,所以,对其以函数形式进行了封装。 参数解释: $pageTotal是总页数,$page是当前页,$total是从数据库中获取的数据总数; 为了简化,将参数全部封装 参数解释: $pagestart是当页从