本人一新手,初次在Netbeans6.5中使用PDFBox
在PDFBox的官网上看到它的特性里有这么一条:“Create images from PDF pages”,看了http://incubator.apache.org/pdfbox/commandlineutilities/PDFToImage.html一点都没弄清楚应该怎样使用这一特性请各位高手帮帮忙,小弟现在很急!
万分感谢!

解决方案 »

  1.   

    直接向classpath种设定PDFBox的lib就可以了。
      

  2.   

    谢谢这位大哥,已经添加了lib小弟只是不知道用什么样的代码实现这一功能
      

  3.   

    package org.apache.pdfbox;import javax.imageio.ImageIO;import org.apache.pdfbox.exceptions.InvalidPasswordException;import org.apache.pdfbox.pdmodel.PDDocument;
    import org.apache.pdfbox.util.PDFImageWriter;public class PDFToImage{    private static final String PASSWORD = "-password";
        private static final String START_PAGE = "-startPage";
        private static final String END_PAGE = "-endPage";
        private static final String IMAGE_TYPE = "-imageType";
        private static final String OUTPUT_PREFIX = "-outputPrefix";    private PDFToImage(){    }    public static void main( String[] args ) throws Exception {
            String password = "";
            String pdfFile = "c:/HelloWorld.pdf";
            String outputPrefix = "d:/1/";
            String outputfilename=null;
            String imageType = "jpg";
            int startPage = 1;
            int endPage = Integer.MAX_VALUE;
            for( int i=0; i<args.length; i++ ){
                if( args[i].equals( PASSWORD ) ){
                    i++;
                    if( i >= args.length ){
                        usage();
                    }
                    password = args[i];
                }else if( args[i].equals( START_PAGE ) ){
                    i++;
                    if( i >= args.length ){
                        usage();
                    }
                    startPage = Integer.parseInt( args[i] );
                } else if( args[i].equals( END_PAGE ) ){
                    i++;
                    if( i >= args.length ){
                        usage();
                    }
                    endPage = Integer.parseInt( args[i] );
                }else if( args[i].equals( IMAGE_TYPE ) ){
                    i++;
                    imageType = args[i];
                }else if( args[i].equals( OUTPUT_PREFIX ) ){
                    i++;
                    outputPrefix = args[i];
                }else{
                    if( pdfFile == null ){
                        pdfFile = args[i];
                    }
                }
            }        if( pdfFile == null ) {
                usage();
            }else{
                if(outputPrefix == null){
                    outputPrefix = pdfFile.substring( 0, pdfFile.lastIndexOf( '.' ));
                }
                outputfilename = pdfFile.substring( pdfFile.lastIndexOf("/"),pdfFile.lastIndexOf( '.' ));
                PDDocument document = null;
                try{
                    document = PDDocument.load( pdfFile );
                    //document.print();
                    if( document.isEncrypted() ){
                        try{
                            document.decrypt( password );
                        }catch( InvalidPasswordException e ){
                            if( args.length == 4 ){//they supplied the wrong password
                                System.err.println( "Error: The supplied password is incorrect." );
                                System.exit( 2 );
                            }else{
                                //they didn't suppply a password and the default of "" was wrong.
                                System.err.println( "Error: The document is encrypted." );
                                usage();
                            }
                        }
                    } //Make the call
    PDFImageWriter W = new PDFImageWriter();
    W.WriteImage(document, imageType, password, startPage, endPage, outputPrefix,outputfilename);
        } catch(Exception e){
        System.err.println( e);
        }finally{
    if( document != null ){
        document.close();
    }
    }
        }
        }    /**
         * This will print the usage requirements and exit.
         */
        private static void usage() {
            System.err.println( "Usage: java org.apache.pdfbox.PDFToImage [OPTIONS] <PDF file>\n" +
                "  -password  <password>          Password to decrypt document\n" +
                "  -imageType <image type>        (" + getImageFormats() + ")\n" +
                "  -outputPrefix <output prefix>  Filename prefix for image files\n" +
                "  -startPage <number>          The first page to start extraction(1 based)\n" +
                "  -endPage <number>            The last page to extract(inclusive)\n" +
                "  <PDF file>                   The PDF document to use\n"
                );
            System.exit( 1 );
        }    private static String getImageFormats(){
            StringBuffer retval = new StringBuffer();
            String[] formats = ImageIO.getReaderFormatNames();
            for( int i=0; i<formats.length; i++ ){
                retval.append( formats[i] );
                if( i+1<formats.length ){
                    retval.append( "," );
                }
            }
            return retval.toString();
        }
    }
      

  4.   

    楼上的我的pdfbox怎么没有PDFImageWriter这个类啊 
      

  5.   

    pdfbox0.8以后的版本(包含0.8)才有PDFImageWriter这个类,以前版本是不包含这个类的