技能get!如何使用PDF查找关键字

PDF文件给人们带来了极大的方便,很多时候当我们在阅读和浏览PDF文档的时候,会觉得内容很多而且比较枯燥,在短时间内难以找到我们需要的内容。如果是用眼睛慢慢看的话不仅浪费时间浪费精力,还会产生视觉疲劳,这时候我们就想有个word文档中的查找功能帮助我们快速找到需要的内容。那么如何在PDF文件中快速查找关键字呢?这个方法后悔没早点知道,下面就一起来看看吧。在这里插入图片描述
  具体步骤如下:
  第一步,下载并且运行一个PDF编辑器,然后点击“打开更多文件”,打开需要进行查找操作的PDF 文件。小编使用的是云橙编辑器,下载地址:https://www.yunchengoa.com/ycpdfbianji在这里插入图片描述
  第二步,将PDF文件打开后,点击软件界面里的“编辑”选项,选择里面的“查找”功能,或者直接点击界面右上角的“查找”,软件右侧就会出现查找界面。在这里插入图片描述
  第三步,在搜索界面中直接输入需要进行查找的关键字。在这里插入图片描述
  第四步,点击一个倒三角的按钮,设置关键词的格式以及确定查找范围,然后按回车Enter键,云橙PDF编辑器就会对输入的关键词进行查找,查找到的结果会高亮显示。在这里插入图片描述
  以上就是PDF编辑器使用查找功能搜寻关键字的操作方法,是不是很简单呢?除此之外,PDF编辑器还具备许多有用的PDF文件编辑功能,我们一起探索吧!

要获取 PDF 关键字的坐标,可以使用 Apache PDFBox 库。以下是获取 PDF 关键字坐标的示例代码: ```java import java.io.File; import java.io.IOException; import java.util.List; import org.apache.pdfbox.cos.COSArray; import org.apache.pdfbox.cos.COSBase; import org.apache.pdfbox.cos.COSDictionary; import org.apache.pdfbox.cos.COSName; import org.apache.pdfbox.pdmodel.PDDocument; import org.apache.pdfbox.pdmodel.PDPage; import org.apache.pdfbox.pdmodel.interactive.annotation.PDAnnotation; import org.apache.pdfbox.pdmodel.interactive.annotation.PDAnnotationTextMarkup; import org.apache.pdfbox.pdmodel.interactive.annotation.PDAnnotationTextMarkup.MarkupTypeEnum; import org.apache.pdfbox.pdmodel.interactive.annotation.PDAnnotationTextMarkup.QuadPoints; public class PDFKeywordCoordinates { public static void main(String[] args) throws IOException { String filePath = "example.pdf"; String keyword = "example"; PDDocument document = PDDocument.load(new File(filePath)); List<PDPage> pages = document.getDocumentCatalog().getAllPages(); for (PDPage page : pages) { List<PDAnnotation> annotations = page.getAnnotations(); for (PDAnnotation annotation : annotations) { if (annotation instanceof PDAnnotationTextMarkup) { PDAnnotationTextMarkup markup = (PDAnnotationTextMarkup) annotation; if (markup.getMarkupType() == MarkupTypeEnum.HIGHLIGHT) { COSDictionary dict = markup.getCOSObject(); COSArray quadPointsArray = (COSArray) dict.getDictionaryObject(COSName.getPDFName("QuadPoints")); for (int i = 0; i < quadPointsArray.size(); i += 8) { float x1 = quadPointsArray.getFloat(i); float y1 = quadPointsArray.getFloat(i + 1); float x2 = quadPointsArray.getFloat(i + 2); float y2 = quadPointsArray.getFloat(i + 3); float x3 = quadPointsArray.getFloat(i + 4); float y3 = quadPointsArray.getFloat(i + 5); float x4 = quadPointsArray.getFloat(i + 6); float y4 = quadPointsArray.getFloat(i + 7); if (containsKeyword(page, keyword, x1, y1, x2, y2, x3, y3, x4, y4)) { System.out.println("Keyword '" + keyword + "' found on page " + (pages.indexOf(page) + 1) + " at (" + x1 + "," + y1 + ") (" + x2 + "," + y2 + ") (" + x3 + "," + y3 + ") (" + x4 + "," + y4 + ")"); } } } } } } document.close(); } private static boolean containsKeyword(PDPage page, String keyword, float x1, float y1, float x2, float y2, float x3, float y3, float x4, float y4) throws IOException { StringBuilder sb = new StringBuilder(); sb.append("q\n"); sb.append(x1).append(' ').append(y1).append(" m\n"); sb.append(x2).append(' ').append(y2).append(" l\n"); sb.append(x3).append(' ').append(y3).append(" l\n"); sb.append(x4).append(' ').append(y4).append(" l\n"); sb.append("h\n"); sb.append("W* n\n"); sb.append("BT\n"); sb.append("/Helv 12 Tf\n"); sb.append("0 g\n"); sb.append("1 0 0 1 ").append(x1).append(' ').append(y1).append(" Tm\n"); sb.append("(").append(keyword).append(") Tj\n"); sb.append("ET\n"); sb.append("Q\n"); return page.getContents().stream().anyMatch(content -> content.getString().contains(sb.toString())); } } ``` 在此示例代码中,我们首先加载 PDF 文件并获取所有页面。然后,我们遍历每个页面的所有注释,并查找类型为“高亮”的注释。对于每个高亮注释,我们获取该注释的四个顶点坐标,并检查关键字是否包含在其中。如果找到匹配项,则打印关键字的坐标。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值