From bdc78e232c4b582f19564bcf0536530a0ead8e10 Mon Sep 17 00:00:00 2001 From: Gerhard Muth Date: Mon, 23 Mar 2020 13:17:25 +0100 Subject: [PATCH] added support for ipp scheme --- README.md | 11 +++++------ build.gradle.kts | 2 +- demo/go | 2 +- demo/printjob.jar | Bin 1495838 -> 1501910 bytes .../kotlin/ipp/printJobByteArrayVersion.kt | 4 +++- .../kotlin/ipp/printJobStreamingVersion.kt | 4 +++- src/main/kotlin/ipp/printJobWithStatusOnly.kt | 4 +++- 7 files changed, 16 insertions(+), 11 deletions(-) diff --git a/README.md b/README.md index e69474b..f48a8b9 100644 --- a/README.md +++ b/README.md @@ -21,12 +21,11 @@ containing the Printer Simulator. ### Usage The tool takes two arguments: *printer-uri* and *file-name*. -The url scheme `ipp://` is not supported - use `http://` instead. If you don't know the printer uri try `ippfind`. - java -jar printjob.jar http://colorjet:631/ipp/printer A4-blank.pdf + java -jar printjob.jar ipp://colorjet:631/ipp/printer A4-blank.pdf - send ipp request to http://colorjet:631/ipp/printer + send ipp request to ipp://colorjet:631/ipp/printer ipp version 1.1 ipp response status: 0000 group 01 @@ -42,7 +41,7 @@ If you don't know the printer uri try `ippfind`. The equivalent kotlin code is: printJobStreamingVersion( - URI.create("http://colorjet:631/ipp/printer"), + URI.create("ipp://colorjet:631/ipp/printer"), FileInputStream(File("A4-blank.pdf")) ) @@ -59,13 +58,13 @@ If required by your printer, you can set the document format programmatically by If you use an unsupported `printer-uri` you will get a response similar to this one: - send ipp request to http://localhost:8632/ipp/norona + send ipp request to ipp://localhost:8632/ipp/norona ipp version 1.1 ipp status 0400 group 01 attributes-charset (47) = utf-8 attributes-natural-language (48) = en - status-message (41) = Bad printer-uri "http://localhost:8632/ipp/norona". + status-message (41) = Bad printer-uri "ipp://localhost:8632/ipp/norona". group 03 You can use `ippfind` or `dns-sd -Z _ipp._tcp` (look at the rp value) to discover your printer's uri. diff --git a/build.gradle.kts b/build.gradle.kts index 468d4ad..d06ac73 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -22,7 +22,7 @@ tasks.withType() { archiveBaseName.set("printjob") archiveClassifier.set("") manifest { - attributes(mapOf("Main-Class" to "ipp.PrintJobKt")) + attributes(mapOf("Main-Class" to "ipp.PrintJobStreamingVersionKt")) } } diff --git a/demo/go b/demo/go index dc29881..d182f43 100755 --- a/demo/go +++ b/demo/go @@ -1 +1 @@ -java -jar printjob.jar http://localhost:8632/printers/laser A4-blank.pdf +java -jar printjob.jar ipp://localhost:8632/printers/laser A4-blank.pdf diff --git a/demo/printjob.jar b/demo/printjob.jar index 887e24185d37680a6fd7a6a9a29778478c8af13c..b67b250560a0b457f4016df6ad5fb2a5effb8ab7 100644 GIT binary patch delta 41626 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 diff --git a/src/main/kotlin/ipp/printJobByteArrayVersion.kt b/src/main/kotlin/ipp/printJobByteArrayVersion.kt index bf2e578..2278452 100644 --- a/src/main/kotlin/ipp/printJobByteArrayVersion.kt +++ b/src/main/kotlin/ipp/printJobByteArrayVersion.kt @@ -43,7 +43,9 @@ fun printJobByteArrayVersion(uri: URI, documentInputStream: InputStream) { // exchange ipp messages via http println("send ipp request to $uri") - val ippResponse = with(uri.toURL().openConnection() as HttpURLConnection) { + val httpScheme = uri.scheme.replace("ipp", "http") + val httpUri = URI.create("${httpScheme}:${uri.schemeSpecificPart}") + val ippResponse = with(httpUri.toURL().openConnection() as HttpURLConnection) { val ippContentType = "application/ipp" setConnectTimeout(3000) setDoOutput(true) diff --git a/src/main/kotlin/ipp/printJobStreamingVersion.kt b/src/main/kotlin/ipp/printJobStreamingVersion.kt index 20eb61e..7e285c5 100644 --- a/src/main/kotlin/ipp/printJobStreamingVersion.kt +++ b/src/main/kotlin/ipp/printJobStreamingVersion.kt @@ -23,7 +23,9 @@ fun printJobStreamingVersion(uri: URI, documentInputStream: InputStream) { val ippContentType = "application/ipp" println("send ipp request to $uri") - val httpURLConnection = uri.toURL().openConnection() as HttpURLConnection + val httpScheme = uri.scheme.replace("ipp", "http") + val httpUri = URI.create("${httpScheme}:${uri.schemeSpecificPart}") + val httpURLConnection = httpUri.toURL().openConnection() as HttpURLConnection with(httpURLConnection) { setConnectTimeout(3000) setDoOutput(true) diff --git a/src/main/kotlin/ipp/printJobWithStatusOnly.kt b/src/main/kotlin/ipp/printJobWithStatusOnly.kt index a9fa330..d0145c5 100644 --- a/src/main/kotlin/ipp/printJobWithStatusOnly.kt +++ b/src/main/kotlin/ipp/printJobWithStatusOnly.kt @@ -19,7 +19,9 @@ fun main(args: Array) { fun printJobWithStatusOnly(uri: URI, documentInputStream: InputStream) { val charset = Charsets.UTF_8 - with(uri.toURL().openConnection() as HttpURLConnection) { + val httpScheme = uri.scheme.replace("ipp", "http") + val httpUri = URI.create("${httpScheme}:${uri.schemeSpecificPart}") + with(httpUri.toURL().openConnection() as HttpURLConnection) { setDoOutput(true) setRequestProperty("Content-Type", "application/ipp") // encode ipp request 'Print-Job operation'