rvation.jhove.jhove-apps.1.16.7.source-code.PDump Maven / Gradle / Ivy
/**********************************************************************
* PDump - JSTOR/Harvard Object Validation Environment
* Copyright 2003 by JSTOR and the President and Fellows of Harvard College
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as published by
* the Free Software Foundation; either version 2 of the License, or (at
* your option) any later version.
*
* This program is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
* USA
**********************************************************************/
import edu.harvard.hul.ois.jhove.*;
import edu.harvard.hul.ois.jhove.module.pdf.*;
import java.io.*;
/**
* Dump contents of PDF file in human-readable format.
*/
public class PDump
extends Dump
{
/******************************************************************
* MAIN ENTRY POINT.
******************************************************************/
/**
* Main entry point.
* @param args Command line arguments
*/
public static void main (String [] args)
{
if (args.length < 1) {
System.err.println ("usage: java PDump file");
System.exit (-1);
}
try {
RandomAccessFile file = new RandomAccessFile (args[0], "r");
Tokenizer tokenizer = new FileTokenizer (file);
Token token = null;
long offset = 0;
while ((token = tokenizer.getNext ()) != null) {
System.out.print (leading (offset, 8) + offset + ": ");
if (token instanceof ArrayEnd) {
System.out.println ("ArrayEnd");
}
else if (token instanceof ArrayStart) {
System.out.println ("ArrayStart");
}
else if (token instanceof Comment) {
System.out.println ("Comment \"" +
((Comment) token).getValue () + "\"");
}
else if (token instanceof DictionaryEnd) {
System.out.println ("DictionaryEnd");
}
else if (token instanceof DictionaryStart) {
System.out.println ("DictionaryStart");
}
// else if (token instanceof Hexadecimal) {
// System.out.println ("Hexadecimal[" +
// (((Hexadecimal) token).isPDFDocEncoding () ?
// "PDF" : "UTF-16") + "] \"" +
// ((Hexadecimal) token).getValue () +
// "\"");
// }
else if (token instanceof Keyword) {
System.out.println ("Keyword \"" +
((Keyword) token).getValue () + "\"");
}
else if (token instanceof Literal) {
System.out.println ("Literal[" +
(((Literal)token).isPDFDocEncoding () ?
"PDF" : "UTF-16") + "] \"" +
((Literal) token).getValue () + "\"");
}
else if (token instanceof Name) {
System.out.println ("Name \"" +
((Name) token).getValue () + "\"");
}
else if (token instanceof Numeric) {
Numeric numeric = (Numeric) token;
if (numeric.isReal ()) {
System.out.println ("Numeric " + numeric.getValue ());
}
else {
System.out.println ("Numeric " +
numeric.getIntegerValue ());
}
}
else if (token instanceof Stream) {
System.out.println ("Stream " +
((Stream) token).getLength ());
}
else {
System.out.println (token);
}
offset = tokenizer.getOffset ();
}
}
catch (Exception e) {
e.printStackTrace (System.err);
System.exit (-2);
}
}
}