Tulostamisen uudelleenrakentaminen

Signed-off-by: laurimaaninka <lauri.maaninka@gmail.com>
This commit is contained in:
2026-04-10 18:41:29 +03:00
parent be744094eb
commit 429bb9df06
9 changed files with 170 additions and 102 deletions
@@ -3,6 +3,7 @@ package fi.lpam.tulostajat;
import fi.lpam.dataluokat.RaporttiRivi;
import java.awt.print.PrinterJob;
import java.io.IOException;
import java.time.LocalDate;
import java.util.ArrayList;
@@ -10,58 +11,33 @@ import fi.lpam.gui.virheDialogit.SiirtoVirhe;
import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.pdmodel.PDPage;
import org.apache.pdfbox.pdmodel.PDPageContentStream;
import org.apache.pdfbox.pdmodel.common.PDRectangle;
import org.apache.pdfbox.printing.PDFPageable;
@SuppressWarnings("DuplicatedCode")
public class KuljetusRaporttiTulostaja extends Tulostaja {
public static void luoRaportti(ArrayList<RaporttiRivi> raporttiRivit, LocalDate alkuPvm, LocalDate loppuPvm) {
int rivitPerSivu = 44;
try (PDDocument dokumentti = new PDDocument()) {
PDPage sivu = new PDPage();
dokumentti.addPage(sivu);
PDPageContentStream sisältö = new PDPageContentStream(dokumentti, sivu);
sisältö.beginText();
sisältö.setFont(fontti, fonttiKoko);
sisältö.setLeading(leading);
sisältö.newLineAtOffset(25,750);
public void luoRaportti(ArrayList<RaporttiRivi> raporttiRivit, LocalDate alkuPvm, LocalDate loppuPvm) {
try {
sisältö.showText("Raportti aikaväliltä " + alkuPvm + " - " + loppuPvm);
sisältö.newLineAtOffset(0, -25);
uusiRivi();
uusiRivi();
int riviLaskuri = 2;
for (RaporttiRivi rivi : raporttiRivit) {
String[] teksti = rivi.toString().split("\n");
for (String t : teksti) {
if (riviLaskuri % rivitPerSivu == 0) {
sisältö.endText();
sisältö.close();
PDPage uusiSivu = new PDPage();
dokumentti.addPage(uusiSivu);
sisältö = new PDPageContentStream(dokumentti, uusiSivu);
sisältö.beginText();
sisältö.setFont(fontti, fonttiKoko);
sisältö.setLeading(leading);
sisältö.newLineAtOffset(25,750);
if (yOffset - MARGINAALI < 0) {
uusiSivu();
}
sisältö.showText(t);
riviLaskuri++;
sisältö.newLine();
uusiRivi();
}
sisältö.newLineAtOffset(0, -5);
}
sisältö.endText();
sisältö.close();
PrinterJob tuloste = PrinterJob.getPrinterJob();
tuloste.setPageable(new PDFPageable(dokumentti));
if (tuloste.printDialog()) {
tuloste.print();
uusiRivi();
}
tulosta();
}
catch (Exception e) {
SiirtoVirhe virhe = new SiirtoVirhe(e);
virhe.showAndWait();
catch (IOException e) {
handleIOException(e);
}
}
}