压缩iOS PDF文件?

时间:2013-04-15 17:28:23

标签: ios pdf compression

我制作了一个可以制作PDF文件的应用。我只有一个图像作为基础,图层文本和其他图像在它上面,以制作PDF。问题是PDF大约是9 MB,只有一页。有没有办法压缩PDF,所以它不是那么大?

- (IBAction)generatePdfButtonPressed:(id)sender
{
    pageSize = CGSizeMake(792, 612);
    NSString *fileName = @"Demo.pdf";
    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
    NSString *documentsDirectory = [paths objectAtIndex:0];
    NSString *pdfFileName = [documentsDirectory stringByAppendingPathComponent:fileName];

    [self generatePdfWithFilePath:pdfFileName];
}

- (void) drawText
{
    CGContextRef    currentContext = UIGraphicsGetCurrentContext();
    CGContextSetRGBFillColor(currentContext, 0.0, 0.0, 0.0, 1.0);

    NSString *textToDraw = @"Text goes here";

    UIFont *font = [UIFont systemFontOfSize:22.0];



    CGRect renderingRect = CGRectMake(160, 177.82, 590, 95);

    [textToDraw drawInRect:renderingRect
                  withFont:font
             lineBreakMode:NSLineBreakByWordWrapping
                 alignment:NSTextAlignmentLeft];

}

- (void) drawImage
{
    UIImage * demoImage = [UIImage imageNamed:@"demo.png"];
    [demoImage drawInRect:CGRectMake( 0, 0, 792, 612)];
}

- (void) generatePdfWithFilePath: (NSString *)thefilePath
{
    UIGraphicsBeginPDFContextToFile(thefilePath, CGRectZero, nil);


    BOOL done = NO;
    do
    {

        UIGraphicsBeginPDFPageWithInfo(CGRectMake(0, 0, pageSize.width, pageSize.height), nil);


         [self drawImage];

        [self drawText];


        done = YES;
    }
    while (!done);

    // Close the PDF context and write the contents out.
    UIGraphicsEndPDFContext();

}

1 个答案:

答案 0 :(得分:0)

在包含图像时缩小PDF的方法是使用该图像的JPEG表示。 PDF的大小取决于JPEG的压缩程度。我知道这不是因为在iOS上制作PDF而是在现实生活中制作PDF。

这个问题可能会对您有所帮助:Can I use JPEG compression for images in pdf files generated on iOS?

请注意使用ImageIO框架,以便设置压缩级别。当然,您需要进行实验以获得最佳折衷值。