ios - 在 Swift 中从 UIScrollView 创建一个 PDF 文件

标签 ios swift pdf uiscrollview scrollview

我想从 UIScrollView 的内容创建一个 PDF 文件。

func createPdfFromView(aView: UIView, saveToDocumentsWithFileName fileName: String) {
    let pdfData = NSMutableData()
    let height = 1754.0
    let width = 1240.0
    UIGraphicsBeginPDFContextToData(pdfData, CGRect(x:-30, y:15,width:width,height:height) , nil)
    UIGraphicsBeginPDFPage()
    guard let pdfContext = UIGraphicsGetCurrentContext() else { return }

    aView.layer.render(in: pdfContext)
    UIGraphicsEndPDFContext()

    if let documentDirectories = NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true).first {
        let documentsFileName = documentDirectories + "/" + fileName
        debugPrint(documentsFileName)
        pdfData.write(toFile: documentsFileName, atomically: true)
    }
}

我希望代码生成一个基于 ScrollView 中内容大小的 PDF。

该代码目前仅生成静态 PDF。如果 ScrollView 中的内容大于 PDF 页面,则内容被截断。

最佳答案

func createPdfFromView()
{
    // Set frame as per content of view

    self.spreadsheetView.frame = CGRect(x: 0, y: 0, width: self.spreadsheetView.contentSize.width, height: self.spreadsheetView.contentSize.height)
    let pdfPageBounds: CGRect = self.spreadsheetView.frame
    let pdfData: NSMutableData = NSMutableData()

    // Rendering spreadsheetView
    UIGraphicsBeginPDFContextToData(pdfData, pdfPageBounds, nil)
    UIGraphicsBeginPDFPageWithInfo(pdfPageBounds, nil)
    self.spreadsheetView.layer.render(in: UIGraphicsGetCurrentContext()!)
    UIGraphicsEndPDFContext()
    let documentDirectories = NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true).first
    let documentsFileName = documentDirectories! + "/" + "pdfName.pdf"
    pdfData.write(toFile: documentsFileName, atomically: true)
    print(documentsFileName)

    // Reset spreadsheetView
    self.spreadsheetView.frame = CGRect(x: 0, y: 64, width: self.view.frame.width, height: self.view.frame.height)
    self.spreadsheetView.layoutSubviews()
    self.spreadsheetView.layoutIfNeeded()
    self.spreadsheetView.reloadData()}

希望它能帮助您从电子表格创建 PDF。

引用。 Github代码链接:SpreadsheetView

关于ios - 在 Swift 中从 UIScrollView 创建一个 PDF 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47605767/

相关文章:

ios - Eureka Forms Swift 启用和禁用按钮

swift - 从类中调用函数

ios - 如何使用 Swift 4 将数据从 Pop-Over subview 传递到 View Controller

javascript - phantomjs pdf 到标准输出

.net - 将我的 ASP.NET MVC 页面另存为 pdf

ios - 在 OpenGL ES 中使用 CVOpenGLESTextureCache 将纹理传递给 Uniform

objective-c - 应用程序 :didFinishLaunchingWithOptions: is not executed (maybe Mountain Lion issue?)

android - 将收据打印到文件

ios 使用 xib 文件创建自定义 UITableViewCell 的步骤

ios - 在 iOS 应用程序中实现 Braintree SDK 时出错(swift 2.2/xcode 7.3)