Advertisement
Guest User

ParsePDToken

a guest
Jun 23rd, 2016
317
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 2.55 KB | None | 0 0
  1. import org.apache.pdfbox.contentstream.operator.Operator;
  2. import org.apache.pdfbox.pdfparser.PDFStreamParser;
  3. import org.apache.pdfbox.pdmodel.PDDocument;
  4. import org.apache.pdfbox.pdmodel.PDPage;
  5.  
  6. import java.io.File;
  7. import java.util.ArrayList;
  8. import java.util.List;
  9.  
  10. public class ParsePDTokens {
  11.     public static void printContent(String pdfFile, int pageNumber) throws Exception {
  12.  
  13.         PDDocument doc = PDDocument.load(new File(pdfFile));
  14.         PDPage page = doc.getPage(pageNumber);
  15.         PDFStreamParser parser = new PDFStreamParser(page);
  16.         parser.parse();
  17.         List<Object> tokens = parser.getTokens();
  18.         int lines=0;
  19.         int curves=0;
  20.         int rectangles=0;
  21.         int doOps=0;
  22.         int clipPaths=0;
  23.         int noOps=0;
  24.         int closeLines=0;
  25.         int index=0;
  26.         for (Object token:tokens){
  27.             if (token instanceof Operator) {
  28.                 Operator op=(Operator) token;
  29.                 if ("cm".equals(op.getName())){
  30.                     System.out.println("<index>: "+index);
  31.                     System.out.println("-------------------------");
  32.                     for (int i=6; i>0; i--){
  33.                         System.out.println(tokens.get(index-i));
  34.                     }
  35.                     System.out.println("-------------------------");
  36.                 }
  37.                 if ("h".equals(op.getName()))
  38.                     closeLines+=1;
  39.                 else if ("n".equals(op.getName()))
  40.                     noOps+=1;
  41.                 else if ("do".equals(op.getName()))
  42.                     doOps+=1;
  43.                 else if ("W".equals(op.getName())|| "W*".equals(op.getName()))
  44.                     clipPaths+=1;
  45.                 else if ("l".equals(op.getName()))
  46.                     lines+=1;
  47.                 else if ("c".equals(op.getName())||"y".equals(op.getName()) ||"v".equals(op.getName())){
  48.                     System.out.println("[index]: "+index);
  49.                     curves+=1;
  50.                 }
  51.                 else if ("re".equals(op.getName()))
  52.                     rectangles+=1;
  53.             }
  54.             index++;
  55.         }
  56.  
  57.         System.out.println(
  58.                 "lines: "+lines+", closeLines: "+closeLines+", curves: "+
  59.                 curves+", rectangles: "+rectangles+", doops: "+doOps+
  60.                         ", clipPaths: "+clipPaths+", noOps: "+noOps);
  61.  
  62.     }
  63.  
  64.  
  65.  
  66.     public static void main(String[] args) throws Exception{
  67.         String loc=new DataLocation().pdLoc;
  68.         printContent(loc,new DataLocation().pdPageNumber);
  69.     }
  70.  
  71.  
  72. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement