10

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

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

非常感谢你的帮忙!

4

6 回答 6

11

现在有可能,我使用的是 iOS 8+。如果您将 pdf 放入资产目录中,然后将 pdf 加载到 UIImage 中,则使用[UIImage imageNamed:]它将 pdf 的第一页呈现到 UIImage 中。

于 2015-10-27T08:08:28.870 回答
6

PDF 可以通过 UIWebView 加载。如果您需要更多控制,您可以使用 Quartz 2D 来渲染 PDF:Quartz2D

于 2010-03-01T21:51:43.817 回答
6

您可能想在 GitHub 上查看此 UIImage-PDF 类别:https ://github.com/mindbrix/UIImage-PDF

于 2012-02-10T18:11:47.757 回答
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
于 2020-02-12T11:26:04.910 回答
2

对于Swift,

just Importor Addyour PDFtoAssets并像下面一样使用它。

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

就是这样,这应该很有效

于 2020-04-16T23:55:34.727 回答
0

对于 Swift,只需将您的 PDF 导入或添加到资产并像下面这样使用它。

your_image_view.image = UIImage(named:"name_of_your_file")
于 2021-03-02T06:16:33.787 回答