ios - 从 UIView 创建 PDF

标签 ios objective-c xcode

是否有任何方法或任何库可以从保留文本的 UIView 创建 PDF,即文本可选择。我已经尝试了以下方法,但清晰度受到了影响,因为它被渲染为位图。

+ (NSData *)pdfDataOfScrollView:(UITableView *)scrollView
{
  NSMutableData *pdfData = [NSMutableData data];

  UIGraphicsBeginPDFContextToData(pdfData, scrollView.bounds, nil);
  UIGraphicsBeginPDFPage();
  CGContextRef pdfContext = UIGraphicsGetCurrentContext();

  [scrollView.layer renderInContext:pdfContext];

  // remove PDF rendering context
  UIGraphicsEndPDFContext();
  return pdfData;
}

最佳答案

您可以使用此库创建 PDF Link .

使用上面的库,您可以从下面的代码生成 PDF。

func generatePDF() {
    let v1 = UIScrollView(frame: CGRect(x: 0.0,y: 0, width: 100.0, height: 100.0))
    let v2 = UIView(frame: CGRect(x: 0.0,y: 0, width: 100.0, height: 200.0))
    let v3 = UIView(frame: CGRect(x: 0.0,y: 0, width: 100.0, height: 200.0))
    v1.backgroundColor = .red
    v1.contentSize = CGSize(width: 100.0, height: 200.0)
    v2.backgroundColor = .green
    v3.backgroundColor = .blue

    let dst = URL(fileURLWithPath: NSHomeDirectory().stringByAppendingString("/sample1.pdf"))
    // outputs as Data
    do {
        let data = try PDFGenerator.generated(by: [v1, v2, v3])
        data.write(to: dst, options: .atomic)
    } catch (let error) {
        print(error)
    }

    // writes to Disk directly.
    do {
        try PDFGenerator.generate([v1, v2, v3], to: dst)    
    } catch (let error) {
        print(error)
    }
}

关于ios - 从 UIView 创建 PDF,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41694386/

相关文章:

iOS 设置(隐私 -> 定位服务 -> 选择我的应用 -> 更改允许访问)崩溃

xcode - 如何防止我的 macOS 应用程序同时运行多个实例?

iphone - iOS项目如何继承XIB文件?

ios - 将 TableView (行选择)的数据传递给 View Controller

javascript - 在不启动 Xcode 的情况下运行 React Native 应用程序?

ios - 如何对 PLCrashReporter 框架的使用进行单元测试

ios - didReceiveMemoryWarning 方法中应该释放什么东西?

javascript - 强制使用自定义/货币模式的 iOS 数字键盘

ios - 如何在 watch 套件中显示通知,其中 iPhone 应用程序已经显示通知

ios - iOS 中的基本表达语言