0

PagePanel でページを表示できません。PDF を表示しようとすると、「java.nio.BufferUnderflowException.」というエラーが発生します。

エラー:

com.sun.pdfview.decode.RunLengthDecode.decode(RunLengthDecode) の com.sun.pdfview.decode.RunLengthDecode.decode(RunLengthDecode.java:64) の java.nio.HeapByteBuffer.get (不明なソース) での java.nio.BufferUnderflowException .java:96) com.sun.pdfview.decode.PDFDecoder.decodeStream(PDFDecoder.java:134) com.sun.pdfview.PDFObject.decodeStream(PDFObject.java:347) com.sun.pdfview.PDFObject. getStream(PDFObject.java:261) com.sun.pdfview.PDFObject.getStream(PDFObject.java:298) com.sun.pdfview.PDFImage.getImage(PDFImage.java:306) com.sun.pdfview.PDFRenderer com.sun.pdfview の .drawImage(PDFRenderer.java:274)。com.sun.pdfview の PDFImageCmd.execute(PDFPage.java:665)。 BaseWatchable.run(BaseWatchable.java:101) java.lang.Thread.run (不明なソース) で

コード:

public class Test {

public static void setup() throws IOException {

    //set up the frame and panel
    JFrame frame = new JFrame("PDF Test");
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    PagePanel panel = new PagePanel();
    frame.add(panel);
    frame.pack();
    frame.setVisible(true);

    //load a pdf from a byte buffer
    File file = new File("C:\\testeImpressora\\Print\\pdf\\tutorial.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);

    // show the first page
    PDFPage page = pdffile.getPage(0);


    panel.showPage(page);

}

public static void main(String[] args) {
     SwingUtilities.invokeLater(new Runnable() {
            public void run() {
                try {
                    Test.setup();
                } catch (IOException ex) {
                    ex.printStackTrace();
                }
            }
        });

}}
4

1 に答える 1