質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Xcode

Xcodeはソフトウェア開発のための、Appleの統合開発環境です。Mac OSXに付随するかたちで配布されています。

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

Q&A

1回答

4913閲覧

【swift】AirPrintではがきサイズへの印刷方法

3buro

総合スコア29

Xcode

Xcodeはソフトウェア開発のための、Appleの統合開発環境です。Mac OSXに付随するかたちで配布されています。

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

0グッド

0クリップ

投稿2016/02/04 08:20

編集2022/01/12 10:55

いつもお世話になっております。

---2/5追記---
コードに記述を追加しました。
KGサイズの指定を行い、取得もできているのですが、
実際に印刷すると下の方が少し切れてしまうので、
その対処法をご存知の方いらっしゃいませんか?

【経緯と現状】
印刷機能をアプリに組込もうと思い、AirPrintを利用することになりました。
AirPrintから印刷すると、L版で印刷されます。

print("printTapped") let printController = UIPrintInteractionController.sharedPrintController() UIGraphicsBeginImageContextWithOptions(self.letterSetView.bounds.size, self.letterSetView.opaque, 3.0) let context = UIGraphicsGetCurrentContext() self.letterSetView.layer.renderInContext(context!) let image = UIGraphicsGetImageFromCurrentImageContext() UIGraphicsEndImageContext(); let letterData = NSData(data: UIImagePNGRepresentation(image!)!) if UIPrintInteractionController.canPrintData(letterData) { printController.delegate = self let printInfo = UIPrintInfo.printInfo() printInfo.outputType = .Photo printInfo.jobName = "HAGAKI" //追加 printInfo.orientation = .Portrait if image.size.width > image.size.height { printInfo.orientation = .Landscape } printInfo.duplex = .None printController.printInfo = printInfo printController.printingItems = [ printInfo, letterData ] printController.showsNumberOfCopies = true printController.showsPageRange = false printController.showsPaperSelectionForLoadedPapers = true } //printController.presentAnimated(true, completionHandler: nil) let activityViewController = UIActivityViewController(activityItems: printController.printingItems!, applicationActivities: nil) presentViewController(activityViewController, animated: true, completion: nil) } コード

【お聞きしたいこと】
L版ではなく、KGサイズやはがきサイズなどに印刷を行いたいので、その用紙サイズのカスタマイズ方法。
もしくは、AirPrintではない印刷機能の実装方法。

お手数をおかけしますが、なにとぞよろしくお願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Stripe

2016/02/04 16:57

UIPrintInteractionControllerは使わないんですか?
3buro

2016/02/05 08:49 編集

情報の追加・修正の依頼コメントありがとうございます。 UIPrintInteractionControllerに関して記述を追加しました。 KGサイズの取得ができましたが、実際に印刷すると全面に印刷されず 下の方が中途半端に切れてしまったので、その対処法をなにかご存知ですか?
guest

回答1

0

受付中とのことで私の意見を参考にしてください

codeはこれでOKだと思いますが、私のcodeとは少し違います、私のcodeではlet pageSize = CGSize(width: 100 / 25.4 * 72, height: 148 / 25.4 * 72)//実際印刷用紙サイズ1239x1834ピクセルで直接指定しています、また、UIGraphicsBeginImageContextWithOptionsでも直接CGSizeを指定してインスタンスメソッドのdraw(in:withAttributes:)で同じ内容で同じCGSizeで再描画しています

私はハガキで完璧なフチなしを実現しました

コツはcodeではありません、印刷する画像ピクセルサイズの違いでフチなしが関係していると思います、また、printController.delegate = selfがあるので

func printInteractionController (_ printInteractionController : UIPrintInteractionController , choosePaper paperList : [UIPrintPaper]) -> UIPrintPaper { let bestPaper = UIPrintPaper.bestPaper(forPageSize: pageSize, withPapersFrom: paperList) return bestPaper }

で以下のようにiOSシステムが使用しているプリンターと通信して適切なサイズを判断している事と思います
paperSize -> (100.0, 148.0)
printable -> (0.0, 0.0, 100.0, 148.0)

結論は
私の場合のpngハガキ画像サイズは幅1239x高さ1834ピクセルです
比率は100x148と同じです

投稿2018/04/07 02:47

編集2018/04/07 02:50
papassan

総合スコア36

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問