这是我关于stackoverflow的第一个问题。
我正在尝试将存储在参考资料中的PDF文件加载到iPhone SDK中的UIImage / UIImageView对象中。如果不将PDF转换为图像,这是否可行?如果没有,将PDF转换为PNG的成员函数是什么?如果可能的话,我真的更愿意保留PDF。
非常感谢你的帮助!
答案 0 :(得分:7)
现在有可能,我正在使用iOS 8+。
如果您在资产目录中放入pdf,然后使用[UIImage imageNamed:]
在UIImage中加载pdf,则会将pdf的第一页呈现为UIImage。
答案 1 :(得分:6)
您可能想在GitHub上查看此UIImage-PDF类别:https://github.com/mindbrix/UIImage-PDF
答案 2 :(得分:5)
可以通过UIWebView加载PDF。如果您需要更多控制,可以使用Quartz 2D渲染PDF:Quartz2D
答案 3 :(得分:3)
基于'https://www.hackingwithswift.com/example-code/core-graphics/how-to-render-a-pdf-to-an-image'的解决方案
//MARK: - für Bild vom PDF erstellen
extension SettingsQuellen{
func drawIMGfromPDF(thisPDF: String) -> UIImage? {
///holt das PDF aus einem Verzeichnis im Programm
///nicht aus der 'Assets.xcassets'
let path = Bundle.main.path(
forResource: thisPDF, //"fsm75-3 (Startstrecke)"
ofType : "pdf") /////path to local file
let url = URL(fileURLWithPath: path!)
//following based on: https://www.hackingwithswift.com/example-code/core-graphics/how-to-render-a-pdf-to-an-image
guard let document = CGPDFDocument(url as CFURL) else { return nil }
guard let page = document.page(at: 1) else { return nil }
let pageRect = page.getBoxRect(.mediaBox)
let renderer = UIGraphicsImageRenderer(size: pageRect.size)
let img = renderer.image { ctx in
UIColor.white.set()
ctx.fill(pageRect)
ctx.cgContext.translateBy(x: 0.0, y: pageRect.size.height)
ctx.cgContext.scaleBy(x: 1.0, y: -1.0)
ctx.cgContext.drawPDFPage(page)
}
return img
}//end func drawIMGfromPDF
}//end extension SettingsQuellen - für Bild vom PDF erstellen
用法:
let img = drawIMGfromPDF(thisPDF: "fsm75-3 (Startstrecke)") //Bild vom PDF erstellen
cell.outletImageView.image = img
答案 4 :(得分:2)
对于 Swift
,
只需将{strong>
Import
的Add
或Assets
在下面。
your_image_view.image = UIImage(named:"name_of_your_file")
就是这样,它应该可以很好地工作
答案 5 :(得分:0)
对于斯威夫特, 只需将您的 PDF 导入或添加到资产中,然后像下面一样使用它。
your_image_view.image = UIImage(named:"name_of_your_file")