Versio 1, ensimmäinen committi!
This commit is contained in:
@@ -0,0 +1,89 @@
|
||||
package fi.lpam.tulostajat;
|
||||
|
||||
import fi.lpam.dataluokat.Kuljetus;
|
||||
import fi.lpam.gui.virheDialogit.SiirtoVirhe;
|
||||
import javafx.collections.ObservableList;
|
||||
import org.apache.pdfbox.pdmodel.PDDocument;
|
||||
import org.apache.pdfbox.pdmodel.PDPage;
|
||||
import org.apache.pdfbox.pdmodel.PDPageContentStream;
|
||||
import org.apache.pdfbox.printing.PDFPageable;
|
||||
|
||||
import java.awt.print.PrinterException;
|
||||
import java.awt.print.PrinterJob;
|
||||
import java.io.IOException;
|
||||
import java.time.format.DateTimeFormatter;
|
||||
|
||||
@SuppressWarnings("DuplicatedCode")
|
||||
public class KuljetusListaTulostaja extends Tulostaja{
|
||||
public static void tulosta(ObservableList<Kuljetus> kuljetukset, int kierrosnumero) {
|
||||
int kuljetuksetPerSivu = 17;
|
||||
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(kuljetukset.getFirst().getKuljetusPäivämäärä().format(DateTimeFormatter.ofPattern("dd/MM/yyyy")) + ", kierros " + kierrosnumero);
|
||||
sisältö.newLineAtOffset(0, -25);
|
||||
|
||||
int riviLaskuri = 1;
|
||||
for (Kuljetus kuljetus : kuljetukset) {
|
||||
//Tyhjää kuljetusta ei tulosteta
|
||||
if ((kuljetus.getSalaatit() + kuljetus.getPääruoat() + kuljetus.getJälkiruoat()) < 1) {continue;}
|
||||
|
||||
if (riviLaskuri > kuljetuksetPerSivu) {
|
||||
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);
|
||||
riviLaskuri = 0;
|
||||
}
|
||||
//Ensimmäinen rivi
|
||||
sisältö.showText(kuljetus.getNimi());
|
||||
int sarake1 = 150;
|
||||
sisältö.newLineAtOffset(sarake1, 0);
|
||||
sisältö.showText(kuljetus.getOsoite());
|
||||
int sarake2 = 230;
|
||||
sisältö.newLineAtOffset(sarake2, 0);
|
||||
sisältö.showText(kuljetus.getAvainTieto());
|
||||
|
||||
//Toinen rivi
|
||||
sisältö.newLineAtOffset(-sarake1-sarake2, -15);
|
||||
sisältö.showText("Sal: " + kuljetus.getSalaatit()
|
||||
+ " Pr: " + kuljetus.getPääruoat()
|
||||
+ " Jr: " + kuljetus.getJälkiruoat());
|
||||
sisältö.newLineAtOffset(sarake1, 0);
|
||||
sisältö.showText(kuljetus.getRuokarajoite());
|
||||
sisältö.newLineAtOffset(sarake2, 0);
|
||||
sisältö.showText(kuljetus.getLisätieto());
|
||||
|
||||
sisältö.newLineAtOffset(-sarake1-sarake2, -5);
|
||||
sisältö.showText("________________________________________________________________________________");
|
||||
sisältö.newLineAtOffset(0, -20);
|
||||
|
||||
riviLaskuri++;
|
||||
}
|
||||
sisältö.endText();
|
||||
sisältö.close();
|
||||
|
||||
PrinterJob tuloste = PrinterJob.getPrinterJob();
|
||||
tuloste.setPageable(new PDFPageable(dokumentti));
|
||||
if (tuloste.printDialog()) {
|
||||
tuloste.print();
|
||||
|
||||
}
|
||||
} catch (IOException | PrinterException e) {
|
||||
SiirtoVirhe virhe = new SiirtoVirhe(e);
|
||||
virhe.showAndWait();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,67 @@
|
||||
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();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,11 @@
|
||||
package fi.lpam.tulostajat;
|
||||
|
||||
import org.apache.pdfbox.pdmodel.font.PDFont;
|
||||
import org.apache.pdfbox.pdmodel.font.PDType1Font;
|
||||
import org.apache.pdfbox.pdmodel.font.Standard14Fonts;
|
||||
|
||||
public abstract class Tulostaja {
|
||||
static final PDFont fontti = new PDType1Font(Standard14Fonts.FontName.HELVETICA);
|
||||
static final int fonttiKoko = 14;
|
||||
static final float leading = 14.5f;
|
||||
}
|
||||
Reference in New Issue
Block a user