当前位置:   article > 正文

PDF 生成目录和页码 点击跳转(新)

PDF 生成目录和页码 点击跳转(新)

为啥又写一篇?  因为之前 用 Anchor 写的,这东西 放到Paragraph 里就不好使了  。 

这回 目录里 和 跳转的地方 用的都是 Chunk

添加 目录条目 返回跳转的标记

  1. public String addMenuTag (List<Pair<Chunk, String>> chunks, String[] menuTag, Font font) {
  2. // 跳转标记
  3. String uuidTagFlag = IdGen.uuid();
  4. // 添加目录条目
  5. ArrayList<String> strings = Lists.newArrayList(menuTag);
  6. List<String> list = strings.subList(0, menuTag.length - 1);
  7. String join = StringUtils.join(list, " \t");
  8. // 设置跳转标记
  9. Chunk chunk = new Chunk(join, font);
  10. chunk.setLocalGoto(uuidTagFlag);
  11. chunks.add(new Pair<Chunk, String>(chunk, menuTag[menuTag.length-1]));
  12. return uuidTagFlag;
  13. }

目录要跳转到的位置:

  1. // 添加目录条目 获取锚点标记
  2. String uuidTagFlag = addMenuTag(menuParagraphs,
  3. new String[]{"试验流程图",(writer.getPageNumber() + 1 - footerBeginNum) + ""}
  4. , blackFont);
  5. // 锚点
  6. Chunk chunk = new Chunk ("试验流程图", formFont);
  7. // 设置跳转标记
  8. chunk.setLocalDestination(uuidTagFlag);
  9. // 可以直接加到 document 该样式的话 放Paragraph 里改
  10. // document.add(chunk);
  11. Paragraph processTitle = new Paragraph(chunk);
  12. processTitle.setSpacingAfter(10);
  13. processTitle.setAlignment(Element.ALIGN_CENTER);
  14. document.add(processTitle);

  1. // 输出目录
  2. Chunk dotLine = new Chunk(new DottedLineSeparator());
  3. for (Pair<Chunk, String> paragraph : menuChunks) {
  4. Paragraph p = new Paragraph();
  5. p.add(paragraph.getFirst());
  6. p.add(dotLine);
  7. p.add(String.valueOf(paragraph.getSecond()));
  8. document.add(p);
  9. }

把目录挪到前面

  1. try(
  2. PDDocument pdfDoc = Loader.loadPDF(new File(finalTempFilePath));
  3. PDDocument pdfPage = new PDDocument();
  4. ){
  5. for (int i = 0; i < footerEndNum-1; i++) {
  6. if(i==footerBeginNum-1){
  7. for (int j = footerEndNum-1; j < menuPageEndNum; j++) {
  8. PDPage page = pdfDoc.getPage(j);
  9. pdfPage.addPage(page);
  10. }
  11. }
  12. PDPage page = pdfDoc.getPage(i);
  13. pdfPage.addPage(page);
  14. }
  15. // 存
  16. pdfPage.save(finalMenuFilePath);
  17. }

我又不想要这种了   左侧 目录信息 怎么添加啊

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小小林熬夜学编程/article/detail/580496
推荐阅读
相关标签
  

闽ICP备14008679号