Hi List,
I am trying to compile and run the ReplaceString.java example. When I
try to run the jar I get the following message:
Exception in thread "main" java.lang.NoClassDefFoundError:
Here is my java [comments remove for posting]:
package mypdfbox;
import java.io.IOException;
import java.io.OutputStream;
import java.util.List;
import org.pdfbox.cos.COSArray;
import org.pdfbox.cos.COSString;
import org.pdfbox.exceptions.COSVisitorException;
import org.pdfbox.pdfparser.PDFStreamParser;
import org.pdfbox.pdfwriter.ContentStreamWriter;
import org.pdfbox.pdmodel.PDDocument;
import org.pdfbox.pdmodel.PDPage;
import org.pdfbox.pdmodel.common.PDStream;
import org.pdfbox.util.PDFOperator;
public class ReplaceString
{
public ReplaceString()
{
super();
}
public void doIt( String inputFile, String outputFile, String
strToFind, String message)
throws IOException, COSVisitorException
{
PDDocument doc = null;
try
{
doc = PDDocument.load( inputFile );
List pages = doc.getDocumentCatalog().getAllPages();
for( int i=0; i<pages.size(); i++ )
{
PDPage page = (PDPage)pages.get( i );
PDStream contents = page.getContents();
PDFStreamParser parser = new
PDFStreamParser(contents.getStream() );
parser.parse();
List tokens = parser.getTokens();
for( int j=0; j<tokens.size(); j++ )
{
Object next = tokens.get( j );
if( next instanceof PDFOperator )
{
PDFOperator op = (PDFOperator)next;
if( op.getOperation().equals( "Tj" ) )
{
COSString previous = (COSString)tokens.get(
j-1 );
String string = previous.getString();
string = string.replaceFirst( strToFind,
message );
previous.reset();
previous.append( string.getBytes() );
}
else if( op.getOperation().equals( "TJ" ) )
{
COSArray previous = (COSArray)tokens.get(
j-1 );
for( int k=0; k<previous.size(); k++ )
{
Object arrElement = previous.getObject(
k );
if( arrElement instanceof COSString )
{
COSString cosString =
(COSString)arrElement;
String string =
cosString.getString();
string = string.replaceFirst(
strToFind, message );
cosString.reset();
cosString.append( string.getBytes()
);
}
}
}
}
}
PDStream updatedStream = new PDStream(doc);
OutputStream out = updatedStream.createOutputStream();
ContentStreamWriter tokenWriter = new
ContentStreamWriter(out);
tokenWriter.writeTokens( tokens );
page.setContents( updatedStream );
}
doc.save( outputFile );
}
finally
{
if( doc != null )
{
doc.close();
}
}
}
public static void main(String[] args)
{
ReplaceString app = new ReplaceString();
try
{
if( args.length != 4 )
{
app.usage();
}
else
{
app.doIt( args[0], args[1], args[2], args[3] );
}
}
catch (Exception e)
{
e.printStackTrace();
}
}
private void usage()
{
System.err.println( "usage: " + this.getClass().getName() +
" <input-file> <output-file> <search-string> <Message>" );
}
}
Thanks,
Phil