我想在PDF文档目录中保存我的图像。 请建议我保存格式。我只知道iOS中的PNG和JPEG保存格式。
答案 0 :(得分:3)
首先,我们计算PDF页面的大小。根据我们想要绘制图像的图像大小和分辨率,页面大小就像这样计算(为了灵活性,支持不同的水平和垂直分辨率):
double pageWidth = image.size.width * image.scale * 72 / horzRes;
double pageHeight = image.size.height * image.scale * 72 / vertRes;
现在我们已准备好创建PDF文件。它可以直接在磁盘或内存中创建。为了灵活性,让我们在内存中创建它。
NSMutableData *pdfFile = [[NSMutableData alloc] init];
CGDataConsumerRef pdfConsumer =
CGDataConsumerCreateWithCFData((CFMutableDataRef)pdfFile);
// The page size matches the image, no white borders.
CGRect mediaBox = CGRectMake(0, 0, pageWidth, pageHeight);
CGContextRef pdfContext = CGPDFContextCreate(pdfConsumer, &mediaBox, NULL);
创建了PDF上下文,我们现在可以执行转换:
CGContextBeginPage(pdfContext, &mediaBox);
CGContextDrawImage(pdfContext, mediaBox, [image CGImage]);
CGContextEndPage(pdfContext);
完成工作,完成PDF文件并释放使用过的对象。
CGContextRelease(pdfContext); CGDataConsumerRelease(pdfConsumer);
PDF文件现在可以在pdfFile变量中找到。 我将上面的所有代码放在convertImageToPDF:withHorizontalResolution:verticalResolution:PDFImageConverter实用程序类中的静态方法中,它可以像这样使用:
NSData *pdfData = [PDFImageConverter convertImageToPDF: image
withHorizontalResolution: 300 verticalResolution: 300];
NSString *path = [NSHomeDirectory() stringByAppendingPathComponent: @"Documents/image.pdf"];
[pdfData writeToFile:path atomically:NO];
有时需要将图像转换为PDF并使用预定义的页面大小,例如Letter或A4。此外,可以为图像指定最大边界矩形,因此它位于页面上的特定位置,并且不会离开页面。在这种情况下,必须调整图像大小(增加分辨率)以确保图像适合给定的矩形。
double imageWidth = image.size.width * image.scale * 72 / resolution;
double imageHeight = image.size.height * image.scale * 72 / resolution;
double sx = imageWidth / boundsRect.size.width;
double sy = imageHeight / boundsRect.size.height;
// At least one image edge is larger than maxBoundsRect, reduce its size.
if ((sx > 1) || (sy > 1)) {
double maxScale = sx > sy ? sx : sy;
imageWidth = imageWidth / maxScale;
imageHeight = imageHeight / maxScale;
}
// Put the image in the top left corner of the bounding rectangle
CGRect imageBox = CGRectMake(
boundsRect.origin.x, boundsRect.origin.y + boundsRect.size.height - imageHeight,
imageWidth, imageHeight);
使用最后一个框,可以使用文章前半部分中的代码将图像转换为PDF。 新转换方法的代码放在PDFImageConverter实用程序类的convertImageToPDF:withResolution:maxBoundsRect:pageSize:static方法中,它的使用方式如下:
CGSize pageSize = CGSizeMake(612, 792);
CGRect imageBoundsRect = CGRectMake(50, 50, 512, 692);
NSData *pdfData = [PDFImageConverter convertImageToPDF: image
withResolution: 300 maxBoundsRect: imageBoundsRect pageSize: pageSize];
NSString *path = [NSHomeDirectory() stringByAppendingPathComponent: @"Documents/image.pdf"];
[pdfData writeToFile:path atomically:NO];
您也可以下载源代码form Here.
答案 1 :(得分:0)
您可以使用本教程convert-an-image-to-pdf-on-the-iphone-and-ipad
然后使用以下方法将pdf文件保存在文档目录中:
//******** Method To Copy Image to Directory ******** //
- (void) copyFileToDocuments:(NSString *)fileURL
{
NSString *documentsDirectory = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0];
NSString *destinationPath = [documentsDirectory stringByAppendingFormat:@"/convertedImage.pdf"];
NSError *error;
[[NSFileManager defaultManager] copyItemAtURL:[NSURL fileURLWithPath:fileURL] toURL:[NSURL fileURLWithPath:destinationPath] error:&error];
}
然后致电
[self copyFileToDocuments:moviePath];
希望它对你有所帮助。