iOS アプリ内で印刷を設定しましたが、正常に動作します。ただし、ページ サイズのユーザー設定に基づいてドキュメントを生成しています。プリンターシステムからページサイズを検出し、代わりにそれを使用できると期待しています。UIPrintPageRenderer の paperRect プロパティは、私が必要としているもののように思えますが、常に 0x0 のサイズを返します。何か不足していますか?コードは次のとおりです。
UIPrintInteractionController *printController = [UIPrintInteractionController sharedPrintController];
UIPrintPageRenderer *pageRenderer = [[UIPrintPageRenderer alloc] init];
printController.printPageRenderer = pageRenderer;
NSLog(@"paper size: %f x %f", pageRenderer.paperRect.size.width, pageRenderer.paperRect.size.height);
iOS 4.2 が出てきたときにこれを試し、0x0 を取得したときに、最初のバージョンのバグだと判断し、ユーザー設定を実装しました。しかし、iOS 5.1 で同じ問題が発生したので、何か間違ったことをしているのだろうかと思いました。
このコードを実行すると、ユーザーはまだプリンターを選択していないので、paperRect がデフォルトの用紙サイズを返すことが期待されます。ユーザーがプリンターを選択した後に再度実行すると (たとえば、2 番目のドキュメントを印刷するとき)、そのプリンター用に選択された用紙サイズが返されることが期待されます。しかし、これは私の予想です...ドキュメントでは、値がいつどのように設定されるかについて説明していません。
他の人が同じ結果を得ているかどうか、または実際のページサイズを取得するために何か他のことをする必要があるかどうかを知ることは役に立ちます.
PS UIPrintInteractionController の paperSize プロパティも調べました。これは、上記のコードに含まれている場合も 0x0 を返します。どうやらデリゲート関数によって印刷プロセスの後半で更新されるようですが、それ以上は調べませんでした。