Embarquer un fichier PDF dans un .jar
Salut à tous,
je suis coincé sur un petit problème java qui m’avait l’air simple finalement me donne du fil à retordre.
Je m’explique rapidement. J’ai créé une application java pour embarquer et afficher un fichier pdf. J’ai utilisé la librairie ICEPDF pour le faire. Quand j’exécute le programme cela se fait sans problème. Il affiche le pdf sans faute. C’est lorsque je crée le jar et que je l’exécute, Il ne voit pas le fichier PDF.
Mon soucis est comment embarquer le PDF dans le jar ? en fait comment créer un chemin relatif de sorte à ce que le fichier soit embarqué dans le jar sans problème.
Voici mon code :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85
| public static void main(String[] args) {
// TODO Auto-generated method stub
File fdp1 = new File("pdf" + File.separator + "AWSAction.pdf");
fdp1.getAbsolutePath().toString();
System.out.println(fdp1.getAbsolutePath().toString());
String className=ViewCtrl.class.getName().replaceAll("\\.", "/" )+".class";
URL classPath=ViewCtrl.class.getClassLoader().getResource(className);
File f =new File(classPath.getPath());
String currentFolder = System.getProperty("user.dir");
File fdp = new File(currentFolder + "//..//AWSAction.pdf");
SwingController controller = new SwingController();
controller.setIsEmbeddedComponent(true);
Properties props=new Properties();
props.setProperty(PropertiesManager.PROPERTY_SHOW_UTILITY_SAVE,"false");
ResourceBundle.getBundle(PropertiesManager.DEFAULT_MESSAGE_BUNDLE));
org.main.common.SwingViewBuilder factory = new org.main.common.SwingViewBuilder(controller);
JPanel viewerComponetPanel = factory.buildViewerPanel();
controller.getDocumentViewController().setAnnotationCallback(new org.icepdf.ri.common.MyAnnotationCallback(controller
.getDocumentViewController()));
JFrame applicationFrame = new JFrame();
applicationFrame.setDefaultCloseOperation(WindowConstants.DO_NOTHING_ON_CLOSE);
applicationFrame.setIconImage(new ImageIcon(Images.get("icepdf-app-icon-64x64.png")).getImage());
applicationFrame.setJMenuBar(getjMenuBar());
applicationFrame.add(viewerComponetPanel);
// Ouverture du fichier ici
controller.openDocument(fdp1.toString());
applicationFrame.pack();
applicationFrame.setVisible(true);
applicationFrame.addWindowListener(new WindowListener() {
@Override
public void windowOpened(WindowEvent e) {
// TODO Auto-generated method stub
}
@Override
public void windowIconified(WindowEvent e) {
// TODO Auto-generated method stub
}
@Override
public void windowDeiconified(WindowEvent e) {
// TODO Auto-generated method stub
}
@Override
public void windowDeactivated(WindowEvent e) {
// TODO Auto-generated method stub
}
@Override
public void windowClosing(WindowEvent e) {
// TODO Auto-generated method stub
int reponse = JOptionPane.showConfirmDialog(null, "Voulez-vous vraiment quitter", "Confirmation", JOptionPane.YES_NO_OPTION);
if (reponse == JOptionPane.YES_OPTION){
System.exit(0);
}else if (reponse == JOptionPane.NO_OPTION){
return;
}
}
@Override
public void windowClosed(WindowEvent e) {
// TODO Auto-generated method stub
}
@Override
public void windowActivated(WindowEvent e) {
// TODO Auto-generated method stub
}
});
} |
Merci d'avance !