UIMarkupTextPrintFormatter和Mac Catalyst

我有一个iPad应用程序,我已经使用Catalyst成功地将其移至Mac。

虽然我可以使用UIMarkupTextprintformatter在iPad / iPhone上生成PDF,但实际上在Mac上却无法使用。

实际上,除非我使用UIMarkupTextprintformatter注释掉#if !targetEnvironment(maccatalyst),因为Xcode只会显示错误,否则我什至无法构建Mac二进制文件:

  

x86_64体系结构的未定义符号:
  从以下位置引用的“ _OBJC_CLASS _ $ _ UIMarkupTextprintformatter”         在Functions.o中的objc-class-ref:ld:找不到体系结构x86_64的符号clang:错误:链接器命令失败,并带有退出代码   1(使用-v查看调用)

这令人困惑,因为苹果公司的文档表明它与Mac Catalyst 13.0+兼容 https://developer.apple.com/documentation/uikit/uimarkuptextprintformatter

其他人有没有遇到过这种情况,您是否能够找到解决方案?

谢谢。

wang312627 回答:UIMarkupTextPrintFormatter和Mac Catalyst

我有同样的问题。但是我可以通过使用Swift的函数将html转换为属性文本,然后对属性文本使用UISimpleTextPrintFormatter来解决它。

我的原始代码:

let formatter = UIMarkupTextPrintFormatter(markupText: htmlString)
formatter.perPageContentInsets = UIEdgeInsets(top: 70.0,left: 60.0,bottom: 70.0,right: 60.0)
printController.printFormatter = formatter
printController.present(animated: true,completionHandler: nil)

在Catalyst(和iOS)上工作:

guard let printData = htmlString.data(using: String.Encoding.utf8) else { return }
do {
    let printText =  try NSAttributedString(data: printData,options: [.documentType: NSAttributedString.DocumentType.html,.characterEncoding: String.Encoding.utf8.rawValue],documentAttributes: nil)

    let formatter = UISimpleTextPrintFormatter(attributedText: printText)
    formatter.perPageContentInsets = UIEdgeInsets(top: 70.0,right: 60.0)
    printController.printFormatter = formatter
    printController.present(animated: true,completionHandler: nil)
} catch {
     print(error)
}

但是,与在iOS上相比,NSAttributedString(data:)对您在Catalyst上抛出的内容似乎更敏感。例如,我在使用iOS的表格上是否遇到过问题?因此,这不是一个完美的解决方案。

本文链接:https://www.f2er.com/3068881.html

大家都在问