源码:
import java.awt.Image;  
import java.awt.Rectangle;  
import java.awt.image.BufferedImage;  
 
import java.io.File;  
import java.io.FileOutputStream;  
import java.io.IOException;  
import java.io.RandomAccessFile;  
import java.nio.ByteBuffer;  
import java.nio.channels.FileChannel;  
import javax.swing.SwingUtilities;  
import com.sun.image.codec.jpeg.JPEGCodec;  
import com.sun.image.codec.jpeg.JPEGImageEncoder;  
import com.sun.pdfview.PDFFile;  
import com.sun.pdfview.PDFPage;  
 
public class PdfToJpg {  
    public static void setup() throws IOException {  
 
        // load a pdf from a byte buffer  
        File file = new File("D:\\资料\\项目经理学习\\项目管理知识体系指南.PMBOK2008CN.pdf");  
        RandomAccessFile raf = new RandomAccessFile(file, "r");  
        FileChannel channel = raf.getChannel();  
        ByteBuffer buf = channel.map(FileChannel.MapMode.READ_ONLY, 0, channel  
                .size());  
        PDFFile pdffile = new PDFFile(buf);  
 
        System.out.println("页数: " + pdffile.getNumPages());  
 
        String getPdfFilePath = System.getProperty("user.dir")+"\\pdfPicFile";
       
        System.out.println("getPdfFilePath is  :"+getPdfFilePath);
       
        for (int i = 1; i <= pdffile.getNumPages(); i++) {  
            // draw the first page to an image  
            PDFPage page = pdffile.getPage(17);  
 
            // get the width and height for the doc at the default zoom  
            Rectangle rect = new Rectangle(0, 0, (int) page.getBBox()  
                    .getWidth(), (int) page.getBBox().getHeight());  
 
            // generate the image  
            Image img = page.getImage(rect.width, rect.height, // width &  
                                                                // height  
                    rect, // clip rect  
                    null, // null for the ImageObserver  
                    true, // fill background with white  
                    true // block until drawing is done  
                    );  
 
            BufferedImage tag = new BufferedImage(rect.width, rect.height,  
                    BufferedImage.TYPE_INT_RGB);  
            tag.getGraphics().drawImage(img, 0, 0, rect.width, rect.height,  
                    null); 
           
          
            //输出到文件流
            FileOutputStream out = new FileOutputStream( getPdfFilePath+"\\项目管理知识体系指南.PMBOK2008CN" + i + ".jpg"); 
            System.out.println("成功保存图片到 :  " +getPdfFilePath+"\\项目管理知识体系指南.PMBOK2008CN" + i + ".jpg");
           
            JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(out);  
            encoder.encode(tag); // JPEG编码  
 
            out.close();  
        }  
 
        // show the image in a frame  
        // JFrame frame = new JFrame("PDF Test");  
        // frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);  
        // frame.add(new JLabel(new ImageIcon(img)));  
        // frame.pack();  
        // frame.setVisible(true);  
    }  
 
    public static void main(final String[] args) {  
        SwingUtilities.invokeLater(new Runnable() {  
            public void run() {  
                try {  
                    PdfToJpg.setup();  
                } catch (IOException ex) {  
                    ex.printStackTrace();  
                }  
            }  
        });  
    }  
 

报如下错误:com.sun.pdfview.PDFParseException: Expected 'xref' at start of table
at com.sun.pdfview.PDFFile.readTrailer(PDFFile.java:974)
at com.sun.pdfview.PDFFile.parseFile(PDFFile.java:1175)
at com.sun.pdfview.PDFFile.<init>(PDFFile.java:126)
at com.sun.pdfview.PDFFile.<init>(PDFFile.java:102)
at PdfToJpg.setup(PdfToJpg.java:27)
at PdfToJpg$1.run(PdfToJpg.java:80)
at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:209)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:461)
at java.awt.EventDispatchThread.pumpOneEventForHierarchy(EventDispatchThread.java:242)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:163)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:157)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:149)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:110)
这个错误是什么原因。