多かれ少なかれ機能する印刷APIを実装しようとしています。API レベル 19 で導入された印刷フレームワークを使用して、Google クラウド プリント アプリにファイルを送信して印刷できます。インデックス カード 4x6、これは私が欲しいものではありません。A4 が必要です。GCP アプリが構成を記憶していれば、おそらくそれで問題ありませんが、印刷ジョブごとに設定する必要があり、ちょっとイライラします。
PrintAttributes を設定することで、これをアーカイブできるはずであることがわかりました。しかし、私がそれらを何に設定しても、それは常に紙のフォーマットのインデックスカード4x6です. 印刷ダイアログで手動でフォーマットをA4に設定すると、問題なく動作します
PrintManager printManager = (PrintManager) ctx.getSystemService(Context.PRINT_SERVICE);
String jobName = "Jobname";
PrintAttributes.Builder builder = new PrintAttributes.Builder();
builder.setMediaSize(PrintAttributes.MediaSize.ISO_A4);
builder.setColorMode(PrintAttributes.COLOR_MODE_MONOCHROME);
PrintAttributes attr = builder.build();
printManager.print(jobName, new PrintDocumentAdapterForFiles(ctx, new File(filePath), jobName), attr );
重要な場合: プリンターは Canon Pixma IP 110 です