Edition de Page.java et Pdf.java

Besoin de faire les tests unitaires
This commit is contained in:
LucasV-IUT
2021-11-22 23:06:21 +01:00
parent 68bae635da
commit 3693d4b2c6
4 changed files with 201 additions and 49 deletions
+99 -27
View File
@@ -7,76 +7,148 @@
package lecteur_pdf.document;
import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.rendering.ImageType;
import org.apache.pdfbox.rendering.PDFRenderer;
import javax.swing.*;
import java.awt.*;
import java.awt.image.BufferedImage;
import java.io.IOException;
/**
* TODO class comment
* Page générée virtuellement pour laffichage avec java swing
*
* @author Léo FRANCH
* @author Tristan NOGARET
* @author Lucàs VABRE
* @author Noé VILLENEUVE
* @version 1.0
*/
public class Page {
/**
* TODO A compléter
* Indice de la page
*/
private int index;
private final int index;
/**
* TODO A compléter
* Label contenant limage de la page
*/
private JLabel image;
private final JLabel image;
/**
* TODO A compléter
* Hauteur de la page
*/
private int hauteur;
/**
* TODO A compléter
* Largeur de la page
*/
private int largeur;
/**
* TODO A compléter
* @param document
* @param index
* @throws IllegalArgumentException
* Position X de la page dans son panel
*/
public Page(PDDocument document, int index) throws IllegalArgumentException {
if (!isValid(document, index)) throw new IllegalArgumentException();
// TODO
private int positionX;
/**
* Position Y de la page dans son panel
*/
private int positionY;
/**
* Crée une page virtuellement pour lafficher avec java swing
*
* @param document Document pdf
* @param index indice de la page
* @throws IllegalArgumentException Si les arguments ne sont pas valides
* @throws IOException Si la page nas pas pu être lue
*/
public Page(PDDocument document, int index) throws
IllegalArgumentException,
IOException {
if (!isValid(document, index)) {
throw new IllegalArgumentException();
}
this.index = index;
this.image = generateImage(document);
positionX = 0;
positionY = 0;
}
/**
* TODO A compléter
* @param document
* @param index
* @return
* Prédicat qui vérifie si une page est valide
* Le document ne doit pas être null et lindex doit être compris entre 0
* et le nombre de pages du pdf.
*
* @param document Document pdf
* @param index indice de la page
* @return true si le prédicat est vérifié, false sinon
*/
private boolean isValid(PDDocument document, int index) {
return document != null
&& 0 <= index && index < document.getNumberOfPages();
return document != null && 0 <= index
&& index < document.getNumberOfPages();
}
/**
* TODO A compléter
* @param positionX
* @param positionY
* Génère une image de la page
*
* @param document Document PDF
* @return JLabel contenant la page sous forme dimage
* @throws IOException En cas derreur de lecture
*/
private JLabel generateImage(PDDocument document) throws IOException {
PDFRenderer pdfRenderer = new PDFRenderer(document);
BufferedImage bufferedImage = pdfRenderer.renderImageWithDPI(this.index,
300,
ImageType.RGB);
this.largeur = bufferedImage.getWidth();
this.hauteur = bufferedImage.getHeight();
ImageIcon icon = 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) {
// TODO
this.positionX = positionX;
this.positionY = positionY;
image.setLocation(positionX, positionY);
}
/**
* TODO A compléter
* @return
* @return Le label contenant limage de la page
*/
public JLabel getImage() {
return image;
}
/**
* @return La hauteur de la page
*/
public int getHauteur() {
return hauteur;
}
/**
* @return La largeur de la page
*/
public int getLargeur() {
return largeur;
}
}