SeaPrint - Network printing for SailfishOS

You formatting is all wonky, so i’ll start from my example…
(More on Markdown formatting here)

{
  "printer-uuid": {
    "urn:uuid:e3248000-80ce-11db-8000-30055c0d2e59": {
      "printer-name": {
        "tag": 54,
        "value": "Se-printer"
      },
      "some-other-attribute-name": {
        "tag": <some tag number>,
        "value": <some value>
      }
    }
  }
}

The stuff that goes “below” your matched attribute, the uuid in your case, has the same format as your debug info, i.e. the decoded printer attributes. (And is just overwritten into it)

So you can always compare with the debug info (including that of other printers). But start from a fresh copy and not the forum, because it breaks quotation marks.

Edit: both going to unknown means there is something structurally wrong. You also missed the “r” in printer in the second attribute.

1 Like

it works, thank you.

I also renamed successfully my toner from:

unknows supply
unknows supply
unknows supply
unknows supply

to:

Black
Cyan
Magenta
Yellow

I hope that is the right order of the toner. I checked it with my printer-app on the PC, the screenshots from app from Jolla store and the supply status on my printer.

Question 1:

I use this to rename it:

“marker-names”: {
“tag”: 54,
“value”: [
“”,
“”,
“”,
“”
]

or should i better use this to do it:

“marker-colors”: {
“tag”: 54,
“value”: [
“”,
“”,
“”,
“”
]
},

Question 2:
is there a way to see the right images for the toner? I always see the icons in black.

Nice to hear that there’s potential. My own usage has been very basic, I’ve just been adding <h1> tags around headers and replaced \r\ns with <br> tags, so I don’t have much insight on the size system or any finer details to share, but I wish you success on your development efforts on the great app!

1 Like

Well, the screenshot in the store is just my printer, no idea if that order is applicable for you. And i rather suspect the last one is your black, due to the different level.

From here you can see what things are used (and for what, but guessing should work fine).

Entries in “marker-names” are on top, and “marker-types” are below, “marker-colors” set the color.
No images involved, just colors, which are in names or RGB, like “#00FFFF” for Cyan. Obviously lengths of the []-lists need to be the same.

The toner I named Yellow is the correct one.It is new.

The others, i don`t know. I try to find it out by removing the toner one to another and take a look at the supply-Status in the app.
But if I removed a toner only “Printer Status” changed to “empty Toner”. But the Toner Supply status are not updated (I restarted the app too). Is this an issue from the app?

No. The app will tell you what it got from the printer, unless you override it.

have only overwritten the names of the toners, not its level. Just now I tried it again with an inactive override file.

But you can see, the result is the same.

So then that is what your printer sent. Nothing to be done about it.

Hi,
this seems to be a place for several questions about SeaPrint. I hope I am right. I did not read the whole thread but I do have the same problem as the thread starter with a Brother hl-1210w: “No compatible formats supported”. I have installed poppler-utils. Is there a list of supported printers? It would be fun to use the printer via Sailfish, although my life does not depend on it :wink:

The debug page says:

Summary

{
“charset-configured”: {
“tag”: 71,
“value”: “utf-8”
},
“charset-supported”: {
“tag”: 71,
“value”: [
“utf-8”
]
},
“compression-supported”: {
“tag”: 68,
“value”: [
“none”
]
},
“document-format-default”: {
“tag”: 73,
“value”: “application/octet-stream”
},
“document-format-supported”: {
“tag”: 73,
“value”: [
“application/vnd.brother-hbp”
]
},
“generated-natural-language-supported”: {
“tag”: 72,
“value”: [
“en-us”,
“da”,
“nl”,
“fi”,
“fr”,
“de”,
“it”,
“no”,
“pt”,
“sv”,
“es”,
“tr”,
“pl”,
“ja”,
“ru”,
“cs”,
“hu”
]
},
“ipp-version-supported”: {
“tag”: 68,
“value”: [
“1.0”
]
},
“multiple-document-jobs-supported”: {
“tag”: 34,
“value”: true
},
“multiple-operation-time-out”: {
“tag”: 33,
“value”: 150
},
“natural-language-configured”: {
“tag”: 72,
“value”: “en-us”
},
“operations-supported”: {
“tag”: 35,
“value”: [
2,
4,
5,
6,
8,
9,
10,
11
]
},
“pdl-override-supported”: {
“tag”: 68,
“value”: [
“not-attempted”
]
},
“printer-info”: {
“tag”: 65,
“value”: “MFG:Brother;CMD:PJL,HBP;MDL:HL-1210W series;CLS:PRINTER;CID:Brother Laser Type1;”
},
“printer-is-accepting-jobs”: {
“tag”: 34,
“value”: true
},
“printer-location”: {
“tag”: 19,
“value”: “”
},
“printer-make-and-model”: {
“tag”: 65,
“value”: “Brother HL-1210W series”
},
“printer-name”: {
“tag”: 66,
“value”: “BRW38B1DB2DFE12”
},
“printer-state”: {
“tag”: 35,
“value”: 3
},
“printer-state-message”: {
“tag”: 65,
“value”: “Sleep”
},
“printer-state-reasons”: {
“tag”: 68,
“value”: [
“none”
]
},
“printer-up-time”: {
“tag”: 33,
“value”: 366
},
“printer-uri-supported”: {
“tag”: 69,
“value”: [
http://192.168.178.26:631/”,
http://192.168.178.26:631/ipp”,
http://192.168.178.26:631/ipp/port1”,
http://192.168.178.26:631/brn38b1db2dfe12”,
http://192.168.178.26:631/binary_p1”,
http://192.168.178.26:631/text_p1”,
http://192.168.178.26:631/postscript_p1”,
http://192.168.178.26:631/pcl_p1”,
http://192.168.178.26:631/brn38b1db2dfe12_at”,
http://192.168.178.26:631/ipp/rseuqzdex5001”,
http://192.168.178.26:631/rseuqzdex5001”,
http://192.168.178.26:631/ipp/duerqxesz5090”,
http://192.168.178.26:631/duerqxesz5090
]
},
“queued-job-count”: {
“tag”: 33,
“value”: 0
},
“uri-authentication-supported”: {
“tag”: 68,
“value”: [
“none”,
“none”,
“none”,
“none”,
“none”,
“none”,
“none”,
“none”,
“none”,
“none”,
“none”,
“none”,
“none”
]
},
“uri-security-supported”: {
“tag”: 68,
“value”: [
“none”,
“none”,
“none”,
“none”,
“none”,
“none”,
“none”,
“none”,
“none”,
“none”,
“none”,
“none”,
“none”
]
}
}

Yes indeed, welcome.

It seems your printer only supports Brother’s proprietary “Host Based Printing”.
application/vnd.brother-hbp
So SeaPrint will not work with it.

I see no indication that we should doubt the correctness of that.
The cheapest printers tend to use weird proprietary formats to save cost, by running really old platforms etc.
There is basically no good reason they cannot support PWG/URF raster, but yet they don’t.

As always, if you get the printer working in CUPS, you can share it from there and make it available to SeaPrint.

No, i (or even the users) couldn’t feasibly maintain it.
And IMO it is the wrong approach to the issue anyway to list individual printers. SeaPrint does not deal with individual printer support, it supports IPP and the most common/standard encoding formats.
It aims to be a solution for the majority, but not all.
(The 90% of networked printers that are IPP, and the 90% of those that support standard formats)

So if your printer supports IPP and any of the following formats for transferring the documents/images, it should work (which unfortunately doesn’t seem to be the case for you).

For documents:

  • PDF
  • Postscript (needs poppler-utils)
  • PWG-raster (needs poppler-utils)
  • URF-raster (needs poppler-utils)

For images:

  • PNG
  • JPEG
  • PWG-raster
  • URF-raster

For printing JPEG images, transferring the unaltered image has priority and the printer does the scaling.
All other image formats are lossless and SeaPrint does scale-and-rotate to fit, JPEG has lowest prio here.

Printers with any of these certifications/sub-standards should very likely be supported:

  • IPP Everywhere
  • AirPrint

Probably these too:

  • Mopria
  • WiFi Direct

(obviously SeaPrint is unaffiliated and uncertified)

I really should put this information somewhere more visible… but it is too long for the Harbour description, and nobody ever visits github. Ideas?

At the moment the printer is only found when I turn “Allow unencrypted connections” on in the printer. Unencrypted print jobs in a network are an easy target for attacks.

Is it possible to make SeaPrint work over encrypted connections?

I’m trying out the new print txt file feature with a Lexmark E250 series network laser printer. (Super-excited about this feature!) I select a normal plaintext file, send it to the Lexmark the usual way and I see a popup message “Print success: pending”, and on the first attempt I hear the print spooling up like it’s gonna print, but then nothing comes out. Subsequent attempts just fail quietly (no activity at the printer) till I restart the printer. :confused:

The printer has a web config page, and I can print a text file (or postscript or PCL from there) and that does work. Also, printing PDFs from SeaPrint still works fine.

Let me know if a log of the console output would be helpful or if there’s anything else I can try.

In a way it is already supported through http upgrade, but seems some printers (like yours) doesn’t like that.

I have been planning to add looking for ipps/https printers, and even preferring that protocol for printers supporting both. That would probably mean that it would be doing encryption in a few more cases, and printers like yours working out of the box. But that is really mostly window dressing, as no authenticity checks are done at all.

Most, if not all printers use self-signed certificates, so SeaPrint ignores several SSL errors (as noted in the app description, which is perhaps not prominent enough).
So all it will really get you is basic sniffing protection, any MITM stuff or malicious m-dns responses still can’t be guarded against.

So i should probably add it, but don’t expect any serious security.

Hmm, that’s no good.

But since you say regular PDFs work fine, and the internal PDF generated for plaintext should be even more basic if anything, i don’t really know what could be going on.
From a 5-second google it looks like the actual transfer format fro that printer would be Postscript, but it would be good if you could confirm. Maybe posting the debug info could give some clues.

It could also be the case that your printer has basic PDF support that is found by checking other attributes, and manually setting transfer format to Postscript would help. (The options would still be auto-detect and Postscript, but SeaPrint could be sending the PDF anyway)

I could look at adding an option for sending the plaintext as-is, but unless what you have is really nicely formatted, like an RFC, at least my one printer that supports it would make an absolute mess out of it.

Yes, the printer uses Postscript. I don’t see anything in the docs or the configuration that suggests it has any built-in PDF capability. It does do plain text too (plus PCL emulation) but the onboard text rendering is super-naive. E.g., no text autowrap – if it goes off the edge of the paper, so be it. So sending plaintext to this device would probably be a disappointing experience.

Before SeaPrint had the text file support, I had been using ImageMagick’s convert function to render PDFs from text files. And other than wishing I’d cleaned up the line breaks a little, that worked fine with SeaPrint.

Here’s some logs . . .

[D] unknown:0 - Using Wayland-EGL
library "libGLESv2_adreno.so" not found
library "eglSubDriverAndroid.so" not found
[D] go:28 - go!
[D] unknown:0 - discovering 12 ("_ipp", "_tcp", "local")
[D] onStatusChanged:79 - Can convert from PDF: true
[D] onStatusChanged:80 - Can convert from Office: false
[D] expression for onSsidChanged:35 - ssid changed RobTheBold
[D] expression for onConnectedChanged:20 - conn true RobTheBold
[D] getFavourites:56 - RobTheBold []
[D] expression for onConnectedChanged:23 - []
[D] unknown:0 - new ipp ptrs ("Lexmark E250dn._ipp._tcp.local")
[D] unknown:0 - ipp ptrs ()
[D] unknown:0 - rps QMap()
[D] unknown:0 - ports QMap()
[D] unknown:0 - new targets ()
[D] unknown:0 - targets QMap()
[D] unknown:0 - AAs QMap()
[D] unknown:0 - AAAAs QMap()
[D] unknown:0 - discovering 255 ("Lexmark E250dn", "_ipp", "_tcp", "local")
[D] unknown:0 - new ipp ptrs ("EPSON ET-7700 Series._ipp._tcp.local")
[D] unknown:0 - ipp ptrs ("Lexmark E250dn._ipp._tcp.local")
[D] unknown:0 - rps QMap()
[D] unknown:0 - ports QMap()
[D] unknown:0 - new targets ()
[D] unknown:0 - targets QMap()
[D] unknown:0 - AAs QMap()
[D] unknown:0 - AAAAs QMap()
[D] unknown:0 - discovering 255 ("EPSON ET-7700 Series", "_ipp", "_tcp", "local")
[D] unknown:0 - () ()
[D] unknown:0 - new ipp ptrs ()
[D] unknown:0 - ipp ptrs ("Lexmark E250dn._ipp._tcp.local", "EPSON ET-7700 Series._ipp._tcp.local")
[D] unknown:0 - rps QMap(("EPSON ET-7700 Series._ipp._tcp.local", "")("Lexmark E250dn._ipp._tcp.local", ""))
[D] unknown:0 - ports QMap(("EPSON ET-7700 Series._ipp._tcp.local", 0)("Lexmark E250dn._ipp._tcp.local", 631))
[D] unknown:0 - new targets ("ET0004007EAE5D.local")
[D] unknown:0 - targets QMap(("EPSON ET-7700 Series._ipp._tcp.local", "")("Lexmark E250dn._ipp._tcp.local", "ET0004007EAE5D.local"))
[D] unknown:0 - AAs QMap()
[D] unknown:0 - AAAAs QMap()
[D] unknown:0 - discovering 255 ("ET0004007EAE5D", "local")
[D] unknown:0 - new ipp ptrs ()
[D] unknown:0 - ipp ptrs ("Lexmark E250dn._ipp._tcp.local", "EPSON ET-7700 Series._ipp._tcp.local")
[D] unknown:0 - rps QMap(("EPSON ET-7700 Series._ipp._tcp.local", "ipp/print")("Lexmark E250dn._ipp._tcp.local", ""))
[D] unknown:0 - ports QMap(("EPSON ET-7700 Series._ipp._tcp.local", 631)("Lexmark E250dn._ipp._tcp.local", 631))
[D] unknown:0 - new targets ("EPSONF37463.local")
[D] unknown:0 - targets QMap(("EPSON ET-7700 Series._ipp._tcp.local", "EPSONF37463.local")("Lexmark E250dn._ipp._tcp.local", "ET0004007EAE5D.local"))
[D] unknown:0 - AAs QMap()
[D] unknown:0 - AAAAs QMap()
[D] unknown:0 - discovering 255 ("EPSONF37463", "local")
[D] unknown:0 - new ipp ptrs ()
[D] unknown:0 - ipp ptrs ("Lexmark E250dn._ipp._tcp.local", "EPSON ET-7700 Series._ipp._tcp.local")
[D] unknown:0 - rps QMap(("EPSON ET-7700 Series._ipp._tcp.local", "ipp/print")("Lexmark E250dn._ipp._tcp.local", ""))
[D] unknown:0 - ports QMap(("EPSON ET-7700 Series._ipp._tcp.local", 631)("Lexmark E250dn._ipp._tcp.local", 631))
[D] unknown:0 - new targets ()
[D] unknown:0 - targets QMap(("EPSON ET-7700 Series._ipp._tcp.local", "EPSONF37463.local")("Lexmark E250dn._ipp._tcp.local", "ET0004007EAE5D.local"))
[D] unknown:0 - AAs QMap(("ET0004007EAE5D.local", "192.168.2.110"))
[D] unknown:0 - AAAAs QMap()
[D] unknown:0 - () ("ipp://192.168.2.110/")
[D] unknown:0 - "ipp"
[D] unknown:0 - "ipp://192.168.2.110/" QUrl("ipp://192.168.2.110/")
[D] unknown:0 - "ipp"
[D] unknown:0 - "ipp://192.168.2.110/" QUrl("ipp://192.168.2.110/")
[D] unknown:0 - new ipp ptrs ()
[D] unknown:0 - ipp ptrs ("Lexmark E250dn._ipp._tcp.local", "EPSON ET-7700 Series._ipp._tcp.local")
[D] unknown:0 - rps QMap(("EPSON ET-7700 Series._ipp._tcp.local", "ipp/print")("Lexmark E250dn._ipp._tcp.local", ""))
[D] unknown:0 - ports QMap(("EPSON ET-7700 Series._ipp._tcp.local", 631)("Lexmark E250dn._ipp._tcp.local", 631))
[D] unknown:0 - new targets ()
[D] unknown:0 - targets QMap(("EPSON ET-7700 Series._ipp._tcp.local", "EPSONF37463.local")("Lexmark E250dn._ipp._tcp.local", "ET0004007EAE5D.local"))
[D] unknown:0 - AAs QMap(("EPSONF37463.local", "192.168.2.59")("ET0004007EAE5D.local", "192.168.2.110"))
[D] unknown:0 - AAAAs QMap()
[D] unknown:0 - () ("ipp://192.168.2.110/", "ipp://192.168.2.59/ipp/print")
[D] unknown:0 - QImage(QSize(192, 192),format=5,depth=32,devicePixelRatio=1,bytesPerLine=768,byteCount=147456) true
[D] unknown:0 - "ipp"
[D] unknown:0 - "ipp://192.168.2.110/" QUrl("ipp://192.168.2.110/")
[D] unknown:0 - "ipp"
[D] unknown:0 - "ipp://192.168.2.110/" QUrl("ipp://192.168.2.110/")
[D] unknown:0 - "ipp"
[D] unknown:0 - "ipp://192.168.2.59/ipp/print" QUrl("ipp://192.168.2.59/ipp/print")
[D] unknown:0 - "ipp"
[D] unknown:0 - "ipp://192.168.2.59/ipp/print" QUrl("ipp://192.168.2.59/ipp/print")
[W] unknown:375 - file:///usr/share/harbour-seaprint/qml/pages/utils.js:375: TypeError: Cannot read property 'value' of undefined
[W] unknown:151 - file:///usr/share/harbour-seaprint/qml/pages/FirstPage.qml:151: TypeError: Cannot read property 'value' of undefined
[W] unknown:265 - file:///usr/share/harbour-seaprint/qml/pages/FirstPage.qml:265: TypeError: Cannot read property 'value' of undefined
[W] unknown:153 - file:///usr/share/harbour-seaprint/qml/pages/FirstPage.qml:153: TypeError: Cannot read property 'mimetypes' of undefined
[W] unknown:279 - file:///usr/share/harbour-seaprint/qml/pages/FirstPage.qml:279: TypeError: Cannot read property 'pdf' of undefined
[W] unknown:289 - file:///usr/share/harbour-seaprint/qml/pages/FirstPage.qml:289: TypeError: Cannot read property 'pdf' of undefined
[W] unknown:297 - file:///usr/share/harbour-seaprint/qml/pages/FirstPage.qml:297: TypeError: Cannot read property 'postscript' of undefined
[W] unknown:306 - file:///usr/share/harbour-seaprint/qml/pages/FirstPage.qml:306: TypeError: Cannot read property 'plaintext' of undefined
[W] unknown:314 - file:///usr/share/harbour-seaprint/qml/pages/FirstPage.qml:314: TypeError: Cannot read property 'office' of undefined
[W] unknown:322 - file:///usr/share/harbour-seaprint/qml/pages/FirstPage.qml:322: TypeError: Cannot read property 'images' of undefined
[W] unknown:5 - file:///usr/share/harbour-seaprint/qml/pages/utils.js:5: TypeError: Cannot read property 'value' of undefined
[W] unknown:375 - file:///usr/share/harbour-seaprint/qml/pages/utils.js:375: TypeError: Cannot read property 'value' of undefined
[W] unknown:151 - file:///usr/share/harbour-seaprint/qml/pages/FirstPage.qml:151: TypeError: Cannot read property 'value' of undefined
[W] unknown:265 - file:///usr/share/harbour-seaprint/qml/pages/FirstPage.qml:265: TypeError: Cannot read property 'value' of undefined
[W] unknown:153 - file:///usr/share/harbour-seaprint/qml/pages/FirstPage.qml:153: TypeError: Cannot read property 'mimetypes' of undefined
[W] unknown:279 - file:///usr/share/harbour-seaprint/qml/pages/FirstPage.qml:279: TypeError: Cannot read property 'pdf' of undefined
[W] unknown:289 - file:///usr/share/harbour-seaprint/qml/pages/FirstPage.qml:289: TypeError: Cannot read property 'pdf' of undefined
[W] unknown:297 - file:///usr/share/harbour-seaprint/qml/pages/FirstPage.qml:297: TypeError: Cannot read property 'postscript' of undefined
[W] unknown:306 - file:///usr/share/harbour-seaprint/qml/pages/FirstPage.qml:306: TypeError: Cannot read property 'plaintext' of undefined
[W] unknown:314 - file:///usr/share/harbour-seaprint/qml/pages/FirstPage.qml:314: TypeError: Cannot read property 'office' of undefined
[W] unknown:322 - file:///usr/share/harbour-seaprint/qml/pages/FirstPage.qml:322: TypeError: Cannot read property 'images' of undefined
[W] unknown:5 - file:///usr/share/harbour-seaprint/qml/pages/utils.js:5: TypeError: Cannot read property 'value' of undefined
[W] unknown:375 - file:///usr/share/harbour-seaprint/qml/pages/utils.js:375: TypeError: Cannot read property 'value' of undefined
[W] unknown:151 - file:///usr/share/harbour-seaprint/qml/pages/FirstPage.qml:151: TypeError: Cannot read property 'value' of undefined
[W] unknown:265 - file:///usr/share/harbour-seaprint/qml/pages/FirstPage.qml:265: TypeError: Cannot read property 'value' of undefined
[W] unknown:153 - file:///usr/share/harbour-seaprint/qml/pages/FirstPage.qml:153: TypeError: Cannot read property 'mimetypes' of undefined
[W] unknown:279 - file:///usr/share/harbour-seaprint/qml/pages/FirstPage.qml:279: TypeError: Cannot read property 'pdf' of undefined
[W] unknown:289 - file:///usr/share/harbour-seaprint/qml/pages/FirstPage.qml:289: TypeError: Cannot read property 'pdf' of undefined
[W] unknown:297 - file:///usr/share/harbour-seaprint/qml/pages/FirstPage.qml:297: TypeError: Cannot read property 'postscript' of undefined
[W] unknown:306 - file:///usr/share/harbour-seaprint/qml/pages/FirstPage.qml:306: TypeError: Cannot read property 'plaintext' of undefined
[W] unknown:314 - file:///usr/share/harbour-seaprint/qml/pages/FirstPage.qml:314: TypeError: Cannot read property 'office' of undefined
[W] unknown:322 - file:///usr/share/harbour-seaprint/qml/pages/FirstPage.qml:322: TypeError: Cannot read property 'images' of undefined
[W] unknown:5 - file:///usr/share/harbour-seaprint/qml/pages/utils.js:5: TypeError: Cannot read property 'value' of undefined
[W] unknown:0 - QThread: Destroyed while thread is still running
[D] unknown:0 - QNetworkReply::NetworkError(UnknownContentError) "Error transferring http://192.168.2.59:631/ipp/print - server replied: Upgrade Required" ""
[W] unknown:5 - file:///usr/share/harbour-seaprint/qml/pages/utils.js:5: TypeError: Cannot read property 'value' of undefined
[W] unknown:265 - file:///usr/share/harbour-seaprint/qml/pages/FirstPage.qml:265: TypeError: Cannot read property 'value' of undefined
[W] unknown:151 - file:///usr/share/harbour-seaprint/qml/pages/FirstPage.qml:151: TypeError: Cannot read property 'value' of undefined
[W] unknown:375 - file:///usr/share/harbour-seaprint/qml/pages/utils.js:375: TypeError: Cannot read property 'value' of undefined
[D] unknown:0 - QNetworkReply::NetworkError(NoError) "Unknown error" ""
[D] unknown:0 - 0 QJsonObject({"attributes-charset":{"tag":71,"value":"utf-8"},"attributes-natural-language":{"tag":72,"value":"en-us"}}) QJsonObject({"charset-configured":{"tag":71,"value":"utf-8"},"charset-supported":{"tag":71,"value":["utf-8","us-ascii"]},"color-supported":{"tag":34,"value":false},"compression-supported":{"tag":68,"value":["none","none"]},"copies-default":{"tag":33,"value":1},"copies-supported":{"tag":51,"value":{"high":999,"low":1}},"document-format-default":{"tag":73,"value":"application/octet-stream"},"document-format-supported":{"tag":73,"value":["application/octet-stream","application/postscript","application/vnd.hp-PCL","text/plain"]},"generated-natural-language-supported":{"tag":72,"value":["en-us"]},"ipp-versions-supported":{"tag":68,"value":["1.0","1.1"]},"job-sheets-default":{"tag":68,"value":"none"},"job-sheets-supported":{"tag":68,"value":["none","standard"]},"natural-language-configured":{"tag":72,"value":"en-us"},"number-up-default":{"tag":33,"value":1},"number-up-supported":{"tag":51,"value":{"high":16,"low":1}},"operations-supported":{"tag":35,"value":[2,4,8,9,10,11,18]},"orientation-requested-default":{"tag":35,"value":3},"orientation-requested-supported":{"tag":35,"value":[3,4]},"pdl-override-supported":{"tag":68,"value":["not-attempted"]},"printer-is-accepting-jobs":{"tag":34,"value":true},"printer-make-and-model":{"tag":65,"value":"Lexmark E250dn"},"printer-name":{"tag":66,"value":"Lexmark E250dn"},"printer-state":{"tag":35,"value":3},"printer-state-reasons":{"tag":68,"value":["none"]},"printer-up-time":{"tag":33,"value":11319},"printer-uri-supported":{"tag":69,"value":["ipp://127.0.0.1:80","ipp://127.0.0.1/"]},"queued-job-count":{"tag":33,"value":0},"reference-uri-schemes-supported":{"tag":70,"value":["http","https","ftp"]},"sides-default":{"tag":68,"value":"one-sided"},"sides-supported":{"tag":68,"value":["one-sided","two-sided-long-edge","two-sided-short-edge"]},"uri-authentication-supported":{"tag":68,"value":["none","none"]},"uri-security-supported":{"tag":68,"value":["none","none"]}})
[D] unknown:0 - AAAAAAAAAAAAAAA "/home/defaultuser/.seaprint_overrides"
[D] expression for onRefreshed:171 - onRefreshed
[D] expression for onRefreshed:171 - onRefreshed
[D] unknown:0 - QNetworkReply::NetworkError(InternalServerError) "Error transferring http://192.168.2.59:631/ipp/print - server replied: Internal Server Error" ""
[W] unknown:5 - file:///usr/share/harbour-seaprint/qml/pages/utils.js:5: TypeError: Cannot read property 'value' of undefined
[W] unknown:265 - file:///usr/share/harbour-seaprint/qml/pages/FirstPage.qml:265: TypeError: Cannot read property 'value' of undefined
[W] unknown:151 - file:///usr/share/harbour-seaprint/qml/pages/FirstPage.qml:151: TypeError: Cannot read property 'value' of undefined
[W] unknown:375 - file:///usr/share/harbour-seaprint/qml/pages/utils.js:375: TypeError: Cannot read property 'value' of undefined
[D] unknown:0 - QNetworkReply::NetworkError(NoError) "Unknown error" ""
[D] unknown:0 - 0 QJsonObject({"attributes-charset":{"tag":71,"value":"utf-8"},"attributes-natural-language":{"tag":72,"value":"en-us"}}) QJsonObject({"charset-configured":{"tag":71,"value":"utf-8"},"charset-supported":{"tag":71,"value":["utf-8","us-ascii"]},"color-supported":{"tag":34,"value":false},"compression-supported":{"tag":68,"value":["none","none"]},"copies-default":{"tag":33,"value":1},"copies-supported":{"tag":51,"value":{"high":999,"low":1}},"document-format-default":{"tag":73,"value":"application/octet-stream"},"document-format-supported":{"tag":73,"value":["application/octet-stream","application/postscript","application/vnd.hp-PCL","text/plain"]},"generated-natural-language-supported":{"tag":72,"value":["en-us"]},"ipp-versions-supported":{"tag":68,"value":["1.0","1.1"]},"job-sheets-default":{"tag":68,"value":"none"},"job-sheets-supported":{"tag":68,"value":["none","standard"]},"natural-language-configured":{"tag":72,"value":"en-us"},"number-up-default":{"tag":33,"value":1},"number-up-supported":{"tag":51,"value":{"high":16,"low":1}},"operations-supported":{"tag":35,"value":[2,4,8,9,10,11,18]},"orientation-requested-default":{"tag":35,"value":3},"orientation-requested-supported":{"tag":35,"value":[3,4]},"pdl-override-supported":{"tag":68,"value":["not-attempted"]},"printer-is-accepting-jobs":{"tag":34,"value":true},"printer-make-and-model":{"tag":65,"value":"Lexmark E250dn"},"printer-name":{"tag":66,"value":"Lexmark E250dn"},"printer-state":{"tag":35,"value":3},"printer-state-reasons":{"tag":68,"value":["none"]},"printer-up-time":{"tag":33,"value":11323},"printer-uri-supported":{"tag":69,"value":["ipp://127.0.0.1:80","ipp://127.0.0.1/"]},"queued-job-count":{"tag":33,"value":0},"reference-uri-schemes-supported":{"tag":70,"value":["http","https","ftp"]},"sides-default":{"tag":68,"value":"one-sided"},"sides-supported":{"tag":68,"value":["one-sided","two-sided-long-edge","two-sided-short-edge"]},"uri-authentication-supported":{"tag":68,"value":["none","none"]},"uri-security-supported":{"tag":68,"value":["none","none"]}})
[D] onStatusChanged:79 - Can convert from PDF: true
[D] onStatusChanged:80 - Can convert from Office: false
[W] unknown:6 - file:///usr/share/harbour-seaprint/qml/components/MediaColSetting.qml:6: TypeError: Cannot read property 'value' of undefined
[D] servicesChanged:23 - services changed
[D] go:28 - go!
[D] onClicked:63 - {}
[D] unknown:0 - printing "/home/defaultuser/Documents/teriyaki.txt" QJsonObject()
[D] unknown:0 - QJsonArray(["application/octet-stream","application/postscript","application/vnd.hp-PCL","text/plain"]) true
[D] unknown:0 - target format: "application/octet-stream"
[D] unknown:0 - adjusted target format: "application/postscript"
[D] unknown:0 - Printing job QJsonObject({"attributes-charset":{"tag":71,"value":"utf-8"},"attributes-natural-language":{"tag":72,"value":"en-us"},"document-format":{"tag":73,"value":"application/octet-stream"},"job-name":{"tag":66,"value":"teriyaki.txt"},"printer-uri":{"tag":69,"value":"ipp://192.168.2.110/"},"requesting-user-name":{"tag":66,"value":"defaultuser"}}) QJsonObject()
[D] unknown:0 - Final op attributes: QJsonObject({"attributes-charset":{"tag":71,"value":"utf-8"},"attributes-natural-language":{"tag":72,"value":"en-us"},"document-format":{"tag":73,"value":"application/octet-stream"},"job-name":{"tag":66,"value":"teriyaki.txt"},"printer-uri":{"tag":69,"value":"ipp://192.168.2.110/"},"requesting-user-name":{"tag":66,"value":"defaultuser"}})
[D] unknown:0 - Final job attributes: QJsonObject()
[D] unknown:0 - "/tmp/seaprint.J23951"
[D] unknown:0 - pdftops args is  ("-paper", "A4", "/tmp/seaprint.K23951", "-")
[D] unknown:0 - Starting
[D] unknown:0 - Started
[D] unknown:0 - Finished
[D] unknown:0 - 0 QJsonObject({"attributes-charset":{"tag":71,"value":"utf-8"},"attributes-natural-language":{"tag":72,"value":"en-us"}}) QJsonArray([{"job-id":{"tag":33,"value":8},"job-state":{"tag":35,"value":3},"job-uri":{"tag":69,"value":"ipp://127.0.0.1/job8"}}])
[D] expression for onRefreshed:171 - onRefreshed
[D] expression for onRefreshed:171 - onRefreshed
[D] notify:124 - notifyMessage Print success: pending
[D] unknown:0 - QNetworkReply::NetworkError(UnknownContentError) "Error transferring http://192.168.2.59:631/ipp/print - server replied: Upgrade Required" ""
[W] unknown:5 - file:///usr/share/harbour-seaprint/qml/pages/utils.js:5: TypeError: Cannot read property 'value' of undefined
[W] unknown:265 - file:///usr/share/harbour-seaprint/qml/pages/FirstPage.qml:265: TypeError: Cannot read property 'value' of undefined
[W] unknown:151 - file:///usr/share/harbour-seaprint/qml/pages/FirstPage.qml:151: TypeError: Cannot read property 'value' of undefined
[W] unknown:375 - file:///usr/share/harbour-seaprint/qml/pages/utils.js:375: TypeError: Cannot read property 'value' of undefined
[D] unknown:0 - QNetworkReply::NetworkError(NoError) "Unknown error" ""
[D] unknown:0 - 0 QJsonObject({"attributes-charset":{"tag":71,"value":"utf-8"},"attributes-natural-language":{"tag":72,"value":"en-us"}}) QJsonObject({"charset-configured":{"tag":71,"value":"utf-8"},"charset-supported":{"tag":71,"value":["utf-8","us-ascii"]},"color-supported":{"tag":34,"value":false},"compression-supported":{"tag":68,"value":["none","none"]},"copies-default":{"tag":33,"value":1},"copies-supported":{"tag":51,"value":{"high":999,"low":1}},"document-format-default":{"tag":73,"value":"application/octet-stream"},"document-format-supported":{"tag":73,"value":["application/octet-stream","application/postscript","application/vnd.hp-PCL","text/plain"]},"generated-natural-language-supported":{"tag":72,"value":["en-us"]},"ipp-versions-supported":{"tag":68,"value":["1.0","1.1"]},"job-sheets-default":{"tag":68,"value":"none"},"job-sheets-supported":{"tag":68,"value":["none","standard"]},"natural-language-configured":{"tag":72,"value":"en-us"},"number-up-default":{"tag":33,"value":1},"number-up-supported":{"tag":51,"value":{"high":16,"low":1}},"operations-supported":{"tag":35,"value":[2,4,8,9,10,11,18]},"orientation-requested-default":{"tag":35,"value":3},"orientation-requested-supported":{"tag":35,"value":[3,4]},"pdl-override-supported":{"tag":68,"value":["not-attempted"]},"printer-is-accepting-jobs":{"tag":34,"value":true},"printer-make-and-model":{"tag":65,"value":"Lexmark E250dn"},"printer-name":{"tag":66,"value":"Lexmark E250dn"},"printer-state":{"tag":35,"value":4},"printer-state-reasons":{"tag":68,"value":["none"]},"printer-up-time":{"tag":33,"value":11330},"printer-uri-supported":{"tag":69,"value":["ipp://127.0.0.1:80","ipp://127.0.0.1/"]},"queued-job-count":{"tag":33,"value":1},"reference-uri-schemes-supported":{"tag":70,"value":["http","https","ftp"]},"sides-default":{"tag":68,"value":"one-sided"},"sides-supported":{"tag":68,"value":["one-sided","two-sided-long-edge","two-sided-short-edge"]},"uri-authentication-supported":{"tag":68,"value":["none","none"]},"uri-security-supported":{"tag":68,"value":["none","none"]}})
[D] onStatusChanged:79 - Can convert from PDF: true
[D] onStatusChanged:80 - Can convert from Office: false
[D] servicesChanged:23 - services changed
[D] go:28 - go!
[D] servicesChanged:23 - services changed
[D] go:28 - go!
[D] servicesChanged:23 - services changed
[D] go:28 - go!
[D] expression for onRefreshed:171 - onRefreshed
[D] expression for onRefreshed:171 - onRefreshed
[D] unknown:0 - QNetworkReply::NetworkError(UnknownContentError) "Error transferring http://192.168.2.59:631/ipp/print - server replied: Upgrade Required" ""
[W] unknown:5 - file:///usr/share/harbour-seaprint/qml/pages/utils.js:5: TypeError: Cannot read property 'value' of undefined
[W] unknown:265 - file:///usr/share/harbour-seaprint/qml/pages/FirstPage.qml:265: TypeError: Cannot read property 'value' of undefined
[W] unknown:151 - file:///usr/share/harbour-seaprint/qml/pages/FirstPage.qml:151: TypeError: Cannot read property 'value' of undefined
[W] unknown:375 - file:///usr/share/harbour-seaprint/qml/pages/utils.js:375: TypeError: Cannot read property 'value' of undefined
[D] unknown:0 - QNetworkReply::NetworkError(NoError) "Unknown error" ""
[D] unknown:0 - 0 QJsonObject({"attributes-charset":{"tag":71,"value":"utf-8"},"attributes-natural-language":{"tag":72,"value":"en-us"}}) QJsonObject({"charset-configured":{"tag":71,"value":"utf-8"},"charset-supported":{"tag":71,"value":["utf-8","us-ascii"]},"color-supported":{"tag":34,"value":false},"compression-supported":{"tag":68,"value":["none","none"]},"copies-default":{"tag":33,"value":1},"copies-supported":{"tag":51,"value":{"high":999,"low":1}},"document-format-default":{"tag":73,"value":"application/octet-stream"},"document-format-supported":{"tag":73,"value":["application/octet-stream","application/postscript","application/vnd.hp-PCL","text/plain"]},"generated-natural-language-supported":{"tag":72,"value":["en-us"]},"ipp-versions-supported":{"tag":68,"value":["1.0","1.1"]},"job-sheets-default":{"tag":68,"value":"none"},"job-sheets-supported":{"tag":68,"value":["none","standard"]},"natural-language-configured":{"tag":72,"value":"en-us"},"number-up-default":{"tag":33,"value":1},"number-up-supported":{"tag":51,"value":{"high":16,"low":1}},"operations-supported":{"tag":35,"value":[2,4,8,9,10,11,18]},"orientation-requested-default":{"tag":35,"value":3},"orientation-requested-supported":{"tag":35,"value":[3,4]},"pdl-override-supported":{"tag":68,"value":["not-attempted"]},"printer-is-accepting-jobs":{"tag":34,"value":true},"printer-make-and-model":{"tag":65,"value":"Lexmark E250dn"},"printer-name":{"tag":66,"value":"Lexmark E250dn"},"printer-state":{"tag":35,"value":3},"printer-state-reasons":{"tag":68,"value":["none"]},"printer-up-time":{"tag":33,"value":11367},"printer-uri-supported":{"tag":69,"value":["ipp://127.0.0.1:80","ipp://127.0.0.1/"]},"queued-job-count":{"tag":33,"value":0},"reference-uri-schemes-supported":{"tag":70,"value":["http","https","ftp"]},"sides-default":{"tag":68,"value":"one-sided"},"sides-supported":{"tag":68,"value":["one-sided","two-sided-long-edge","two-sided-short-edge"]},"uri-authentication-supported":{"tag":68,"value":["none","none"]},"uri-security-supported":{"tag":68,"value":["none","none"]}})

Indeed, no extra PDF support there.

I also see an Epson printer in there, but seems it fails when getting info abut it. So i assume you don’t see it in the app? That’s worrying…

Quite strange that the Qt-made (internal) PDF when passed through pdftops doesn’t work, but random PDFs and ImageMagick-made ones do. I’ll see if i can find any differences, but i also don’t really know any things i could change.
Both my printers seems happy with it, both in PDF and in Postscript.

Edit: I do pass user-supplied PDFs through pdftocairo to get the dimensions right, maybe it does more to make them appetizing to printers.

The Epson (a much newer device) used to show up, but I never could get it to print. Lately, it hasn’t been appearing in the printer list at all. I thought I saw something about needing updated in the error log, but AFAICT, it’s running the latest available firmware.

That would be really appreciated. I understand that not every case is secured, but in this case, we can leave this box checked in the settings and keep AirPrint working (as it demands this setting) for Apple devices.

In most newer printers (at least the Epson’s we have) you can upload a certificate to the printer to be used, so even the option of “ignore SSL errors” can be left aside or turned off (if possible to create this check-box in the app)

I am more than happy to send you a donation/payment for this IPPS/HTTPS feature.

By no means a printing specialist, but weighing in anyhow:
The described behaviour

sounds like something I’ve encountered when trying to print documents that have smaller margins/content closer to paper edges than the printer supports. At least with some application-printer combinations the result is just silent failure, so I’d imagine one could test if over-sizing every margin helps.

2 Likes

Interesting, that could very well be it.
The margins are pretty big as it is, but logically i set them to zero to get the sizing to work properly.
(The QTextDocument already has fine-tuned margins, and compensating for margins on margins is really messy)
I wouldn’t be surprised if that is still passed through somehow.

@robthebold If you want, send me a message with your email, and i’ll throw a test PDF your way that has made an extra trip through pdftocairo. I don’t think that is the proper solution, but definitely an interesting data point.