将PDF加载到UIImage或UIImageView中?

时间:2010-03-01 21:25:02

标签: iphone pdf uiimageview uiimage iphone-sdk-3.2

这是我关于stackoverflow的第一个问题。

我正在尝试将存储在参考资料中的PDF文件加载到iPhone SDK中的UIImage / UIImageView对象中。如果不将PDF转换为图像,这是否可行?如果没有,将PDF转换为PNG的成员函数是什么?如果可能的话,我真的更愿意保留PDF。

非常感谢你的帮助!

6 个答案:

答案 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> ImportAddPDF设置为Assets 在下面。

your_image_view.image = UIImage(named:"name_of_your_file")

就是这样,它应该可以很好地工作

答案 5 :(得分:0)

对于斯威夫特, 只需将您的 PDF 导入或添加到资产中,然后像下面一样使用它。

your_image_view.image = UIImage(named:"name_of_your_file")