java - 突出显示文本 PDF Box Reader

标签 java swing compare pdfbox

我想突出显示 pdf 中的特定文本。我编写了以下代码,但我得到的是带框的空 pdf。我想显示现有的 pdf 内容,并且应该在文本上绘制框,这样它就会充当文本高亮。

      File file = new File(pdfName);
      PDDocument document = PDDocument.load(file);

      PDPage page = document.getPage(0);

      //Instantiating the PDPageContentStream class
      PDPageContentStream contentStream = new PDPageContentStream(document, page);

      //Setting the non stroking color
      contentStream.setNonStrokingColor(Color.DARK_GRAY);

      //Drawing a rectangle 
      contentStream.addRect(data.get(0).getX(), data.get(0).getY(), data.get(0).getWidth(), data.get(0).getHeight());

      //Drawing a rectangle
      contentStream.fill();

      System.out.println("rectangle added");

      //Closing the ContentStream object
      contentStream.close();

      //Saving the document
      //File file2 = new File("CompareOutput.pdf");

      //File fileOutput = new File("CompareOutput.pdf");
      document.save("CompareOutput.pdf");

      //Closing the document
      document.close();

最佳答案

代替

PDPageContentStream contentStream = new PDPageContentStream(document, page);

使用

PDPageContentStream contentStream = new PDPageContentStream(document, page, AppendMode.APPEND, true, true))

这样您的新内容流就会被附加。

但是我预料到另一个问题,您可能希望“突出显示”是透明的。看看this answer .

关于java - 突出显示文本 PDF Box Reader,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54060718/

相关文章:

java - Spring:从文件中读取属性为什么执行 Condition::match

java - Spring数据休息Bean验证国际化

比较多个文件的通用代码

c - 尝试检查一个二维字符数组中第二个二维字符数组中的关键字

java - 私有(private)静态最终实例的线程本地行为

java - 为任何 T Autowiring Class<T>

java - JButton 事件监听器故障

java - 如何将 EDT 的结果传回另一个线程?

java - 在正在运行的 GUI 环境中运行 Java 方法的最佳实践

javascript - 比较数组中图像的重复项