How to build a printer

340 points72 comments13 hours ago
ValdikSS

>penguin would shrink the result to fit its screen. >I declared A5 and Letter paper, media type stationery, and an output bin called face-up.

You can (and should!) define exact dimensions of your screen in `media-size-supported`. It will probably be a non-standard IPP name, that's why you should define that in `media-supported` as `om_NNNmmxYYYmm` or `oe_NNNinxYYYin`

That way you don't need to scale the incoming data, the PC will format it exactly to the dimensions of the screen.

Both PWG Raster and Apple Raster support 1-bit-per-pixel mode (instead of 8-bit-per-pixel you use), that's why the input could be 8 times less in size. Use `print-color-mode-{supported,default}=bi-level` instead of `monochrome` for that. And also tune `urf-supported`'s `W` option, use `W1` for this case.

The screen/dithering could be ass in 1-bit mode, see https://github.com/OpenPrinting/libcupsfilters/pull/160 where I added more dithering options (Linux-only though, Apple seems to abandon their CUPS).

show comments
alternativeworl

Very cool. I was expecting to learn about the ins and outs of ink, printheads etc but instead learned "How to build a paper that acts like a printer" which turned out much more entertaining.

show comments
tapia

In Linux it's pretty easy to create such things with cups. A while ago I did a cups backend for my Fujitsu Quaderno A4 [1]. It is super useful to be able to just open any document, in any program that supports printing, and then just "print" it to my device.

[1] https://github.com/cristobaltapia/dpt-rp1-cups

show comments
pimterry

This would be a neat API for a digital photo frame - just print photos to it and they appear on the screen.

show comments
kitd

Good article.

One of the great things about having an open platform like the Xteink is that it should uncover loads of novel and unsatisfied use cases. Eg, this could be paired with a mobile phone to act as a secondary display much better suited to outdoor applications in bright sunlight.

show comments
yeasin-arafat

Emulating a network printer to send pages to an e-ink screen is such a clever hack. Every OS already has the print dialog built in.

show comments
ks2048

Good job, but I’m left wanting to know how to build a printer.

show comments
e12e

Nice. I keep wondering if these devices would play nicer with DjVu rather than pdfs and raster formats?

https://djvu.sourceforge.net/

jiehong

Pretty cool work! And it’s nice to see printer discovery works through the standard mDNS!

Regarding the size of the page being sent to the printer, I remember reading that printers used to be postscript interpreters and the result of that program would be the page.

Perhaps that would trade ram for compute, but might be more complex in the end.

jarboot

This is amazing!!! It just makes sense. And its just how you would want to use a e reader.

show comments
Wilson2000

Love this!

greazy

I don't understand the purpose. What am I missing?

The author "prints" to the eink display. Why not load say the pdf directly?

show comments
joshmarinacci

I love the concept, but I wonder why he wasn’t printing to PDF. Can this device not render PDFs?

show comments
stavros

I've been seeing the Xteink a lot lately. Should I get an X3 or an X4? I don't really know why I want it, but I have an eInk addiction, so I just need it.

show comments
sho_hn

This is a fantastic idea!

NDlurker

Very cool. I'll be updating to this fork

show comments
andyfilms1

We finally have PADDs from Star Trek!

show comments
Brian_K_White

Outstanding! This is so...correct.