Created: 2010-10-12 by Till Kamppeter https://launchpad.net/people/till-kamppeter
Contributors: Till Kamppeter https://launchpad.net/people/till-kamppeter
Packages affected: All photo managing and editing applications: shotwell, f-spot, digikam, gimp, ...
Printing office documents, e-mails, and web pages usually just works. You simply click File -> Print, usually do not change any parameters, and your document comes out on A4 or Letter paper. If you open a photo manager or editor application and want to print photos like you get them from the lab (usually one picture filling one page) it gets ugly: In GNOME applications (shotwell, f-spot, GIMP, ...) you have to click File -> Page Setup, choose the printer and then the desired paper size, after that you click File -> Print, choose all other printing-relevant parameters, and then finally click "Print". In KDE programs (digikam) you have to set the four margins manually to zero to print borderless, geeqie does not get the printer parameters from CUPS, ... In addition, the printing functions of photo applications are not well tested. In Maverick, f-spot immediately crashes when sending a print job and GIMP sends blank pages.
If a user sees a nice photo in his photo manager and would like to have it on paper, he should be able to print it in high photo quality and scaled to fill the sheet with a few simple clicks and in an intuitive, user-friendly way.
Photo managers/editors under Linux
A good example for the print functionality in a photo manager is fl-photo (in Universe), a photo manager written by Mike Sweet, author of CUPS (probably Mike saw this problem already). In one dialog one chooses a layout (1, 2, 4 photos per sheet, calendar, manual) and the printer settings including the page size. The layout gets scaled into the page size taking into account the printer's unprintable margins (giving borderless prints if printer settings are chosen appropriately).
Special attention must be payed to the handling of the page size. Especially for printing photos it must be very easy for the user to choose the page size from the sizes which the actually used printer offers. Here is why:
- In contrary to an office document, a photo has no absolute size, it is simply a bitmap, a given number of pixels wide and high. For printing it on paper it needs to be scaled to the paper's absolute size. So page size is not a parameter nailed down by the document.
- The page sizes for photos are usually different ones that the page sizes for documents. Usually A4 or Letter for documents and 10x15cm/4x6in for photos.
- Borderless photo printing is implemented very differently by the different printer drivers, for example HPLIP uses special "Borderless" paper sizes a little bit bigger than the actual paper and with zero margins, whereas Gutenprint has a boolean "Borderless" option which probably scales up the printed bitmap somewhat when turned on.
Other important aspects are:
- Series of photos usually have images in both landscape and portrait format. For the "one photo fills one page" printing and also for sheets with multiple photos which get cut apart, photos should get rotated automatically to fit the paper, but one should have the possibility to turn auto-rotating off if the sheets are used as album pages.
- The photo application should give easy access to the printer settings and hold its own user defaults for them. For example if a user has only one inkjet printer and uses it for both photos and documents, it is usually set to defaults for document printing (A4/Letter, main tray, normal paper, duplex, standard margins) and for photo printing completely different settings are used (10x15/4x6 paper, photo tray, photo paper, one-sided, borderless).
- The program should not impose its own margins, but use the printer's ones for the given page size (which can be easily queried from CUPS). For landscape printing it should be taken into account that the paper's upper edge gets the pictures right edge and so on when applying the printer's margins.
Data preservation and migration
BoF agenda and discussion