报表分页的页眉或页脚字段有的不显示

 

 

 

 报表的页眉所用字段在预览页面有的页显示,有的不显示。

 

解决方法

 

 

 

 


aa.bmp

 

 

 

 

 

 

 

转载于:https://www.cnblogs.com/hbb0b0/archive/2009/01/14/1375292.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
下面是使用itext7导出pdf,添加分页页眉页脚的Java代码示例: ```java import com.itextpdf.kernel.pdf.PdfDocument; import com.itextpdf.kernel.pdf.PdfPage; import com.itextpdf.kernel.pdf.PdfWriter; import com.itextpdf.layout.Document; import com.itextpdf.layout.element.Paragraph; import com.itextpdf.layout.element.Text; import com.itextpdf.layout.renderer.DocumentRenderer; import com.itextpdf.layout.renderer.DrawContext; import com.itextpdf.layout.renderer.IRenderer; import java.io.File; import java.io.FileNotFoundException; import java.util.ArrayList; import java.util.List; public class PdfGenerator { private static final String DEST = "output.pdf"; public static void main(String[] args) throws FileNotFoundException { File file = new File(DEST); file.getParentFile().mkdirs(); new PdfGenerator().createPdf(DEST); } public void createPdf(String dest) throws FileNotFoundException { PdfWriter writer = new PdfWriter(dest); PdfDocument pdf = new PdfDocument(writer); Document document = new Document(pdf); // 设置页眉页脚 pdf.addEventHandler(PdfDocumentEvent.START_PAGE, new PageEventHandler()); // 添加内容 List<String> paragraphs = new ArrayList<>(); paragraphs.add("Paragraph 1"); paragraphs.add("Paragraph 2"); paragraphs.add("Paragraph 3"); paragraphs.add("Paragraph 4"); paragraphs.add("Paragraph 5"); paragraphs.add("Paragraph 6"); paragraphs.add("Paragraph 7"); paragraphs.add("Paragraph 8"); paragraphs.add("Paragraph 9"); paragraphs.add("Paragraph 10"); for (String text : paragraphs) { document.add(new Paragraph(text)); } document.close(); } // 实现分页页眉页脚 private static class PageEventHandler implements IPdfPageEvent { @Override public void handleEvent(Event event) { PdfDocumentEvent docEvent = (PdfDocumentEvent) event; PdfDocument pdfDoc = docEvent.getDocument(); PdfPage page = docEvent.getPage(); int pageNumber = pdfDoc.getPageNumber(page); Rectangle pageSize = page.getPageSize(); PdfCanvas pdfCanvas = new PdfCanvas(page.newContentStreamBefore(), page.getResources(), pdfDoc); Canvas canvas = new Canvas(pdfCanvas, pdfDoc, pageSize); // 添加页眉 canvas.showTextAligned(new Paragraph("Header").setFontColor(Color.GRAY), pageSize.getWidth() / 2, pageSize.getTop() - 30, TextAlignment.CENTER); // 添加页脚 canvas.showTextAligned(new Paragraph(String.format("Page %d", pageNumber)), pageSize.getWidth() / 2, pageSize.getBottom() + 30, TextAlignment.CENTER); canvas.close(); } } // 实现分页 private static class CustomRenderer extends DocumentRenderer { public CustomRenderer(Document document) { super(document); } @Override public void drawBackground(DrawContext drawContext) { super.drawBackground(drawContext); int pageNumber = getCurrentArea().getPageNumber(); if (pageNumber != 1) { drawContext.getCanvas().beginText().setFontAndSize(PdfFontFactory.createFont(), 12).moveText(36, 20).showText(String.valueOf(pageNumber)).endText(); } } @Override public IRenderer getNextRenderer() { return new CustomRenderer(getDocument()); } } } ``` 在上面的代码中,我们首先创建一个 `PdfWriter` 和 `PdfDocument`。然后我们创建一个 `Document` 并设置页眉页脚的代码。我们添加了一些段落到文档中。 我们使用了 `PageEventHandler` 实现了分页页眉页脚。在 `handleEvent` 方法中,我们获取了当前页码,并添加了页眉页脚。 我们还使用了 `CustomRenderer` 实现了分页。在 `drawBackground` 方法中,我们将当前页码添加到每一页的左下角。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值