【问题标题】:iOS generate pdf from imageiOS从图像生成pdf
【发布时间】:2019-09-17 10:02:50
【问题描述】:

我正在尝试从磁盘图像生成 PDF,我的代码如下所示:

    CGSize paperSizeA4 = CGSizeMake(595.2, 841.8);
    NSMutableData *pdfData = [NSMutableData data];
    UIGraphicsBeginPDFContextToData(pdfData, CGRectMake(0, 0, paperSizeA4.width, paperSizeA4.height), nil);
    for (NSURL *filePathURL in filesPathURL)
    {
      NSData *imgData = [[NSData alloc] initWithContentsOfURL:filePathURL];
      UIImage *image = [[UIImage alloc] initWithData:imgData];
      UIGraphicsBeginPDFPageWithInfo(CGRectMake(0, 0, paperSizeA4.width, paperSizeA4.height), nil);
      CGRect rect = CGRectMake(0, 0, paperSizeA4.width, paperSizeA4.height);
      [image drawInRect:rect];
    }
    UIGraphicsEndPDFContext();

工作正常,但 pdf 中的图像分辨率太低。我正在寻找生成具有最佳分辨率图像的 pdf 的方法。

【问题讨论】:

  • 尝试将大小缩放到原始图像的内容大小。 CGRect rect = CGRectMake(0, 0, image.size.width, image.size.height);

标签: ios objective-c pdf


【解决方案1】:

简单的方法是这样的:

func createPDF(image: UIImage) -> NSData? {

    let pdfData = NSMutableData()
    let pdfConsumer = CGDataConsumer(data: pdfData as CFMutableData)!

    var mediaBox = CGRect.init(x: 0, y: 0, width: image.size.width, height: image.size.height)

    let pdfContext = CGContext(consumer: pdfConsumer, mediaBox: &mediaBox, nil)!

    pdfContext.beginPage(mediaBox: &mediaBox)
    pdfContext.draw(image.cgImage!, in: mediaBox)
    pdfContext.endPage()

    return pdfData
}

【讨论】:

  • 在 ObjC 中会怎样?
猜你喜欢
  • 1970-01-01
  • 2013-01-19
  • 1970-01-01
  • 1970-01-01
  • 2016-04-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-11-04
相关资源
最近更新 更多