Koodin siivousta
Signed-off-by: laurimaaninka <lauri.maaninka@gmail.com>
This commit is contained in:
@@ -0,0 +1,114 @@
|
||||
package fi.lpam.tulostajat;
|
||||
|
||||
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.pdmodel.font.PDFont;
|
||||
import org.apache.pdfbox.pdmodel.font.PDType1Font;
|
||||
import org.apache.pdfbox.pdmodel.font.Standard14Fonts;
|
||||
import org.apache.pdfbox.printing.PDFPageable;
|
||||
|
||||
import java.awt.print.PrinterException;
|
||||
import java.awt.print.PrinterJob;
|
||||
import java.io.IOException;
|
||||
|
||||
public abstract class Tulostaja {
|
||||
final PDRectangle SIVUKOKO = PDRectangle.A4;
|
||||
final PDFont FONTTI = new PDType1Font(Standard14Fonts.FontName.HELVETICA);
|
||||
final float FONTTI_KOKO = 13;
|
||||
final float MARGINAALI = 50;
|
||||
final float RIVI_KORKEUS = FONTTI_KOKO * 1.2F;
|
||||
|
||||
final PDDocument dokumentti;
|
||||
PDPage nykyinenSivu = null;
|
||||
PDPageContentStream sisältö = null;
|
||||
final float sivunLeveys;
|
||||
final float startX;
|
||||
final float startY;
|
||||
float yOffset;
|
||||
float xOffset;
|
||||
|
||||
|
||||
public Tulostaja() {
|
||||
dokumentti = new PDDocument();
|
||||
sivunLeveys = SIVUKOKO.getWidth() - 2 * MARGINAALI;
|
||||
startX = SIVUKOKO.getLowerLeftX() + MARGINAALI;
|
||||
startY = SIVUKOKO.getUpperRightY() - MARGINAALI;
|
||||
yOffset = startY;
|
||||
xOffset = 0;
|
||||
uusiSivu();
|
||||
}
|
||||
|
||||
/**Luo uuden sivun dokumenttiin ja alustaa sisältö muuttujan valmiiksi*/
|
||||
void uusiSivu() {
|
||||
try {
|
||||
if (sisältö != null) {
|
||||
sisältö.endText();
|
||||
sisältö.close();
|
||||
}
|
||||
PDPage uusiSivu = new PDPage(SIVUKOKO);
|
||||
dokumentti.addPage(uusiSivu);
|
||||
nykyinenSivu = uusiSivu;
|
||||
sisältö = new PDPageContentStream(dokumentti, uusiSivu);
|
||||
sisältö.setFont(FONTTI, FONTTI_KOKO);
|
||||
sisältö.beginText();
|
||||
sisältö.newLineAtOffset(startX, startY);
|
||||
yOffset = startY;
|
||||
} catch (IOException e) {
|
||||
handleIOException(e);
|
||||
}
|
||||
}
|
||||
|
||||
/**Siirtää osoittimen rivin alkuun, siirtää riviä alaspäin tY verran*/
|
||||
void uusiRivi(float tY) {
|
||||
try {
|
||||
sisältö.newLineAtOffset(-xOffset, -tY);
|
||||
xOffset = 0;
|
||||
yOffset -= tY;
|
||||
}
|
||||
catch (IOException e) {
|
||||
handleIOException(e);
|
||||
}
|
||||
}
|
||||
|
||||
/**Siirtää osoittimen uuden rivin alkuun*/
|
||||
void uusiRivi() {
|
||||
uusiRivi(RIVI_KORKEUS);
|
||||
}
|
||||
/**Siirtää osoitinta sivulla. + oikealle, - vasemmalle*/
|
||||
void siirräOsoitinta(@SuppressWarnings("SameParameterValue") float tX) {
|
||||
try {
|
||||
sisältö.newLineAtOffset(tX, 0);
|
||||
xOffset += tX;
|
||||
}
|
||||
catch (IOException e) {
|
||||
handleIOException(e);
|
||||
}
|
||||
}
|
||||
/**Avaa järjestelmän tulostusikkunan dokumentille*/
|
||||
void tulosta() {
|
||||
try {
|
||||
sisältö.endText();
|
||||
sisältö.close();
|
||||
PrinterJob tuloste = PrinterJob.getPrinterJob();
|
||||
tuloste.setPageable(new PDFPageable(dokumentti));
|
||||
if (tuloste.printDialog()) {
|
||||
tuloste.print();
|
||||
}
|
||||
}
|
||||
catch (PrinterException ex) {
|
||||
System.out.println("Error: " + ex.getMessage());
|
||||
}
|
||||
catch (IOException ex) {
|
||||
handleIOException(ex);
|
||||
}
|
||||
}
|
||||
|
||||
/**Käsittelee pdfboxin IOExceptionit*/
|
||||
void handleIOException(IOException e) {
|
||||
SiirtoVirhe virhe = new SiirtoVirhe(e);
|
||||
virhe.showAndWait();
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user