Fenetre.chargerPdf: centre le PDF

PDF.loadPages : possibilité de zoom + nouvelle methode de chargement
(Test chargement asynchrone mais ne marche pas correctement)
This commit is contained in:
LucasV-IUT
2021-12-04 15:17:18 +01:00
parent 490350acbd
commit 18e5f2fd3c
5 changed files with 79 additions and 78 deletions
+35 -17
View File
@@ -6,11 +6,15 @@
package lecteur_pdf.document;
import lecteur_pdf.affichage.Fenetre;
import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.pdmodel.PDPage;
import javax.swing.*;
import java.awt.*;
import java.io.File;
import java.io.IOException;
import java.util.List;
/**
* Définis virtuellement un fichier PDF
@@ -32,10 +36,7 @@ public class PDF extends JPanel {
*/
private final PDDocument document;
/**
* Les pages du PDF sous forme de JLabel contenant des images
*/
private final Page[] pages;
private List pages;
/**
* Crée un document PDF qui est capable d’être affiché dans une fenêtre
@@ -46,10 +47,10 @@ public class PDF extends JPanel {
public PDF(File fichier) {
try {
this.document = PDDocument.load(fichier);
this.pages = new Page[document.getNumberOfPages()];
pages = this.document.getDocumentCatalog().getAllPages();
this.setLayout(new BoxLayout(this,BoxLayout.PAGE_AXIS));
this.loadPages();
this.setLayout(new BoxLayout(this, BoxLayout.Y_AXIS));
this.setAlignmentX(Component.CENTER_ALIGNMENT);
} catch (IOException e) {
throw new IllegalArgumentException();
}
@@ -58,19 +59,36 @@ public class PDF extends JPanel {
/**
* Charge toutes les pages du document PDF et les stocke dans le tableau
*/
private void loadPages() {
public void loadPages(Fenetre fenetre, int zoom) {
try {
for (int i = 0; i < pages.length; i++) {
/* Crée un JLabel de la page */
pages[i] = new Page(document, i);
this.add(pages[i]);
for (Object p : pages) {
if (p instanceof PDPage pdPage) {
try {
this.add(new Page(pdPage, zoom));
} catch (IOException e) {
e.printStackTrace();
}
fenetre.validate();
/* Méthode asynchrone (Ne marche pas bien) */
// new Thread(() -> {
// try {
// this.add(new Page(pdPage, zoom));
// } catch (IOException e) {
// e.printStackTrace();
// }
// fenetre.validate();
// try {
// Thread.sleep(50);
// } catch (InterruptedException e) {
// e.printStackTrace();
// }
// }).start();
}
System.out.println("PDF: Loaded successfully");
} catch (IOException e) {
e.printStackTrace();
}
System.out.println("PDF: Loaded successfully");
}
/**