В приложении, которое я создаю, мне нужно создать файл 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 ""
}
}
}
Я нашел полезный пример в Интернете, который точно объясняет, что я должен делать. Но моя проблема в том, что EXAMPLE
разработчик обращается к общедоступному URL
, вместо этого он должен загрузить сохраненный файл PDF (который сохраняется). Пожалуйста, помогите мне изменить код.
https://github.com/mansi-cherry/iOSHowTo-s/blob/master/documentInteractionDemo/documentInteractionDemo/ViewController.swift
ожидаемое изображение на выходе
здесь ожидаемый результат, но вместо выборки файла изображения следует извлечь pdf