将 UIImage 大小与 pdf 大小匹配

Posted

技术标签:

【中文标题】将 UIImage 大小与 pdf 大小匹配【英文标题】:Match UIImage size with pdf size 【发布时间】:2017-01-12 09:51:55 【问题描述】:

在我的应用程序中,我正在捕获 UIView 的屏幕截图,然后将该图像设置为 pdf,但图像和 pdf 框架的尺寸不同。我的图像很小,所以在将它写在 pdf 上时它会拉伸并缩小。

这是我的代码:

func drawOnPDF(path: String) 

    // Get existing Pdf reference
    let pdf = CGPDFDocument(NSURL(fileURLWithPath: path))

    // Get page count of pdf, so we can loop through pages and draw them accordingly
    let pageCount = pdf!.numberOfPages;

    // Write to file
    UIGraphicsBeginPDFContextToFile(path, CGRect.zero, nil)

    // Write to data
    //var data = NSMutableData()
    //UIGraphicsBeginPDFContextToData(data, CGRectZero, nil)

    for index in 1...pageCount 
        let page = pdf!.page(at: index)
        //            let pageFrame = CGPDFPageGetBoxRect(page, kCGPDFMediaBox)
        let pageFrame = page?.getBoxRect(.mediaBox)
        page?.getBoxRect(.mediaBox)

        print(pageFrame)
        print(img.size)
        UIGraphicsBeginPDFPageWithInfo(pageFrame!, nil)

        let ctx = UIGraphicsGetCurrentContext()

        // Draw existing page
        ctx!.saveGState();
        ctx!.scaleBy(x: 1, y: -1);
        ctx!.translateBy(x: 0, y: -(pageFrame?.size.height)!);
        ctx!.drawPDFPage(page!);
        ctx!.restoreGState();

        // Draw image on top of page


            print(index)
            print(visibleIndexPath.row)
            if (index  == visibleIndexPath.row + 1)
            


                img.draw(in: pageFrame!)



        


    


    UIGraphicsEndPDFContext()


现在我在这里获取图像大小(319.0、339.0) 而pdf页框大小为(0.0, 0.0, 612.0, 792.0)

那么如何在 ios swift 中将两者设置为相同。

【问题讨论】:

【参考方案1】:

之后

ctx!.scaleBy(x: 1, y: -1); 

context.scaleBy(x: 319.0/612.0, y: 339.0/792.0)) 

根据图像大小缩放您的内容,它会适合。

.mediaBox 是一个表示固定大小的枚举

您可以使用--->(如下)获取图像大小

yourimg.size.width 和 yourimg.size.height

【讨论】:

什么是上下文?在哪里定义它?它向我展示了使用 unresolve identifier context context 是 ctx 在你的情况下对不起我的错

以上是关于将 UIImage 大小与 pdf 大小匹配的主要内容,如果未能解决你的问题,请参考以下文章

UIImage 未根据 UIImageView 大小宽度和高度调整大小

xCode 中的 OpenCV 错误:输入参数的大小不匹配

更改 UIImageView 大小以匹配图像与 AutoLayout

UIImage 大小(以像素为单位)

将 UITableViewCell 高度设置为 UIImage 高度?

了解 UIImage 大小属性与 UIView 框架大小属性的比较