67 lines
2.5 KiB
Java
67 lines
2.5 KiB
Java
package fi.lpam.tulostajat;
|
|
|
|
import fi.lpam.dataluokat.RaporttiRivi;
|
|
|
|
import java.awt.print.PrinterJob;
|
|
import java.time.LocalDate;
|
|
import java.util.ArrayList;
|
|
|
|
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.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);
|
|
sisältö.showText("Raportti aikaväliltä " + alkuPvm + " - " + loppuPvm);
|
|
sisältö.newLineAtOffset(0, -25);
|
|
|
|
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);
|
|
}
|
|
sisältö.showText(t);
|
|
riviLaskuri++;
|
|
sisältö.newLine();
|
|
}
|
|
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();
|
|
}
|
|
}
|
|
catch (Exception e) {
|
|
SiirtoVirhe virhe = new SiirtoVirhe(e);
|
|
virhe.showAndWait();
|
|
}
|
|
}
|
|
} |