AirPrint paper format on iOS without accessing to Print dialog

I am looking for help on a proper IxD / UX on selecting a paper size, as well as .photo vs .general in the UIPrintInfo.outputType .

My product requires to precisely know the paper format as output for the printer (including borders). On macOS, it's easy: you've got the usual Page Format, and you can poll the printer to retrieve the current format. On iOS, I don't have that luxury: the first time I get any mention of a current paper format is on the Print page, and then, it's too late to show up any User Interface. Even worse, there are only very broad guidelines on page format. Photo sometimes provides a 4x6, and General sometimes provides an A4 or Letter, but not always.

So I try to figure out through the country, preparing A4 in most countries, and Letter in places where it's not available, which is not always the case. And end users are usually at a loss on their page formats (trying to reduce useless user interactions and questions).

I know it's currently not feasible on the provided SDK, as everything needed is private. So my first bet is providing an adequate User Experience. But again, I cannot provide a pop-up on top the Print pop-up, I have yet to find a way to provide a shown tooltip when this is on. I could show a pop-up before saying the format could change, but it's really *****. And I have yet to figure out what to propose on the .photo settings for some initial paper format.

(Supplemental question: I am happy to use one of my official tech support question, but is Apple answering interaction design questions through that channel too? I doubt they would provide me private SDK access merely by asking - any guidance on how to ask and get answered by the proper channels)

Thank you!

Accepted Reply

Replying to my own question. Ended up asking for a Technical Incident. Although I didn't get the answer I was looking for, it helped me push some more, and after some personal trial and errors, I can at least have a better idea of the current printer's format by doing

Code Block
static let defaultBestPaper = UIPrintPaper.bestPaper(forPageSize: CGSize(width: 595, height: 842), withPapersFrom: [])


before creating my first document. This will return the current printer's default paper and margin. the CGSize is merely an A4 paper, put whatever you want in there. Letter, A4, ...

The very obvious caveats are the inability to know if a printer is actually selected, if the value makes sense, if the user will choose another piece of paper. This is merely useful to get a general idea and should not be used as a final, or even useable value. But between that and a 0,5in margin approximation and using the countries for paper size, I find it not too bad.

Replies

Replying to my own question. Ended up asking for a Technical Incident. Although I didn't get the answer I was looking for, it helped me push some more, and after some personal trial and errors, I can at least have a better idea of the current printer's format by doing

Code Block
static let defaultBestPaper = UIPrintPaper.bestPaper(forPageSize: CGSize(width: 595, height: 842), withPapersFrom: [])


before creating my first document. This will return the current printer's default paper and margin. the CGSize is merely an A4 paper, put whatever you want in there. Letter, A4, ...

The very obvious caveats are the inability to know if a printer is actually selected, if the value makes sense, if the user will choose another piece of paper. This is merely useful to get a general idea and should not be used as a final, or even useable value. But between that and a 0,5in margin approximation and using the countries for paper size, I find it not too bad.