Ajout commentaires PDF, Page et Fenêtre

Modification recharger/charger => charger uniquement
Ajout affichage Vertical/Horizontal
Methodes de Tests pour Page et Fenêtre
This commit is contained in:
LucasV-IUT
2021-12-07 22:43:06 +01:00
parent 0668201bb8
commit 4439c4e82b
8 changed files with 187 additions and 223 deletions
+9 -20
View File
@@ -23,27 +23,19 @@ import java.io.IOException;
*/
public class PDF extends JPanel {
/**
* Espacement entre chaque page
*/
public static final int OFFSET_PAGES = 10; // px
/**
* Document PDF chargé
*/
/** Document chargé */
private final PDDocument document;
/**
* Les pages du PDF sous forme de JLabel contenant des images
*/
/** Les pages chargés */
private final Page[] pages;
/** Le zoom des pages du document */
private float zoom;
/**
* Crée un document PDF qui est capable d’être affiché dans une fenêtre
* Crée un document PDF affichable dans une fenêtre
*
* @param fichier Le fichier PDF que lon veut ouvrir
* @param fichier Le fichier que lon veut ouvrir
* @throws IllegalArgumentException si le fichier nexiste pas
*/
public PDF(File fichier, boolean vertical) throws IOException {
@@ -67,18 +59,15 @@ public class PDF extends JPanel {
e.printStackTrace();
}
}
System.out.println("PDF: Loaded successfully");
}
/**
* @return Le nombre de pages chargées
* Défini le zoom des pages du document
*
* @param zoom la nouvelle valeur du zoom (1.0f == 100%)
*/
public int getNbPages() {
return document.getNumberOfPages();
}
public void setZoom(float zoom) {
this.zoom = zoom;
loadPages();
}
}
+10 -28
View File
@@ -30,12 +30,6 @@ public class Page extends JLabel {
/** Zoom de la page (1.0f == 100 %, 0.5 == 50%, ...) */
private final float ZOOM;
/** Hauteur de la page */
private int hauteur;
/** Largeur de la page */
private int largeur;
/** Image de la page générée */
private final ImageIcon IMAGE_ICON;
@@ -74,15 +68,13 @@ public class Page extends JLabel {
public Page(PDDocument document, int index, float zoom) throws
IllegalArgumentException,
IOException {
if (!isValid(document, index)) {
throw new IllegalArgumentException();
}
if (!isValid(document, index)) throw new IllegalArgumentException();
this.INDEX = index;
this.ZOOM = zoom;
this.IMAGE_ICON = generateImage(document);
this.IMAGE_ICON = generateImage(document); // Génère la page
/* Render */
/* Fait le rendu de la page */
this.setIcon(IMAGE_ICON);
}
@@ -109,30 +101,20 @@ public class Page extends JLabel {
*/
private ImageIcon generateImage(PDDocument document) throws IOException {
/* Défini la qualité de limage par rapport au zoom */
final int DPI = 120;
int imageScale = (ZOOM > 1.0f) ? Image.SCALE_SMOOTH : Image.SCALE_FAST;
/* Crée une image de la page à afficher */
PDFRenderer pdfRenderer = new PDFRenderer(document);
BufferedImage bufferedImage = pdfRenderer.renderImageWithDPI(INDEX, DPI);
this.largeur = (int)(bufferedImage.getWidth() * ZOOM);
this.hauteur = (int)(bufferedImage.getHeight() * ZOOM);
/* Redimensionne l'image */
final int LARGEUR = (int)(bufferedImage.getWidth() * ZOOM);
final int HAUTEUR = (int)(bufferedImage.getHeight() * ZOOM);
return new ImageIcon(bufferedImage.getScaledInstance(largeur, hauteur,
/* Retourne limage à la bonne taille */
return new ImageIcon(bufferedImage.getScaledInstance(LARGEUR, HAUTEUR,
imageScale));
}
/**
* @return La hauteur de la page
*/
public int getHauteur() {
return hauteur;
}
/**
* @return La largeur de la page
*/
public int getLargeur() {
return largeur;
}
}