在我正在构建的应用程序中,我必须生成一个pdf文件,然后通过电子邮件,WhatsApp等进行共享。
目前,我已按照以下代码生成pdf。
import UIKit
class ViewController: UIViewController {
@IBOutlet weak var masterContainerView: UIView!
@IBOutlet weak var pdfButton: UIButton!
@IBAction func generatePDFtapped(_ sender: Any) {
pdfButton.isHidden = true
generatePDF()
pdfButton.isHidden = false
}
func generatePDF() {
let pdfWrittenPath = masterContainerView.exportAsPdfFromView()
print("PDF written at \(pdfWrittenPath)")
}
}
上面的代码是视图控制器,而类文件是这样的:
import Foundation
import UIKit
//to call this, use the <viewoutletname>.exportAsPdfFromView()
extension UIView {
// Export pdf from Save pdf in directory and return pdf file path
func exportAsPdfFromView() -> String {
let pdfPageFrame = self.bounds
let pdfData = NSMutableData()
UIGraphicsBeginPDFContextToData(pdfData, pdfPageFrame, nil)
UIGraphicsBeginPDFPageWithInfo(pdfPageFrame, nil)
guard let pdfContext = UIGraphicsGetCurrentContext() else { return "" }
self.layer.render(in: pdfContext)
UIGraphicsEndPDFContext()
return self.saveViewPdf(data: pdfData)
}
// Save pdf file in document directory
func saveViewPdf(data: NSMutableData) -> String {
let paths = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask)
let docDirectoryPath = paths[0]
let pdfPath = docDirectoryPath.appendingPathComponent("viewPdf.pdf")
if data.write(to: pdfPath, atomically: true) {
return pdfPath.path
print("PDF written at path \(pdfPath.path)")
} else {
return ""
}
}
}
我在Internet上找到了一个有用的示例,它准确地解释了我必须做的事情。但是我的问题在于,EXAMPLE
开发人员正在访问公共URL
,而应该加载保存的PDF文件(已存储)。请帮助我修改代码。
expected output image 这是预期的输出,但是应该获取pdf而不是获取图像文件
答案 0 :(得分:0)
所以您只想加载以前保存的文件?
执行相同的操作以访问文件名和路径,然后读取内容。
globals().update(combination_dict)
print(cejst)
cejest
完整示例:
let paths = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask)
let docDirectoryPath = paths.first
let pdfPath = docDirectoryPath.appendingPathComponent("viewPdf.pdf")
let data = Data(contentsOf: pdfPath)
输出:
[DEBUG]结果为Optional(“ Helloooooo world”)