Modifier les marges gauches et droite des feuilles d'émargement.

Répétition de l'entête de la tableau sur chaque feuille imprimée.
This commit is contained in:
pablo rodriguez 2023-07-05 18:38:16 +02:00
parent e0ba437987
commit 2fca54cd47

View File

@ -2,9 +2,12 @@ package baseUFRHG;
import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.print.PageFormat;
import java.awt.print.PrinterJob;
import java.io.FileOutputStream;
import java.io.IOException;
import javax.print.attribute.standard.PageRanges;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
@ -21,11 +24,14 @@ import org.apache.poi.ss.usermodel.FillPatternType;
import org.apache.poi.ss.usermodel.Font;
import org.apache.poi.ss.usermodel.HorizontalAlignment;
import org.apache.poi.ss.usermodel.IndexedColors;
import org.apache.poi.ss.usermodel.PrintSetup;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.VerticalAlignment;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.ss.util.CellRangeAddress;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTPageMargins;
public class createEmargement extends JFrame{
@ -209,7 +215,7 @@ public class createEmargement extends JFrame{
//Définir la largeur de la colonne B (2 cm)
int widthInCharsB = (int) (1.8 * 256 / 0.146);
int widthInCharsB = (int) (1.9 * 256 / 0.146);
sheet.setColumnWidth(1, widthInCharsB);
sheet.autoSizeColumn(0);
@ -222,7 +228,7 @@ public class createEmargement extends JFrame{
// sheet.setColumnWidth(4, widthInCharsE);
// Estimer la largeur de la feuille A4 en unités de 1/256ème de caractère
int a4WidthUnits = 22000 ; //(17 * 256)/0.146; // Largeur de la feuille A4 en unités de 1/256ème de caractère
int a4WidthUnits = 26000 ; //(17 * 256)/0.146; // Largeur de la feuille A4 en unités de 1/256ème de caractère
// int a4WidthUnits = 16250;
// Obtenir la largeur totale des colonnes A à D en unités de 1/256ème de caractère
int widthOfColumnsAtoD = 0;
@ -240,8 +246,38 @@ public class createEmargement extends JFrame{
sheet.getHeader().setCenter("Emargement : " + nameFile);
// Définir le pied de page
sheet.getFooter().setCenter("Page " + HeaderFooter.page());
sheet.getFooter().setCenter("Page " + HeaderFooter.page() );
// Obtenir l'objet CTPageMargins associé à la feuille
CTPageMargins pageMargins = ((org.apache.poi.xssf.usermodel.XSSFSheet) sheet).getCTWorksheet().getPageMargins();
// Définir les marges gauche et droite en pouces
double leftMarginInches = 0.2; // des pouces
double rightMarginInches = 0.2; // des pouces
// Conversion des pouces en unités de l'échelle de l'imprimante
double leftMarginUnits = leftMarginInches ; // 1 pouce = 2.54 cm, 1 cm = 10000 unités
double rightMarginUnits = rightMarginInches ;
// Définir les marges gauche et droite
pageMargins.setLeft(leftMarginUnits);
pageMargins.setRight(rightMarginUnits);
Row headerRow = sheet.getRow(4); // Récupérer la ligne d'entête (ligne 5)
Cell[] headerCells = new Cell[headerRow.getLastCellNum()]; // Tableau pour stocker les cellules de l'entête
for (int j = 0; j < headerRow.getLastCellNum(); j++) {
headerCells[j] = headerRow.getCell(j); // Récupérer chaque cellule de l'entête
}
// Définir l'impression de la feuille avec répétition de la ligne d'entête sur chaque page
PrintSetup printSetup = sheet.getPrintSetup();
printSetup.setFitWidth((short) 1);
printSetup.setFitHeight((short) 0);
sheet.setRepeatingRows(CellRangeAddress.valueOf("5:5")); // Répéter la ligne d'entête sur chaque page
}
// Enregistrer le classeur dans un fichier
@ -255,8 +291,8 @@ public class createEmargement extends JFrame{
}catch (IOException e) {
System.out.println(e.toString());
// e.printStackTrace();
JOptionPane.showMessageDialog(null, e.toString(), "Erreur dans la class CreateCalcWorkbook", JOptionPane.ERROR_MESSAGE);
JOptionPane.showMessageDialog(null, "<html>Erreur dans la class CreateCalcWorkbook.<br>"
+ "Avez-vous fermé le classeur : "+ nameFile +" ?<br><br>" +e.toString() + "</html>", "Erreur dans la class CreateCalcWorkbook.", JOptionPane.ERROR_MESSAGE);
}
return null;
}