这是我关于stackoverflow的第一个问题。
我正在尝试将存储在 Resources 中的 PDF 文件加载到 iPhone SDK 中的 UIImage/UIImageView 对象中。如果不将 PDF 转换为图像,这是否可能?如果不是,将 PDF 转换为 PNG 的成员函数是什么?如果可能的话,我真的更愿意保留 PDF。
非常感谢你的帮忙!
这是我关于stackoverflow的第一个问题。
我正在尝试将存储在 Resources 中的 PDF 文件加载到 iPhone SDK 中的 UIImage/UIImageView 对象中。如果不将 PDF 转换为图像,这是否可能?如果不是,将 PDF 转换为 PNG 的成员函数是什么?如果可能的话,我真的更愿意保留 PDF。
非常感谢你的帮忙!
现在有可能,我使用的是 iOS 8+。如果您将 pdf 放入资产目录中,然后将 pdf 加载到 UIImage 中,则使用[UIImage imageNamed:]
它将 pdf 的第一页呈现到 UIImage 中。
PDF 可以通过 UIWebView 加载。如果您需要更多控制,您可以使用 Quartz 2D 来渲染 PDF:Quartz2D
您可能想在 GitHub 上查看此 UIImage-PDF 类别:https ://github.com/mindbrix/UIImage-PDF
基于“ 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
对于Swift
,
just
Import
orAdd
yourAssets
并像下面一样使用它。
your_image_view.image = UIImage(named:"name_of_your_file")
就是这样,这应该很有效
对于 Swift,只需将您的 PDF 导入或添加到资产并像下面这样使用它。
your_image_view.image = UIImage(named:"name_of_your_file")