4 ms·
Browser support for printing is so bad that I'm going to have to create a native app for https://www.thingybase.com https://www.thingybase.com to have a streaml
by bradgessler 3y ago
Browser support for printing is so bad that I'm going to have to create a native app for https://www.thingybase.com https://www.thingybase.com to have a streamlined workflow of printing labels to a thermal label printer.
It works now, but first you have to download a PDF and print that. Google Docs does this too when you hit "Print".
I've tried hacks like load the PDF in an iframe and use some JavaScript to print that, but then I get footers with the URL of the webpage, which doesn't work for my purposes.
If you work on Chrome/Blink, Safari/Webkit, or Firefox/Mozilla please please please at least get the hacks working!
A CSS standard would be great, but really I'd be happy if I could call a function like `windows.print("/document.pdf")` and have it print the PDF without all the footer/headers stuff.
- IgorPartola 3y agoI’ve worked with thermal printers and they are actually quite capable. They have drawing primitives that allow you to lay out basic graphics and the one I was working with even had basic font support. A native driver is definitely the way to go with these.
- bradgessler 3y ago> A native driver is definitely the way to go with these. Not if you need to support a bunch of different printers. For me PDF is the way to go, but browsers can't print a PDF via a "Print" button within the HTML, so instead I have to build apps that download the PDF and print it directly through operating system APIs.
- djbusby 3y agoOpen the PDF in a new window and call window.print() on it.
- bradgessler 3y agoThat doesn’t work on iOS—you get the URL in the footer at the bottom of the page.
- blorenz 3y agoI have this in my SaaS, as well. I built an Electron app that ushers the jobs from the cloud to the thermal printer. It all works until there is a failed job and the queue backs up. I haven't quite figured out how to monitor the queue remotely yet.
- bradgessler 3y agoI’m probably going to run the app inside of Electron and print from there, so it will be easier in my case for the users to monitor the queue.
- rudasn 3y agoIf so, then you have a full browser to generate your pdfs on. An approach I have used (more or less): - have a print.html template page - use iframe to render and load the page - either on the print page, or from top frame, call window.print You can use the aforementioned js libraries to generate footers and such, and use any print css. You can test the print layout in your dev tools, no need to wait for browser preview. Note that browsers will try to render thead and tfooter elements on every page their parent table spans, that can be very useful. At work we have a playwright container with express js waiting for incoming requests to load the print.html page and save it as pdf. We're also using volumes so that all data exchange happens in disk and not being passed around in http requests. PDFs that took maybe 30 seconds with weasy print, now take 5 seconds.
- rudasn 3y agoMaybe you can use pdf.js from mozilla to render the pdf in the browser and trigger the print function from your js?
- bradgessler 3y agoI’ve tried that and it didn’t work. It actually didn’t work as well as throwing a PDF at it.
- thekingshorses 3y agoWell, you can use .pdfp to print it on Windows. You will need adobe acrobat (free). This is a very old trick but still works on Windows 10. We use it with the latest edge. I do wish that the browser had a special direct printing option. https://groups.google.com/g/comp.text.pdf/c/dHuBMsaovco?pli=1 https://groups.google.com/g/comp.text.pdf/c/dHuBMsaovco?pli=...
- voussoir 3y agoI realize you're working on the software side rather than the hardware side, and you mentioned you're trying to support existing printers, but your comment reminded me of something I'd like to throw out there: I would like to have a thermal printer that plugs into the computer via USB and appears as a mass storage device. When you drop an image file (PNG, BMP) into it, it prints it out. A config file would tell the printer what paper stock you have loaded. This way the computer does not need any special drivers, and it would be so stupidly easy to write programs that generate image files to be printed. I think more hardware should take advantage of filesystem operations as a control method. If someday you ever think about producing a first-party thingybase printer...
- ramses0 3y agoGlue + screw a Pi underneath a thermal printer???!?
- ethanbond 3y agoThis is a really cool project. What’s the pricing?!
- bradgessler 3y agoFree up to 100 items, then $59.98/year ($4.99/mo billed annually).
- Boltgolt 3y agoYou can force remove the URL and page numbers on the printout by setting the @page rule padding to 0
- hiccuphippo 3y agoI did this a long time ago. Made a small qt app and hooked it to the `print://` scheme in the Windows registry, so in the web server I just had to change a link to `print://example.com/whatever` and the app would load the url and send it to the printer, for the website's domain it would skip any confirmation.