java导出word、pdf之添加页眉----页眉(指定格式,包括图片和文字)

doc.open();

// 添加页眉
   Image headerImage = Image.getInstance("f:\\1.jpg");
   headerImage.scaleAbsolute(36, 36);
   Paragraph headerPara1 = new Paragraph();
headerPara1.setAlignment(HeaderFooter.ALIGN_CENTER);
   Phrase headerPara = new Phrase();
   /**
    * 插入表格 三列二行
    */
   Table table = new Table(3);
   int width[] = { 2, 10, 6 };
   table.setWidths(width);
   table.setBorderWidth(1);
   table.setBorder(0);
   table.setBorderColor(Color.BLACK);
   table.setPadding(0);
   table.setSpacing(0);

   table.setWidth(100);
   Cell cell = new Cell(headerImage);// 单元格
   cell.setBorderWidth(0f); // 设置表格没有边框
   cell.setBorderWidthBottom(1);
   cell.setHeader(true);
   cell.setRowspan(2);// 当前单元格占两行,纵向跨度
   cell.setVerticalAlignment(Element.ALIGN_LEFT);
   table.addCell(cell);

   Cell cell

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
下面是使用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` 方法中,我们将当前页码添加到每一页的左下角。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值