1 31 package org.pdfbox.examples.util; 32 33 import org.pdfbox.pdfparser.PDFStreamParser; 34 import org.pdfbox.pdfwriter.ContentStreamWriter; 35 36 import org.pdfbox.pdmodel.PDDocument; 37 import org.pdfbox.pdmodel.PDPage; 38 import org.pdfbox.pdmodel.common.PDStream; 39 import org.pdfbox.util.PDFOperator; 40 41 import java.util.ArrayList ; 42 import java.util.List ; 43 44 52 public class RemoveAllText 53 { 54 57 private RemoveAllText() 58 { 59 } 61 62 69 public static void main( String [] args ) throws Exception 70 { 71 if( args.length != 2 ) 72 { 73 usage(); 74 } 75 else 76 { 77 PDDocument document = null; 78 try 79 { 80 document = PDDocument.load( args[0] ); 81 if( document.isEncrypted() ) 82 { 83 System.err.println( "Error: Encrypted documents are not supported for this example." ); 84 System.exit( 1 ); 85 } 86 List allPages = document.getDocumentCatalog().getAllPages(); 87 for( int i=0; i<allPages.size(); i++ ) 88 { 89 PDPage page = (PDPage)allPages.get( i ); 90 PDFStreamParser parser = new PDFStreamParser(page.getContents()); 91 parser.parse(); 92 List tokens = parser.getTokens(); 93 List newTokens = new ArrayList (); 94 for( int j=0; j<tokens.size(); j++) 95 { 96 Object token = tokens.get( j ); 97 if( token instanceof PDFOperator ) 98 { 99 PDFOperator op = (PDFOperator)token; 100 if( op.getOperation().equals( "TJ") || op.getOperation().equals( "Tj" )) 101 { 102 newTokens.remove( newTokens.size() -1 ); 104 continue; 105 } 106 } 107 newTokens.add( token ); 108 109 } 110 PDStream newContents = new PDStream( document ); 111 ContentStreamWriter writer = new ContentStreamWriter( newContents.createOutputStream() ); 112 writer.writeTokens( newTokens ); 113 newContents.addCompression(); 114 page.setContents( newContents ); 115 } 116 document.save( args[1] ); 117 } 118 finally 119 { 120 if( document != null ) 121 { 122 document.close(); 123 } 124 } 125 } 126 } 127 128 131 private static void usage() 132 { 133 System.err.println( "Usage: java org.pdfbox.examples.pdmodel.RemoveAllText <input-pdf> <output-pdf>" ); 134 } 135 136 } | Popular Tags |