【定位:PDF文件定位關鍵字所在坐標和頁碼】


iText簡介:

iText是著名的開放源碼的站點sourceforge一個項目,是用於生成PDF文檔的一個java類庫。通過iText不僅可以生成PDF或rtf的文檔,而且可以將XML、Html文件轉化為PDF文件。 iText的安裝非常方便,下載iText.jar文件后,只需要在系統的CLASSPATH中加入iText.jar的路徑,在程序中就可以使用iText類庫了。

 

iText使用版本:5.5.4

 

方法簡介:根據關鍵字keyword定位出keyword所在頁和具體坐標,在keyword所在位置處可以插入圖片文字==

 

 1 import java.io.IOException;
 2 import com.itextpdf.awt.geom.Rectangle2D.Float;
 3 import com.itextpdf.text.pdf.PdfReader;
 4 import com.itextpdf.text.pdf.parser.ImageRenderInfo;
 5 import com.itextpdf.text.pdf.parser.PdfReaderContentParser;
 6 import com.itextpdf.text.pdf.parser.RenderListener;
 7 import com.itextpdf.text.pdf.parser.TextRenderInfo;
 8 
 9 public class Demo
10 {
11     // 定義關鍵字
12     private static String KEY_WORD = "KEYWORD";
13     // 定義返回值
14     private static float[] resu = null;
15     // 定義返回頁碼
16     private static int i = 0;
17 
18     /*
19      * 返回關鍵字所在的坐標和頁數 float[0] >> X float[1] >> Y float[2] >> page
20      */
21     private float[] getKeyWords(String filePath)
22     {
23         try
24         {
25             PdfReader pdfReader = new PdfReader(filePath);
26             int pageNum = pdfReader.getNumberOfPages();
27             PdfReaderContentParser pdfReaderContentParser = new PdfReaderContentParser(
28                     pdfReader);
29 
30             // 下標從1開始
31             for (i = 1; i < pageNum; i++)
32             {
33                 pdfReaderContentParser.processContent(i, new RenderListener()
34                 {
35 
36                     @Override
37                     public void renderText(TextRenderInfo textRenderInfo)
38                     {
39                         String text = textRenderInfo.getText();
40                         if (null != text && text.contains(KEY_WORD))
41                         {
42                             Float boundingRectange = textRenderInfo
43                                     .getBaseline().getBoundingRectange();
44                             resu = new float[3];
45                             resu[0] = boundingRectange.x;
46                             resu[1] = boundingRectange.y;
47                             resu[2] = i;
48                         }
49                     }
50 
51                     @Override
52                     public void renderImage(ImageRenderInfo arg0)
53                     {
54                         // TODO Auto-generated method stub
55 
56                     }
57 
58                     @Override
59                     public void endTextBlock()
60                     {
61                         // TODO Auto-generated method stub
62 
63                     }
64 
65                     @Override
66                     public void beginTextBlock()
67                     {
68                         // TODO Auto-generated method stub
69 
70                     }
71                 });
72             }
73         } catch (IOException e)
74         {
75             // TODO Auto-generated catch block
76             e.printStackTrace();
77         }
78         return resu;
79     }
80 
81 }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM