I have a working backend to print on Windows and i wanted to gauge the level of interest in working to send for consideration to incorporate into the main release. If not very desirable, I’ll keep as a personal tool or share as files that could be compiled from source. Its only two new files and a minor expansion of print_settings.c to handle some Windows quirks along with slight adjustments to a few cmakelists to turn the print view on.
If you have a working solution, I encourage to start a PR in dt GitHub. This way it can be tested and see if it can be merged. The main issue I would see is long term maintainability.
I’m assuming that this is windows 10 and newer (eg. not window 95).
Loving the positive response so far. I’ll consider a PR for it once I get it to state i’m at least happy with. A few things I’m working on to allow for changing printer settings in app. I will warn Windows has some quirks that make it difficult if not imposible to do all that’d I like out of a perfect module because there are no standardized ways of dealing with things like borderless prints. Basically that’s on the printer vender to handle and they all do it a little different. So the main approach will be:
ICC profiles should be properly applied, but that will need testing (I didn’t change the Linux pipeline on that)
Paper size selection in darktable is to establish a layout canvas. It will not change the printer’s paper setting (I tried that but it broke borderless at least on Epson). You will have to match, if desired, the paper in the printer driver settings manually.
I pull hardware print resolutions and offer as a quality pull down but I have yet to find a driver that offers multiple options though the Windows basic printing standards provides that functionality - so it might end up being just an FYI but a good one
I have the Windows printing settings dialog set to pop up on first print if it hasn’t been opened before to confirm printer settings
And finally a note on my coding ability. I’m more of a C#/.NET programmer and this is my first effort on C, so while the logic is mine I relied on our AI overlords to help with syntax in the code. As a result, it might be a bit hacky and if a real C programmer wants to look at my code and refactor if it passes through a PR, I welcome it.
And this is targeting Windows 10/11 but I believe the Win32 libraries being used should be compatible back to 7 as the GDI stack is quite old. 32 bit Windows though, I think you’re on your own
Just as an update to everyone interested I was unsatisfied with the size of the print files my first attempt was producing. I did a bit of a rewrite after digging in deeper to how Windows handles direct bitmap printing. I’m in the testing phase of that revised code but initial PDFs look good. Things I want to check before considering a pull request:
needs to better handle color profiles on the input side. Windows printers expect srgb unless you send along a icc profile, so looking into that to at least have Adobe RGB be a valid option. Paper icc profiles should turn off printer color managerment and that still needs testing as well.
I need to double check my rewrite addressed the giant print files (180MB for a 8x10) that were printing very slowly. Super high resolution prints processed by darktable given we have to send uncompressed bitmaps might have a side effect of slow printing.
Just general testing on multiple printers. What I can say is it works and I get prints, but I want to at least verify things like margin handling on the two printers I have.
I may make the code available on request once I’m satified I don’t have any game stopping bugs. And will put in a PR for the overall project, but that might take some time even to make the odd number test releases.
Hi @cjhemmer, have you made progress on the print support for Windows? It will be nice if we could integrate this for the next release. What do you think? Maybe create a PR to discuss with the Windows experts?
It would be so nice to have a windows print module for darktable. I recently needed to print some photos at home and was so sad to learn that darktable’s print module doesn’t work on windows