Hi,
digging through some things I implemented this tiny class to view some of the images inside of a pdf file.
Best regards,
Carsten
package com.lowagie.tools;

import java.io.*;

import java.awt.*;
import javax.swing.*;
import javax.swing.event.*;

import com.lowagie.text.pdf.*;

public class ViewXRefImages
    extends JFrame {
  JPanel jPanel1 = new JPanel();
  BorderLayout borderLayout1 = new BorderLayout();
  JLabel jLabel1 = new JLabel();
  int picturenumber = 1;
  private void jbInit() throws Exception {
    this.getContentPane().setLayout(borderLayout1);
    jPanel1.setLayout(borderLayout2);
    this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    jLabel1.setHorizontalAlignment(SwingConstants.CENTER);
    jLabel1.setText("images");
    jPanel2.setLayout(cardLayout1);
    jPanel3.setLayout(borderLayout3);
    jSpinner1.addChangeListener(new
                                ViewXRefImages_jSpinner1_propertyChangeAdapter(this));
    jPanel2.setBorder(BorderFactory.createEtchedBorder());
    this.getContentPane().add(jPanel1, java.awt.BorderLayout.CENTER);
    jPanel1.add(jPanel2, java.awt.BorderLayout.CENTER);
    jPanel3.add(jSpinner1, java.awt.BorderLayout.CENTER);
    jPanel3.add(jLabel1, java.awt.BorderLayout.NORTH);
    jPanel1.add(jPanel3, java.awt.BorderLayout.NORTH);
  }

  public ViewXRefImages() throws HeadlessException {
    try {
      jbInit();
    }
    catch (Exception ex) {
      ex.printStackTrace();
    }
  }

  public ViewXRefImages(String filename) {
    this();
    PdfReader reader = null;
    try {
      reader = new PdfReader(filename);
      for (int i = 0; i < reader.getXrefSize(); i++) {
        PdfObject pdfobj = reader.getPdfObject(i);
        if (pdfobj != null) {
          System.out.println("[" + i + "] " + pdfobj.toString());

          if (pdfobj.isStream()) {
            PdfStream pdfdict = (PdfStream) pdfobj;
            System.out.println("str:" +
                               pdfdict.getKeys());
            System.out.println("filter:" +
                               pdfdict.get(PdfName.FILTER));
            System.out.println("length:" +
                               pdfdict.get(PdfName.LENGTH));
            PdfObject pdfsubtype = pdfdict.get(PdfName.SUBTYPE);
            if (pdfsubtype == null) {
              continue;
            }
            System.out.println("subtype:" +
                               pdfsubtype);
            if (!pdfsubtype.toString().equals(PdfName.IMAGE.toString())) {
              continue;
            }
            System.out.println("height:" +
                               pdfdict.get(PdfName.HEIGHT));
            System.out.println("width:" +
                               pdfdict.get(PdfName.WIDTH));
            System.out.println("bitspercomponent:" +
                               pdfdict.get(PdfName.BITSPERCOMPONENT));
            byte[] barr = PdfReader.getStreamBytesRaw( (PRStream) pdfdict);
            InputStream is = new ByteArrayInputStream(barr);
            try {
              ByteArrayOutputStream bout = new ByteArrayOutputStream();
              int aByte;
              while ( (aByte = is.read()) >= 0) {
                bout.write(aByte);
              }
              java.awt.Image im = Toolkit.getDefaultToolkit().createImage(barr);
              javax.swing.ImageIcon ii = new javax.swing.ImageIcon(im);

              JLabel jLabel1 = new JLabel();
              jLabel1.setIcon(ii);
              jPanel2.add(jLabel1, "" + picturenumber++);
            }
            catch (Exception ex1) {
            }
          }
        }
      }
    }
    catch (IOException ex) {
      ex.printStackTrace();
    }
  }

  JPanel jPanel2 = new JPanel();
  BorderLayout borderLayout2 = new BorderLayout();
  CardLayout cardLayout1 = new CardLayout();
  JPanel jPanel3 = new JPanel();
  JSpinner jSpinner1 = new JSpinner();
  BorderLayout borderLayout3 = new BorderLayout();
  SpinnerModel spinnerModel1 = jSpinner1.getModel();

  public static void main(String[] args) {
    ViewXRefImages frame = new ViewXRefImages(args[0]);
    frame.pack();
    com.lowagie.tools.Toolbox.centerFrame(frame);
    frame.setVisible(true);
  }

  public void jSpinner1_propertyChange(ChangeEvent evt) {
    int blatt = Integer.parseInt(jSpinner1.getNextValue().toString());
    System.out.println("new:" + blatt);
    this.cardLayout1.show(jPanel2, "" + blatt);
    jPanel2.repaint();
  }
}

class ViewXRefImages_jSpinner1_propertyChangeAdapter
    implements javax.swing.event.ChangeListener {
  private ViewXRefImages adaptee;
  ViewXRefImages_jSpinner1_propertyChangeAdapter(ViewXRefImages adaptee) {
    this.adaptee = adaptee;
  }

  public void stateChanged(ChangeEvent e) {
    adaptee.jSpinner1_propertyChange(e);
  }
}

Reply via email to