赞
踩
为啥又写一篇? 因为之前 用 Anchor 写的,这东西 放到Paragraph 里就不好使了 。
这回 目录里 和 跳转的地方 用的都是 Chunk
添加 目录条目 返回跳转的标记
- public String addMenuTag (List<Pair<Chunk, String>> chunks, String[] menuTag, Font font) {
- // 跳转标记
- String uuidTagFlag = IdGen.uuid();
-
- // 添加目录条目
- ArrayList<String> strings = Lists.newArrayList(menuTag);
- List<String> list = strings.subList(0, menuTag.length - 1);
-
- String join = StringUtils.join(list, " \t");
-
- // 设置跳转标记
- Chunk chunk = new Chunk(join, font);
- chunk.setLocalGoto(uuidTagFlag);
- chunks.add(new Pair<Chunk, String>(chunk, menuTag[menuTag.length-1]));
-
- return uuidTagFlag;
- }
目录要跳转到的位置:
- // 添加目录条目 获取锚点标记
- String uuidTagFlag = addMenuTag(menuParagraphs,
- new String[]{"试验流程图",(writer.getPageNumber() + 1 - footerBeginNum) + ""}
- , blackFont);
-
- // 锚点
- Chunk chunk = new Chunk ("试验流程图", formFont);
- // 设置跳转标记
- chunk.setLocalDestination(uuidTagFlag);
-
- // 可以直接加到 document 该样式的话 放Paragraph 里改
- // document.add(chunk);
-
- Paragraph processTitle = new Paragraph(chunk);
- processTitle.setSpacingAfter(10);
- processTitle.setAlignment(Element.ALIGN_CENTER);
-
- document.add(processTitle);
- // 输出目录
- Chunk dotLine = new Chunk(new DottedLineSeparator());
- for (Pair<Chunk, String> paragraph : menuChunks) {
- Paragraph p = new Paragraph();
- p.add(paragraph.getFirst());
- p.add(dotLine);
- p.add(String.valueOf(paragraph.getSecond()));
- document.add(p);
- }
把目录挪到前面
- try(
- PDDocument pdfDoc = Loader.loadPDF(new File(finalTempFilePath));
- PDDocument pdfPage = new PDDocument();
- ){
-
- for (int i = 0; i < footerEndNum-1; i++) {
-
- if(i==footerBeginNum-1){
- for (int j = footerEndNum-1; j < menuPageEndNum; j++) {
- PDPage page = pdfDoc.getPage(j);
- pdfPage.addPage(page);
- }
- }
- PDPage page = pdfDoc.getPage(i);
- pdfPage.addPage(page);
-
- }
- // 存
- pdfPage.save(finalMenuFilePath);
- }
我又不想要这种了 左侧 目录信息 怎么添加啊
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。