From 2bfb9c1803328339faa4db74babbf4c5f01dac92 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B6rg=20Prante?= Date: Thu, 18 Mar 2021 14:32:42 +0100 Subject: [PATCH] Windows printing --- build.gradle | 3 +++ gradle/compile/java.gradle | 1 + gradle/publishing/publication.gradle | 18 ++++++++++-------- graphics-pdfbox-print/build.gradle | 3 +++ .../src/main/java/module-info.java | 1 + .../graphics/pdfbox/print/PrintUtility.java | 12 ++++++++++++ .../pdfbox/print/test/PrinterTest.java | 7 +++---- 7 files changed, 33 insertions(+), 12 deletions(-) create mode 100644 graphics-pdfbox-print/build.gradle diff --git a/build.gradle b/build.gradle index 1c498be..41397a3 100644 --- a/build.gradle +++ b/build.gradle @@ -25,6 +25,9 @@ ext { subprojects { apply plugin: 'java-library' + repositories { + mavenCentral() + } apply from: rootProject.file('gradle/ide/idea.gradle') apply from: rootProject.file('gradle/compile/java.gradle') apply from: rootProject.file('gradle/test/junit5.gradle') diff --git a/gradle/compile/java.gradle b/gradle/compile/java.gradle index c983c98..971a348 100644 --- a/gradle/compile/java.gradle +++ b/gradle/compile/java.gradle @@ -36,6 +36,7 @@ artifacts { } tasks.withType(JavaCompile) { + options.encoding('UTF-8') options.compilerArgs << '-Xlint:all' } diff --git a/gradle/publishing/publication.gradle b/gradle/publishing/publication.gradle index a0f826e..eead1e0 100644 --- a/gradle/publishing/publication.gradle +++ b/gradle/publishing/publication.gradle @@ -54,13 +54,15 @@ if (project.hasProperty("signing.keyId")) { } } -nexusPublishing { - repositories { - sonatype { - username = project.property('ossrhUsername') - password = project.property('ossrhPassword') - packageGroup = "org.xbib" +if (project.hasProperty('ossrhUsername')) { + nexusPublishing { + repositories { + sonatype { + username = project.property('ossrhUsername') + password = project.property('ossrhPassword') + packageGroup = "org.xbib" + } } + clientTimeout = Duration.ofSeconds(600) } - clientTimeout = Duration.ofSeconds(600) -} +} \ No newline at end of file diff --git a/graphics-pdfbox-print/build.gradle b/graphics-pdfbox-print/build.gradle new file mode 100644 index 0000000..4d7c572 --- /dev/null +++ b/graphics-pdfbox-print/build.gradle @@ -0,0 +1,3 @@ +dependencies { + api "org.apache.pdfbox:pdfbox:${project.property('pdfbox.version')}" +} diff --git a/graphics-pdfbox-print/src/main/java/module-info.java b/graphics-pdfbox-print/src/main/java/module-info.java index 7c4f9f4..4c9a1db 100644 --- a/graphics-pdfbox-print/src/main/java/module-info.java +++ b/graphics-pdfbox-print/src/main/java/module-info.java @@ -2,4 +2,5 @@ module org.xbib.graphics.pdfbox.print { exports org.xbib.graphics.pdfbox.print; requires java.logging; requires transitive java.desktop; + requires org.apache.pdfbox; } diff --git a/graphics-pdfbox-print/src/main/java/org/xbib/graphics/pdfbox/print/PrintUtility.java b/graphics-pdfbox-print/src/main/java/org/xbib/graphics/pdfbox/print/PrintUtility.java index 01ffb58..c6fd23c 100644 --- a/graphics-pdfbox-print/src/main/java/org/xbib/graphics/pdfbox/print/PrintUtility.java +++ b/graphics-pdfbox-print/src/main/java/org/xbib/graphics/pdfbox/print/PrintUtility.java @@ -1,5 +1,8 @@ package org.xbib.graphics.pdfbox.print; +import org.apache.pdfbox.pdmodel.PDDocument; +import org.apache.pdfbox.printing.PDFPageable; + import javax.print.Doc; import javax.print.DocFlavor; import javax.print.DocPrintJob; @@ -18,6 +21,7 @@ import javax.print.attribute.standard.PrinterMakeAndModel; import javax.print.attribute.standard.SheetCollate; import javax.print.attribute.standard.Sides; +import java.awt.print.PrinterJob; import java.io.InputStream; import java.util.ArrayList; import java.util.List; @@ -83,6 +87,14 @@ public class PrintUtility { job.print(doc, pas); } + public static void print(InputStream inputStream, Printer printer) throws Exception { + PDDocument document = PDDocument.load(inputStream); + PrinterJob job = PrinterJob.getPrinterJob(); + job.setPageable(new PDFPageable(document)); + job.setPrintService(printer.getService()); + job.print(); + } + public static Printer getPrinter(String printerName, DocFlavor docFlavor) { Printer printer = null; if (printerName != null) { diff --git a/graphics-pdfbox-print/src/test/java/org/xbib/graphics/pdfbox/print/test/PrinterTest.java b/graphics-pdfbox-print/src/test/java/org/xbib/graphics/pdfbox/print/test/PrinterTest.java index d9aaadb..aab9cc0 100644 --- a/graphics-pdfbox-print/src/test/java/org/xbib/graphics/pdfbox/print/test/PrinterTest.java +++ b/graphics-pdfbox-print/src/test/java/org/xbib/graphics/pdfbox/print/test/PrinterTest.java @@ -14,15 +14,14 @@ public class PrinterTest { @Test public void testPrinterSelection() { - logger.log(Level.INFO, "printer = " + PrintUtility.findPrinters(DocFlavor.INPUT_STREAM.PDF)); + logger.log(Level.INFO, "printer = " + PrintUtility.findPrinters(DocFlavor.INPUT_STREAM.AUTOSENSE)); } @Test public void print() throws Exception { - Printer printer = PrintUtility.getPrinter("Samsung_ML-1610", DocFlavor.INPUT_STREAM.PDF); + Printer printer = PrintUtility.getPrinter("Samsung ML-1610 (USB001)", DocFlavor.INPUT_STREAM.AUTOSENSE); if (printer != null) { - PrintUtility.print(getClass().getResourceAsStream("/test.pdf"), DocFlavor.INPUT_STREAM.PDF, printer); + PrintUtility.print(getClass().getResourceAsStream("/test.pdf"), printer); } } - }