mirror of
https://github.com/LucasVbr/LecteurPdfDoubleAffichage.git
synced 2026-05-13 17:11:51 +00:00
Test d'affichage PDF
-> Fonctionnel (voir PDFTest.java)
This commit is contained in:
+3
-1
@@ -1,5 +1,7 @@
|
||||
# Meta données de IntelliJ Idea
|
||||
.idea/*
|
||||
LecteurPdfDoubleAffichage.iml
|
||||
|
||||
# Dossiers des fichiers compilés
|
||||
out/
|
||||
out/
|
||||
*.class
|
||||
@@ -35,5 +35,7 @@
|
||||
<SOURCES />
|
||||
</library>
|
||||
</orderEntry>
|
||||
<orderEntry type="library" name="pdfbox-2.0" level="project" />
|
||||
<orderEntry type="library" name="fontbox-2.0.24" level="project" />
|
||||
</component>
|
||||
</module>
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -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 ;
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -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
|
||||
*
|
||||
|
||||
@@ -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<Page> 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();
|
||||
}
|
||||
}
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -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
|
||||
}
|
||||
}
|
||||
@@ -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() {
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user