diff --git a/.gitignore b/.gitignore
index 48ede76..92e998e 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,5 +1,7 @@
# Meta données de IntelliJ Idea
.idea/*
+LecteurPdfDoubleAffichage.iml
# Dossiers des fichiers compilés
-out/
\ No newline at end of file
+out/
+*.class
\ No newline at end of file
diff --git a/LecteurPdfDoubleAffichage.iml b/LecteurPdfDoubleAffichage.iml
index 37c5fcb..ec0d6bb 100644
--- a/LecteurPdfDoubleAffichage.iml
+++ b/LecteurPdfDoubleAffichage.iml
@@ -35,5 +35,7 @@
+
+
\ No newline at end of file
diff --git a/out/production/LecteurPdfDoubleAffichage/lecteur_pdf/affichage/Fenetre.class b/out/production/LecteurPdfDoubleAffichage/lecteur_pdf/affichage/Fenetre.class
index 84b20b0..f2e5abe 100644
Binary files a/out/production/LecteurPdfDoubleAffichage/lecteur_pdf/affichage/Fenetre.class and b/out/production/LecteurPdfDoubleAffichage/lecteur_pdf/affichage/Fenetre.class differ
diff --git a/out/production/LecteurPdfDoubleAffichage/lecteur_pdf/affichage/gestionFenetre.class b/out/production/LecteurPdfDoubleAffichage/lecteur_pdf/affichage/gestionFenetre.class
index a5653c2..305461e 100644
Binary files a/out/production/LecteurPdfDoubleAffichage/lecteur_pdf/affichage/gestionFenetre.class and b/out/production/LecteurPdfDoubleAffichage/lecteur_pdf/affichage/gestionFenetre.class differ
diff --git a/out/production/LecteurPdfDoubleAffichage/lecteur_pdf/document/Page.class b/out/production/LecteurPdfDoubleAffichage/lecteur_pdf/document/Page.class
index 3a3f7be..7327e5c 100644
Binary files a/out/production/LecteurPdfDoubleAffichage/lecteur_pdf/document/Page.class and b/out/production/LecteurPdfDoubleAffichage/lecteur_pdf/document/Page.class differ
diff --git a/out/production/LecteurPdfDoubleAffichage/lecteur_pdf/document/Pdf.class b/out/production/LecteurPdfDoubleAffichage/lecteur_pdf/document/Pdf.class
index 9d68731..386200a 100644
Binary files a/out/production/LecteurPdfDoubleAffichage/lecteur_pdf/document/Pdf.class and b/out/production/LecteurPdfDoubleAffichage/lecteur_pdf/document/Pdf.class differ
diff --git a/out/production/LecteurPdfDoubleAffichage/lecteur_pdf/menu/Menu.class b/out/production/LecteurPdfDoubleAffichage/lecteur_pdf/menu/Menu.class
index 52d40a3..2c4c6d8 100644
Binary files a/out/production/LecteurPdfDoubleAffichage/lecteur_pdf/menu/Menu.class and b/out/production/LecteurPdfDoubleAffichage/lecteur_pdf/menu/Menu.class differ
diff --git a/out/production/LecteurPdfDoubleAffichage/lecteur_pdf/menu/SelectionnerFichier.class b/out/production/LecteurPdfDoubleAffichage/lecteur_pdf/menu/SelectionnerFichier.class
index b696912..c054b0a 100644
Binary files a/out/production/LecteurPdfDoubleAffichage/lecteur_pdf/menu/SelectionnerFichier.class and b/out/production/LecteurPdfDoubleAffichage/lecteur_pdf/menu/SelectionnerFichier.class differ
diff --git a/out/test/LecteurPdfDoubleAffichage/lecteur_pdf/document/PageTest.class b/out/test/LecteurPdfDoubleAffichage/lecteur_pdf/document/PageTest.class
index 607ca96..e00e3d1 100644
Binary files a/out/test/LecteurPdfDoubleAffichage/lecteur_pdf/document/PageTest.class and b/out/test/LecteurPdfDoubleAffichage/lecteur_pdf/document/PageTest.class differ
diff --git a/out/test/LecteurPdfDoubleAffichage/lecteur_pdf/document/PdfTest.class b/out/test/LecteurPdfDoubleAffichage/lecteur_pdf/document/PdfTest.class
index 2b6cbd7..0ed7f4b 100644
Binary files a/out/test/LecteurPdfDoubleAffichage/lecteur_pdf/document/PdfTest.class and b/out/test/LecteurPdfDoubleAffichage/lecteur_pdf/document/PdfTest.class differ
diff --git a/src/lecteur_pdf/affichage/Fenetre.java b/src/lecteur_pdf/affichage/Fenetre.java
index 4d95c27..1940871 100644
--- a/src/lecteur_pdf/affichage/Fenetre.java
+++ b/src/lecteur_pdf/affichage/Fenetre.java
@@ -6,7 +6,7 @@
package lecteur_pdf.affichage;
-import lecteur_pdf.document.Pdf;
+import lecteur_pdf.document.PDF;
import lecteur_pdf.menu.Menu;
import javax.swing.*;
@@ -24,7 +24,7 @@ public class Fenetre {
private JFrame frame;
private String titre ;
private Menu menu = new Menu();
- private Pdf pdf ;
+ private PDF pdf ;
diff --git a/src/lecteur_pdf/affichage/gestionFenetre.java b/src/lecteur_pdf/affichage/gestionFenetre.java
index c8b6c45..ef2bed4 100644
--- a/src/lecteur_pdf/affichage/gestionFenetre.java
+++ b/src/lecteur_pdf/affichage/gestionFenetre.java
@@ -6,14 +6,8 @@
package lecteur_pdf.affichage;
-import lecteur_pdf.document.Pdf;
-import lecteur_pdf.menu.Menu;
-
-import java.io.IOException;
import java.util.ArrayList;
-import static lecteur_pdf.menu.SelectionnerFichier.ouvrirFichier;
-
/**
* classe de gestion des fenêtres
*
diff --git a/src/lecteur_pdf/document/Pdf.java b/src/lecteur_pdf/document/PDF.java
similarity index 52%
rename from src/lecteur_pdf/document/Pdf.java
rename to src/lecteur_pdf/document/PDF.java
index dd17983..5f92930 100644
--- a/src/lecteur_pdf/document/Pdf.java
+++ b/src/lecteur_pdf/document/PDF.java
@@ -1,5 +1,5 @@
/*
- * Pdf, 17/11/2021
+ * PDF, 17/11/2021
* IUT Rodez 2021, INFO2
* pas de copyright, aucun droits
*/
@@ -11,7 +11,6 @@ import org.apache.pdfbox.pdmodel.PDDocument;
import javax.swing.*;
import java.io.File;
import java.io.IOException;
-import java.util.ArrayList;
/**
* Définis virtuellement un fichier PDF
@@ -21,7 +20,7 @@ import java.util.ArrayList;
* @author Lucàs VABRE
* @author Noé VILLENEUVE
*/
-public class Pdf {
+public class PDF extends JPanel {
/**
* Espacement entre chaque page
@@ -34,16 +33,9 @@ public class Pdf {
private final PDDocument document;
/**
- * Le nombre de pages du document PDF
+ * Les pages du PDF sous forme de JLabel contenant des images
*/
- private int nbPages;
-
- /**
- * Les pages du PDF sous forme d’images
- */
- private final ArrayList pages;
-
- private int currentPositionY;
+ private final Page[] pages;
/**
* Crée un document PDF qui est capable d’être affiché dans une fenêtre
@@ -51,62 +43,46 @@ public class Pdf {
* @param fichier Le fichier PDF que l’on veut ouvrir
* @throws IllegalArgumentException si le fichier n’existe pas
*/
- public Pdf(File fichier) throws IOException {
+ public PDF(File fichier) throws IOException {
if (!fichier.exists()) {
throw new IllegalArgumentException();
}
- this.pages = new ArrayList<>();
- this.document = PDDocument.load(fichier);
- this.nbPages = 0;
+ // this.container = new JPanel();
- this.currentPositionY = 0;
+ this.document = PDDocument.load(fichier);
+ this.pages = new Page[document.getNumberOfPages()];
this.loadPages();
}
/**
- * Charge toutes les pages du document PDF et les stocke dans la liste
+ * Charge toutes les pages du document PDF et les stocke dans le tableau
*/
private void loadPages() {
- for (nbPages = 0; nbPages < document.getNumberOfPages(); nbPages++) {
+ int currentPositionY = 0;
+
+ for (int i = 0; i < pages.length; i++) {
try {
- addPage(new Page(document, nbPages));
+ /* Crée un JLabel de la page */
+ pages[i] = new Page(document, i);
+
+ /* Défini sa position dans le panel et l’ajoute au panel */
+ pages[i].setLocation(0, currentPositionY);
+ System.out.println(pages[i].getLocation());
+ currentPositionY += (pages[i].getHauteur() + OFFSET_PAGES);
+ this.add(pages[i]);
+
} catch (IOException e) {
e.printStackTrace();
}
}
}
- /**
- * Ajoute une page dans la liste
- *
- * @param page Page à ajouter dans la liste
- */
- private void addPage(Page page) {
- pages.add(page);
- page.setPosition(0, currentPositionY);
- currentPositionY += (page.getHauteur() + OFFSET_PAGES);
- }
-
- /**
- * @return un panel scrollable contenant toutes les pages du PDF
- */
- public JScrollPane getRenderView() {
- JPanel panel = new JPanel();
- JScrollPane scrollPane = new JScrollPane(panel);
-
- for (Page page : pages) {
- panel.add(page.getImage());
- }
-
- return scrollPane;
- }
-
/**
* @return Le nombre de pages chargées
*/
public int getNbPages() {
- return nbPages;
+ return document.getNumberOfPages();
}
}
diff --git a/src/lecteur_pdf/document/Page.java b/src/lecteur_pdf/document/Page.java
index b409b57..4bafcd3 100644
--- a/src/lecteur_pdf/document/Page.java
+++ b/src/lecteur_pdf/document/Page.java
@@ -23,17 +23,7 @@ import java.io.IOException;
* @author Lucàs VABRE
* @author Noé VILLENEUVE
*/
-public class Page {
-
- /**
- * Indice de la page
- */
- private final int index;
-
- /**
- * Label contenant l’image de la page
- */
- private final JLabel image;
+public class Page extends JLabel {
/**
* Hauteur de la page
@@ -45,16 +35,6 @@ public class Page {
*/
private int largeur;
- /**
- * Position X de la page dans son panel
- */
- private int positionX;
-
- /**
- * Position Y de la page dans son panel
- */
- private int positionY;
-
/**
* Crée une page virtuellement pour l’afficher avec java swing
*
@@ -70,11 +50,7 @@ public class Page {
throw new IllegalArgumentException();
}
- this.index = index;
- this.image = generateImage(document);
-
- positionX = 0;
- positionY = 0;
+ this.setIcon(generateImage(document, index));
}
/**
@@ -98,44 +74,22 @@ public class Page {
* @return JLabel contenant la page sous forme d’image
* @throws IOException En cas d’erreur de lecture
*/
- private JLabel generateImage(PDDocument document) throws IOException {
+ private ImageIcon generateImage(PDDocument document, int index) throws IOException {
PDFRenderer pdfRenderer = new PDFRenderer(document);
- BufferedImage bufferedImage = pdfRenderer.renderImageWithDPI(this.index,
+ BufferedImage bufferedImage = pdfRenderer.renderImageWithDPI(index,
300,
ImageType.RGB);
- this.largeur = bufferedImage.getWidth();
- this.hauteur = bufferedImage.getHeight();
+ this.largeur = bufferedImage.getWidth() / 2;
+ this.hauteur = bufferedImage.getHeight() / 2;
- ImageIcon icon = new ImageIcon(
+ System.out.println(largeur + "x" + hauteur);
+
+ final ImageIcon imageIcon = new ImageIcon(
bufferedImage.getScaledInstance(largeur, hauteur,
Image.SCALE_SMOOTH));
-
- JLabel result = new JLabel("", SwingConstants.LEADING);
- result.setIcon(icon);
-
- return result;
- }
-
- /**
- * Positionne la page dans son Panel
- *
- * @param positionX Position X de la page
- * @param positionY Position Y de la page
- */
- public void setPosition(int positionX, int positionY) {
- this.positionX = positionX;
- this.positionY = positionY;
-
- image.setLocation(positionX, positionY);
- }
-
- /**
- * @return Le label contenant l’image de la page
- */
- public JLabel getImage() {
- return image;
+ return imageIcon;
}
/**
diff --git a/src/lecteur_pdf/menu/Menu.java b/src/lecteur_pdf/menu/Menu.java
index ef26460..aedaa3e 100644
--- a/src/lecteur_pdf/menu/Menu.java
+++ b/src/lecteur_pdf/menu/Menu.java
@@ -10,7 +10,6 @@ import javax.swing.*;
import java.awt.event.ActionEvent;
import java.io.File;
import java.util.ArrayList;
-import lecteur_pdf.document.Pdf;
/**
* Classe pour afficher le Menu "Fichier" avec ses options
diff --git a/tests/lecteur_pdf/document/PDFTest.java b/tests/lecteur_pdf/document/PDFTest.java
new file mode 100644
index 0000000..5a5c58c
--- /dev/null
+++ b/tests/lecteur_pdf/document/PDFTest.java
@@ -0,0 +1,33 @@
+package lecteur_pdf.document;
+
+import javax.swing.*;
+import java.awt.*;
+import java.io.File;
+import java.io.IOException;
+
+class PDFTest {
+
+ /**
+ * TODO comment main
+ *
+ * @param args
+ */
+ public static void main(String[] args) throws IOException {
+ JFrame frame = new JFrame();
+
+ frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
+ frame.setLocationRelativeTo(null);
+
+ frame.setSize(300,300);
+ frame.setBackground(Color.gray);
+ frame.setVisible(true);
+
+ PDF doc = new PDF(new File("F:/test_pdf1.pdf"));
+
+ JScrollPane scrollPane = new JScrollPane(doc);
+ scrollPane.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
+ scrollPane.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED);
+ frame.getContentPane().add(scrollPane);
+ }
+
+}
\ No newline at end of file
diff --git a/tests/lecteur_pdf/document/PageTest.java b/tests/lecteur_pdf/document/PageTest.java
index a60b041..675f697 100644
--- a/tests/lecteur_pdf/document/PageTest.java
+++ b/tests/lecteur_pdf/document/PageTest.java
@@ -1,46 +1,18 @@
-/*
- * PageTest.java, 22/11/2021
- * IUT Rodez 2021-2022, INFO 2
- * pas de copyright, aucun droits
- */
-
package lecteur_pdf.document;
import org.junit.jupiter.api.Test;
import static org.junit.jupiter.api.Assertions.*;
-/**
- * Tests de la classe {@link Page}
- *
- * @author Léo FRANCH
- * @author Tristan NOGARET
- * @author Lucàs VABRE
- * @author Noé VILLENEUVE
- */
class PageTest {
- @Test
- void setPosition() {
- }
-
- @Test
- void getImage() {
- }
-
- @Test
- void testSetPosition() {
- }
-
- @Test
- void testGetImage() {
- }
-
@Test
void getHauteur() {
+ //TODO
}
@Test
void getLargeur() {
+ // TODO
}
}
\ No newline at end of file
diff --git a/tests/lecteur_pdf/document/PdfTest.java b/tests/lecteur_pdf/document/PdfTest.java
deleted file mode 100644
index ae17d4e..0000000
--- a/tests/lecteur_pdf/document/PdfTest.java
+++ /dev/null
@@ -1,46 +0,0 @@
-/*
- * PdfTest.java, 17/11/2021
- * IUT Rodez 2021-2021, INFO2
- * pas de copyright, aucun droits
- */
-
-package lecteur_pdf.document;
-
-import org.junit.jupiter.api.Test;
-
-import static org.junit.jupiter.api.Assertions.*;
-
-/**
- * Tests de la classe {@link Pdf}
- *
- * @author Léo FRANCH
- * @author Tristan NOGARET
- * @author Lucàs VABRE
- * @author Noé VILLENEUVE
- */
-class PdfTest {
-
- @Test
- void getNbPages() {
- }
-
- @Test
- void getRenderView() {
- }
-
- @Test
- void testGetRenderView() {
- }
-
- @Test
- void testGetNbPages() {
- }
-
- @Test
- void testGetRenderView1() {
- }
-
- @Test
- void testGetNbPages1() {
- }
-}
\ No newline at end of file