swift2 Xcode Air打印

u0sqgete  于 2022-11-06  发布在  Swift
关注(0)|答案(2)|浏览(195)

我是xcode和swift的初学者。
我有一对夫妇的字段和一个图像在我的viewcontroller和我想打印这个字段的内容...
我的代码来自一个教程:

@IBAction func print(sender: AnyObject) {

    // 1

    let printController = UIPrintInteractionController.sharedPrintController()

    // 2

    let printInfo = UIPrintInfo(dictionary:nil)

    printInfo.outputType = UIPrintInfoOutputType.General

    printInfo.jobName = "Rapport"

    printController.printInfo = printInfo

    // 3

    let formatter = UIMarkupTextPrintFormatter(markupText: itemName.text!)

    formatter.contentInsets = UIEdgeInsets(top: 72, left: 72, bottom: 72, right: 72)

    printController.printFormatter = formatter

    // 4

    printController.presentAnimated(true, completionHandler: nil)

}

在这个唯一的文本域中工作得很好。但是我如何打印它的其余部分呢?

4ngedf3f

4ngedf3f1#

你使用一个格式化程序发送给printController,并给他发送一个要打印的标记文本。这个函数接受一个字符串,所以你可以创建一个包含所有文本的自定义字符串,然后调用这个函数,如下所示:

// 3
let myMarkupText = itemName.text! + "\n" + secondField.text! + "\n" + anotherField.text!
let formatter = UIMarkupTextPrintFormatter(markupText: myMarkupText)
...

我添加了“\n”以开始新行,但是您当然可以按照您想要的方式设置它的格式。我不确定“\n”是否会创建新行(因为这是标记,也许您需要<br />),您必须尝试并查看。
如果您想打印整个页面而不是某些部分,您也可以检查documentation for UIPrintInteractionController,看看还有哪些其他选项(printingItemprintingItemsprintPageRenderer)。

kkih6yb8

kkih6yb82#

或者,如果您有一个包含多个回车符的长字符串,\n则在将该字符串提交给UIMarkupTextPrintFormatter之前,您需要先将所有出现的字符串替换为br /。以下是Swift 4的示例:

func print(text: String) {
    let textWithNewCarriageReturns = text.replacingOccurrences(of: "\n", with: "<br />")

    let printController = UIPrintInteractionController.shared

    let printInfo = UIPrintInfo(dictionary: nil)
    printInfo.outputType = UIPrintInfoOutputType.general
    printController.printInfo = printInfo

    let format = UIMarkupTextPrintFormatter(markupText: textWithNewCarriageReturns)

    format.perPageContentInsets.top = 72
    format.perPageContentInsets.bottom = 72
    format.perPageContentInsets.left = 72
    format.perPageContentInsets.right = 72
    printController.printFormatter = format

    printController.present(animated: true, completionHandler: nil)
}

相关问题