mirror of
https://github.com/LucasVbr/LecteurPdfDoubleAffichage.git
synced 2026-07-09 12:47:45 +00:00
Mode Pleine Largeur et mode Page Entière + S'adapte au petits ecrans
This commit is contained in:
@@ -44,6 +44,12 @@ public class MenuAffichage extends JMenu {
|
|||||||
add(new ZoomPlus(parent));
|
add(new ZoomPlus(parent));
|
||||||
add(new ZoomDefaut(parent));
|
add(new ZoomDefaut(parent));
|
||||||
add(new ZoomMoins(parent));
|
add(new ZoomMoins(parent));
|
||||||
|
addSeparator();
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
add(new PageEntiere(parent));
|
||||||
|
add(new PleineLargeur(parent));
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,17 @@
|
|||||||
|
package lecteur_pdf.menuBar.menuItems;
|
||||||
|
|
||||||
|
import lecteur_pdf.IhmPdf;
|
||||||
|
|
||||||
|
public class PageEntiere extends MenuItem {
|
||||||
|
/**
|
||||||
|
* TODO
|
||||||
|
* @param parent Référence de la fenêtre qui possède l'instance de ce MenuItem
|
||||||
|
*/
|
||||||
|
public PageEntiere(IhmPdf parent) {
|
||||||
|
super(parent, "Page Entière");
|
||||||
|
|
||||||
|
addActionListener(e -> {
|
||||||
|
parent.getPdfPanel().setPleineLargeur(false);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,19 @@
|
|||||||
|
package lecteur_pdf.menuBar.menuItems;
|
||||||
|
|
||||||
|
import lecteur_pdf.IhmPdf;
|
||||||
|
|
||||||
|
public class PleineLargeur extends MenuItem{
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* TODO
|
||||||
|
* @param parent Référence de la fenêtre qui possède l'instance de ce MenuItem
|
||||||
|
*/
|
||||||
|
public PleineLargeur(IhmPdf parent) {
|
||||||
|
super(parent, "Pleine Largeur");
|
||||||
|
|
||||||
|
addActionListener(e -> {
|
||||||
|
parent.getPdfPanel().setPleineLargeur(true);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -28,7 +28,7 @@ public class ZoomDefaut extends MenuItem {
|
|||||||
super(parent, "Zoom 100%");
|
super(parent, "Zoom 100%");
|
||||||
|
|
||||||
addActionListener(e -> {
|
addActionListener(e -> {
|
||||||
parent.getPdfPanel().updateScale(1.0f);
|
parent.getPdfPanel().updateScaleZoom(1.0f);
|
||||||
parent.validate();
|
parent.validate();
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
@@ -28,7 +28,7 @@ public class ZoomMoins extends MenuItem {
|
|||||||
super(parent, "Zoom 50%");
|
super(parent, "Zoom 50%");
|
||||||
|
|
||||||
addActionListener(e -> {
|
addActionListener(e -> {
|
||||||
parent.getPdfPanel().updateScale(0.5f);
|
parent.getPdfPanel().updateScaleZoom(0.5f);
|
||||||
parent.validate();
|
parent.validate();
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
@@ -28,7 +28,7 @@ public class ZoomPlus extends MenuItem {
|
|||||||
super(parent, "Zoom 150%");
|
super(parent, "Zoom 150%");
|
||||||
|
|
||||||
addActionListener(e -> {
|
addActionListener(e -> {
|
||||||
parent.getPdfPanel().updateScale(1.5f);
|
parent.getPdfPanel().updateScaleZoom(1.5f);
|
||||||
parent.validate();
|
parent.validate();
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,61 @@
|
|||||||
|
package lecteur_pdf.pdf;
|
||||||
|
|
||||||
|
import javax.swing.*;
|
||||||
|
import java.awt.*;
|
||||||
|
import java.awt.image.BufferedImage;
|
||||||
|
|
||||||
|
public class OutilsImage {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Change la taille d'une image
|
||||||
|
* @param img
|
||||||
|
* @param newW
|
||||||
|
* @param newH
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
public static BufferedImage resize(BufferedImage img, int newW, int newH) {
|
||||||
|
int w = img.getWidth();
|
||||||
|
int h = img.getHeight();
|
||||||
|
BufferedImage dimg = new BufferedImage(newW, newH, img.getType());
|
||||||
|
Graphics2D g = dimg.createGraphics();
|
||||||
|
g.setRenderingHint(RenderingHints.KEY_INTERPOLATION,
|
||||||
|
RenderingHints.VALUE_INTERPOLATION_BILINEAR);
|
||||||
|
g.drawImage(img, 0, 0, newW, newH, 0, 0, w, h, null);
|
||||||
|
g.dispose();
|
||||||
|
return dimg;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @param img
|
||||||
|
* @param newW
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
public static BufferedImage resizeWidth(PdfLoader a, Icon img, int newW) {
|
||||||
|
int w = a.getMinWidth();
|
||||||
|
int h = a.getMinHeight();
|
||||||
|
|
||||||
|
float ratio = (float)newW / (float)w;
|
||||||
|
|
||||||
|
return a.setScale(ratio);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @param img
|
||||||
|
* @param newH
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
public static BufferedImage resizeHeight(BufferedImage img, int newH) {
|
||||||
|
int w = img.getWidth();
|
||||||
|
int h = img.getHeight();
|
||||||
|
|
||||||
|
int ratio = newH / (1+h);
|
||||||
|
// System.out.println(ratio);
|
||||||
|
|
||||||
|
int newW = w * ratio;
|
||||||
|
|
||||||
|
return resize(img, newW, newH);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@@ -26,12 +26,15 @@ public class PdfLoader {
|
|||||||
/**
|
/**
|
||||||
* TODO
|
* TODO
|
||||||
*/
|
*/
|
||||||
PDDocument document;
|
private PDDocument document;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* TODO
|
* TODO
|
||||||
*/
|
*/
|
||||||
PDFRenderer renderer;
|
private PDFRenderer renderer;
|
||||||
|
|
||||||
|
private int minWidth;
|
||||||
|
private int minHeight;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* TODO
|
* TODO
|
||||||
@@ -42,6 +45,16 @@ public class PdfLoader {
|
|||||||
public PdfLoader(File file) throws IOException {
|
public PdfLoader(File file) throws IOException {
|
||||||
document = PDDocument.load(file);
|
document = PDDocument.load(file);
|
||||||
renderer = new PDFRenderer(document);
|
renderer = new PDFRenderer(document);
|
||||||
|
minWidth = -1;
|
||||||
|
minHeight = -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getMinWidth() {
|
||||||
|
return minWidth;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getMinHeight() {
|
||||||
|
return minHeight;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -53,6 +66,18 @@ public class PdfLoader {
|
|||||||
return document.getNumberOfPages();
|
return document.getNumberOfPages();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public BufferedImage renderPage(int pageIndex) throws IOException {
|
||||||
|
return renderPage(pageIndex, 1.0f);
|
||||||
|
}
|
||||||
|
|
||||||
|
public BufferedImage setScale(float scale) {
|
||||||
|
try {
|
||||||
|
return renderPage(0, scale);
|
||||||
|
} catch (IOException ignored) {}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* TODO
|
* TODO
|
||||||
*
|
*
|
||||||
@@ -65,7 +90,15 @@ public class PdfLoader {
|
|||||||
if (pageIndex < 0 || pageIndex >= this.getNbPages()) {
|
if (pageIndex < 0 || pageIndex >= this.getNbPages()) {
|
||||||
throw new IllegalArgumentException();
|
throw new IllegalArgumentException();
|
||||||
}
|
}
|
||||||
return renderer.renderImage(pageIndex, scale);
|
|
||||||
|
BufferedImage img = renderer.renderImage(pageIndex, scale);
|
||||||
|
|
||||||
|
if (scale == 1.0f && minWidth == -1 && minHeight == -1) {
|
||||||
|
minWidth = img.getWidth();
|
||||||
|
minHeight = img.getHeight();
|
||||||
|
}
|
||||||
|
|
||||||
|
return img;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -75,6 +108,8 @@ public class PdfLoader {
|
|||||||
try {
|
try {
|
||||||
renderer = null;
|
renderer = null;
|
||||||
document.close();
|
document.close();
|
||||||
|
minWidth = -1;
|
||||||
|
minHeight = -1;
|
||||||
} catch (IOException ignored) {
|
} catch (IOException ignored) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,86 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
<form xmlns="http://www.intellij.com/uidesigner/form/" version="1" bind-to-class="lecteur_pdf.pdf.PdfPanel">
|
|
||||||
<grid id="27dc6" binding="mainPanel" layout-manager="GridLayoutManager" row-count="2" column-count="6" same-size-horizontally="false" same-size-vertically="false" hgap="-1" vgap="-1">
|
|
||||||
<margin top="0" left="0" bottom="0" right="0"/>
|
|
||||||
<constraints>
|
|
||||||
<xy x="20" y="20" width="500" height="400"/>
|
|
||||||
</constraints>
|
|
||||||
<properties/>
|
|
||||||
<border type="none"/>
|
|
||||||
<children>
|
|
||||||
<component id="9ec2f" class="javax.swing.JLabel" binding="pageIndicator">
|
|
||||||
<constraints>
|
|
||||||
<grid row="0" column="3" row-span="1" col-span="1" vsize-policy="0" hsize-policy="0" anchor="8" fill="0" indent="0" use-parent-layout="false"/>
|
|
||||||
</constraints>
|
|
||||||
<properties>
|
|
||||||
<text value="/ - "/>
|
|
||||||
</properties>
|
|
||||||
</component>
|
|
||||||
<component id="6e10b" class="javax.swing.JButton" binding="suivantButton" default-binding="true">
|
|
||||||
<constraints>
|
|
||||||
<grid row="0" column="4" row-span="1" col-span="1" vsize-policy="0" hsize-policy="3" anchor="0" fill="1" indent="0" use-parent-layout="false"/>
|
|
||||||
</constraints>
|
|
||||||
<properties>
|
|
||||||
<text value="Suivant"/>
|
|
||||||
</properties>
|
|
||||||
</component>
|
|
||||||
<hspacer id="cb0bf">
|
|
||||||
<constraints>
|
|
||||||
<grid row="0" column="5" row-span="1" col-span="1" vsize-policy="1" hsize-policy="6" anchor="0" fill="1" indent="0" use-parent-layout="false"/>
|
|
||||||
</constraints>
|
|
||||||
</hspacer>
|
|
||||||
<hspacer id="75413">
|
|
||||||
<constraints>
|
|
||||||
<grid row="0" column="0" row-span="1" col-span="1" vsize-policy="1" hsize-policy="6" anchor="0" fill="1" indent="0" use-parent-layout="false"/>
|
|
||||||
</constraints>
|
|
||||||
</hspacer>
|
|
||||||
<component id="6531c" class="javax.swing.JButton" binding="precedentButton">
|
|
||||||
<constraints>
|
|
||||||
<grid row="0" column="1" row-span="1" col-span="1" vsize-policy="0" hsize-policy="3" anchor="0" fill="1" indent="0" use-parent-layout="false"/>
|
|
||||||
</constraints>
|
|
||||||
<properties>
|
|
||||||
<text value="Précédent"/>
|
|
||||||
</properties>
|
|
||||||
</component>
|
|
||||||
<grid id="59e1d" layout-manager="BorderLayout" hgap="0" vgap="0">
|
|
||||||
<constraints>
|
|
||||||
<grid row="1" column="0" row-span="1" col-span="6" vsize-policy="3" hsize-policy="3" anchor="0" fill="3" indent="0" use-parent-layout="false"/>
|
|
||||||
</constraints>
|
|
||||||
<properties/>
|
|
||||||
<border type="none"/>
|
|
||||||
<children>
|
|
||||||
<scrollpane id="7a9db" binding="scrollPane">
|
|
||||||
<constraints border-constraint="Center"/>
|
|
||||||
<properties>
|
|
||||||
<verticalScrollBarPolicy value="20"/>
|
|
||||||
</properties>
|
|
||||||
<border type="none"/>
|
|
||||||
<children>
|
|
||||||
<grid id="fd78c" layout-manager="BorderLayout" hgap="0" vgap="0">
|
|
||||||
<constraints/>
|
|
||||||
<properties/>
|
|
||||||
<border type="none"/>
|
|
||||||
<children>
|
|
||||||
<component id="835ed" class="javax.swing.JLabel" binding="page">
|
|
||||||
<constraints border-constraint="Center"/>
|
|
||||||
<properties>
|
|
||||||
<text value=""/>
|
|
||||||
</properties>
|
|
||||||
</component>
|
|
||||||
</children>
|
|
||||||
</grid>
|
|
||||||
</children>
|
|
||||||
</scrollpane>
|
|
||||||
</children>
|
|
||||||
</grid>
|
|
||||||
<component id="73f5" class="javax.swing.JTextField" binding="indexPage">
|
|
||||||
<constraints>
|
|
||||||
<grid row="0" column="2" row-span="1" col-span="1" vsize-policy="0" hsize-policy="6" anchor="8" fill="1" indent="0" use-parent-layout="false">
|
|
||||||
<preferred-size width="150" height="-1"/>
|
|
||||||
</grid>
|
|
||||||
</constraints>
|
|
||||||
<properties/>
|
|
||||||
</component>
|
|
||||||
</children>
|
|
||||||
</grid>
|
|
||||||
</form>
|
|
||||||
@@ -1,7 +1,7 @@
|
|||||||
/*
|
/*
|
||||||
* PdfPanel.java, 26/02/2022
|
* PdfPanel.java, 26/02/2022
|
||||||
* IUT Rodez 2021-2022, INFO 2
|
* IUT Rodez 2021-2022, INFO 2
|
||||||
* pas de copyright, aucun droits
|
* Pas de copyright, aucun droits
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package lecteur_pdf.pdf;
|
package lecteur_pdf.pdf;
|
||||||
@@ -11,11 +11,13 @@ import lecteur_pdf.GestionPdf;
|
|||||||
|
|
||||||
import javax.swing.*;
|
import javax.swing.*;
|
||||||
import java.awt.*;
|
import java.awt.*;
|
||||||
|
import java.awt.event.ComponentAdapter;
|
||||||
|
import java.awt.event.ComponentEvent;
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* TODO commentaires
|
* Interface de la mainframe de l'application sans utilisation de forms
|
||||||
*
|
*
|
||||||
* @author Léo Franch
|
* @author Léo Franch
|
||||||
* @author Lucas Vabre
|
* @author Lucas Vabre
|
||||||
@@ -23,79 +25,113 @@ import java.io.IOException;
|
|||||||
* @author Tristan Nogaret
|
* @author Tristan Nogaret
|
||||||
*/
|
*/
|
||||||
public class PdfPanel extends JPanel {
|
public class PdfPanel extends JPanel {
|
||||||
/**
|
|
||||||
* TODO
|
|
||||||
*/
|
|
||||||
private int currentPage;
|
private int currentPage;
|
||||||
|
|
||||||
/**
|
private float scaleSizing;
|
||||||
* TODO
|
private float scaleZoom;
|
||||||
*/
|
|
||||||
private float currentScale;
|
private boolean pleineLargeur;
|
||||||
|
|
||||||
/**
|
|
||||||
* TODO
|
|
||||||
*/
|
|
||||||
private PdfLoader pdfLoader;
|
private PdfLoader pdfLoader;
|
||||||
|
|
||||||
private JButton suivantButton;
|
private final JTextField indexPageInput;
|
||||||
private JButton precedentButton;
|
private final JLabel maxPageLabel;
|
||||||
private JLabel pageIndicator;
|
|
||||||
private JPanel mainPanel;
|
private final JScrollPane scrollPane;
|
||||||
private JLabel page;
|
private final JViewport viewport;
|
||||||
private JScrollPane scrollPane;
|
private final JLabel page;
|
||||||
private JTextField indexPage;
|
|
||||||
|
private boolean processing;
|
||||||
|
|
||||||
/**
|
|
||||||
* TODO
|
|
||||||
*/
|
|
||||||
public PdfPanel() {
|
public PdfPanel() {
|
||||||
super();
|
super(new BorderLayout());
|
||||||
|
|
||||||
this.currentScale = 1.0f;
|
scaleSizing = 0.0f;
|
||||||
|
scaleZoom = 1.0f;
|
||||||
|
currentPage = 0;
|
||||||
|
processing = false;
|
||||||
|
pleineLargeur = false;
|
||||||
|
|
||||||
scrollPane.setMaximumSize(Toolkit.getDefaultToolkit().getScreenSize());
|
/* Controls */
|
||||||
|
JPanel controls = new JPanel();
|
||||||
|
/* Contenu de Controls */
|
||||||
|
JButton btnPrecedent = new JButton("Précédent");
|
||||||
|
indexPageInput = new JTextField();
|
||||||
|
indexPageInput.setText("-");
|
||||||
|
maxPageLabel = new JLabel("/ -");
|
||||||
|
JButton btnSuivant = new JButton("Suivant");
|
||||||
|
|
||||||
// TODO supprimer le form et creer les éléments 1 par 1
|
controls.add(btnPrecedent);
|
||||||
|
controls.add(indexPageInput);
|
||||||
|
controls.add(maxPageLabel);
|
||||||
|
controls.add(btnSuivant);
|
||||||
|
|
||||||
/* Hierarchie */
|
add(controls, BorderLayout.PAGE_START);
|
||||||
add(mainPanel);
|
|
||||||
|
/* View */
|
||||||
|
page = new JLabel();
|
||||||
|
JPanel pagePanel = new JPanel();
|
||||||
|
/* Contenu de View */
|
||||||
|
scrollPane = new JScrollPane(pagePanel);
|
||||||
|
scrollPane.getVerticalScrollBar().setUnitIncrement(16);
|
||||||
|
viewport = scrollPane.getViewport();
|
||||||
|
|
||||||
|
pagePanel.add(page);
|
||||||
|
|
||||||
|
add(scrollPane, BorderLayout.CENTER);
|
||||||
|
|
||||||
/* Actions */
|
/* Actions */
|
||||||
suivantButton.addActionListener(e -> {
|
btnSuivant.addActionListener(e -> {
|
||||||
if (GestionMode.isModeSepare()) {
|
if (GestionMode.isModeSepare()) nextPage();
|
||||||
nextPage();
|
else GestionPdf.nextPages();
|
||||||
} else {
|
|
||||||
GestionPdf.nextPages();
|
|
||||||
}
|
|
||||||
});
|
});
|
||||||
|
|
||||||
precedentButton.addActionListener(e -> {
|
btnPrecedent.addActionListener(e -> {
|
||||||
if (GestionMode.isModeSepare()) {
|
if (GestionMode.isModeSepare()) previousPage();
|
||||||
previousPage();
|
else GestionPdf.previousPages();
|
||||||
} else {
|
|
||||||
GestionPdf.previousPages();
|
|
||||||
}
|
|
||||||
});
|
});
|
||||||
|
|
||||||
indexPage.addActionListener(e -> {
|
indexPageInput.addActionListener(e -> {
|
||||||
|
String saisie = indexPageInput.getText();
|
||||||
String saisie = indexPage.getText();
|
try {
|
||||||
|
|
||||||
int index = Integer.parseInt(saisie);
|
int index = Integer.parseInt(saisie);
|
||||||
|
if (isPageValide(index - 1)) setPage(index - 1);
|
||||||
/* Si cet entier est valide on change de page sinon on efface le contenu de la saisie */
|
else throw new Exception();
|
||||||
if (isPageValide(index)) {
|
} catch (Exception f) {
|
||||||
setPage(index - 1);
|
indexPageInput.setText(null);
|
||||||
} else {
|
|
||||||
indexPage.setText(null);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
});
|
});
|
||||||
|
|
||||||
|
scrollPane.addComponentListener(new ComponentAdapter() {
|
||||||
|
@Override
|
||||||
|
public void componentResized(ComponentEvent e) {
|
||||||
|
super.componentResized(e);
|
||||||
|
resize();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
public void resize() {
|
||||||
|
if (pdfLoader != null && !processing) {
|
||||||
|
if (pleineLargeur) {
|
||||||
|
scaleSizing = (((float) viewport.getWidth() - (float) scrollPane.getVerticalScrollBar().getWidth()) / (float) pdfLoader.getMinWidth()) - scaleZoom;
|
||||||
|
} else {
|
||||||
|
scaleSizing = (((float) viewport.getHeight() - (float) scrollPane.getHorizontalScrollBar().getHeight()) / (float) pdfLoader.getMinHeight()) - scaleZoom;
|
||||||
|
}
|
||||||
|
updateScaleSizing(scaleSizing);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setPleineLargeur(boolean pleineLargeur) {
|
||||||
|
this.pleineLargeur = pleineLargeur;
|
||||||
|
resize();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Prédicat qui vérifie si un index de page est valide pour le PDF courrant
|
* Prédicat qui vérifie si un index de page est valide pour le PDF courrant
|
||||||
|
*
|
||||||
* @param index Entier correspondant a l'indice du numéro de page à tester
|
* @param index Entier correspondant a l'indice du numéro de page à tester
|
||||||
* @return true si le prédicat est vérifié, false sinon
|
* @return true si le prédicat est vérifié, false sinon
|
||||||
*/
|
*/
|
||||||
@@ -106,6 +142,7 @@ public class PdfPanel extends JPanel {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Methode qui permet de charger un PDF dans le fenêtre courrante
|
* Methode qui permet de charger un PDF dans le fenêtre courrante
|
||||||
|
*
|
||||||
* @param pdfFile Le fichier PDF à charger
|
* @param pdfFile Le fichier PDF à charger
|
||||||
* @return true si le PDF à pu se charger, false sinon
|
* @return true si le PDF à pu se charger, false sinon
|
||||||
*/
|
*/
|
||||||
@@ -120,7 +157,6 @@ public class PdfPanel extends JPanel {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* TODO
|
|
||||||
* @param pdfLoader
|
* @param pdfLoader
|
||||||
*/
|
*/
|
||||||
public void setPdfLoader(PdfLoader pdfLoader) {
|
public void setPdfLoader(PdfLoader pdfLoader) {
|
||||||
@@ -131,9 +167,7 @@ public class PdfPanel extends JPanel {
|
|||||||
* TODO
|
* TODO
|
||||||
*/
|
*/
|
||||||
public void dechargerPdf() {
|
public void dechargerPdf() {
|
||||||
if (pdfLoader == null) {
|
if (pdfLoader == null) return;
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Ferme le loader et l'efface */
|
/* Ferme le loader et l'efface */
|
||||||
pdfLoader.close();
|
pdfLoader.close();
|
||||||
@@ -144,18 +178,29 @@ public class PdfPanel extends JPanel {
|
|||||||
currentPage = 0;
|
currentPage = 0;
|
||||||
|
|
||||||
/* Interface Vide */
|
/* Interface Vide */
|
||||||
indexPage.setText("");
|
indexPageInput.setText("");
|
||||||
pageIndicator.setText("/ -");
|
maxPageLabel.setText("/ -");
|
||||||
|
|
||||||
validate();
|
validate();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Change la taille de la page courrante
|
* Change la taille de la page courrante
|
||||||
|
*
|
||||||
* @param scale Valeur flottante (1.00f == 100%)
|
* @param scale Valeur flottante (1.00f == 100%)
|
||||||
*/
|
*/
|
||||||
public void updateScale(float scale) {
|
public void updateScaleZoom(float scale) {
|
||||||
currentScale = scale;
|
scaleZoom = scale;
|
||||||
|
setPage(currentPage);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Change la taille de la page courrante
|
||||||
|
*
|
||||||
|
* @param scale Valeur flottante (1.00f == 100%)
|
||||||
|
*/
|
||||||
|
public void updateScaleSizing(float scale) {
|
||||||
|
scaleSizing = scale;
|
||||||
setPage(currentPage);
|
setPage(currentPage);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -175,19 +220,19 @@ public class PdfPanel extends JPanel {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Essaye de changer de page si possible, sinon ne fait rien
|
* Essaye de changer de page si possible, sinon ne fait rien
|
||||||
|
*
|
||||||
* @param index Le numéro de la page où l'on veut se rendre
|
* @param index Le numéro de la page où l'on veut se rendre
|
||||||
*/
|
*/
|
||||||
private void setPage(int index) {
|
private void setPage(int index) {
|
||||||
if (!isPageValide(index)) return;
|
if (!isPageValide(index)) return;
|
||||||
|
|
||||||
|
processing = true;
|
||||||
try {
|
try {
|
||||||
page.setIcon(new ImageIcon(pdfLoader.renderPage(index, currentScale)));
|
page.setIcon(new ImageIcon(pdfLoader.renderPage(index, scaleZoom + scaleSizing)));
|
||||||
currentPage = index;
|
currentPage = index;
|
||||||
indexPage.setText(Integer.toString(currentPage +1));
|
indexPageInput.setText(Integer.toString(currentPage + 1));
|
||||||
pageIndicator.setText(String.format("/%d", pdfLoader.getNbPages()));
|
maxPageLabel.setText(String.format("/%d", pdfLoader.getNbPages()));
|
||||||
} catch (IOException e) {
|
} catch (IOException ignored) {}
|
||||||
e.printStackTrace();
|
processing = false;
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,73 +0,0 @@
|
|||||||
/*
|
|
||||||
* PdfPanel2.java, 26/02/2022
|
|
||||||
* IUT Rodez 2021-2022, INFO 2
|
|
||||||
* Pas de copyright, aucun droits
|
|
||||||
*/
|
|
||||||
|
|
||||||
package lecteur_pdf.pdf;
|
|
||||||
|
|
||||||
import lecteur_pdf.SelectionnerFichier;
|
|
||||||
|
|
||||||
import javax.swing.*;
|
|
||||||
import java.awt.*;
|
|
||||||
import java.io.IOException;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Interface de la mainframe de l'application sans utilisation de forms
|
|
||||||
*
|
|
||||||
* @author Léo Franch
|
|
||||||
* @author Lucas Vabre
|
|
||||||
* @author Noé Villeneuve
|
|
||||||
* @author Tristan Nogaret
|
|
||||||
*/
|
|
||||||
public class PdfPanel2 extends JFrame {
|
|
||||||
|
|
||||||
public PdfPanel2() {
|
|
||||||
super("JScrollPaneExemple");
|
|
||||||
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
|
|
||||||
|
|
||||||
/* Controls */
|
|
||||||
JPanel controlPanel = new JPanel();
|
|
||||||
JButton btnPre = new JButton("Precedent");
|
|
||||||
JTextField indexPageField = new JTextField();
|
|
||||||
JLabel maxPagesLabel = new JLabel("/ -");
|
|
||||||
JButton btnSuiv = new JButton("Suivant");
|
|
||||||
|
|
||||||
controlPanel.add(btnPre);
|
|
||||||
controlPanel.add(indexPageField);
|
|
||||||
controlPanel.add(maxPagesLabel);
|
|
||||||
controlPanel.add(btnSuiv);
|
|
||||||
|
|
||||||
/* Vue */
|
|
||||||
JPanel view = null;
|
|
||||||
try {
|
|
||||||
PdfLoader pdfLoader = new PdfLoader(SelectionnerFichier.ouvrirFichier());
|
|
||||||
|
|
||||||
ImageIcon image = new ImageIcon(pdfLoader.renderPage(0, 1.0f));
|
|
||||||
JLabel pimage = new JLabel();
|
|
||||||
pimage.setIcon(image);
|
|
||||||
|
|
||||||
view = new JPanel();
|
|
||||||
view.add(pimage);
|
|
||||||
|
|
||||||
} catch (IOException e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
}
|
|
||||||
|
|
||||||
JPanel main = new JPanel(new BorderLayout());
|
|
||||||
main.add(controlPanel, BorderLayout.PAGE_START);
|
|
||||||
JScrollPane jsp = new JScrollPane(view);
|
|
||||||
main.add(jsp, BorderLayout.CENTER);
|
|
||||||
|
|
||||||
add(main);
|
|
||||||
|
|
||||||
setLocationRelativeTo(null);
|
|
||||||
setVisible(true);
|
|
||||||
setSize(300, 300);
|
|
||||||
}
|
|
||||||
|
|
||||||
public static void main(String[] args) {
|
|
||||||
new PdfPanel2();
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
Reference in New Issue
Block a user