这里我需要通过其中一个页面中的一些动态内容生成pdf文件,下一页包含图像,但我的代码生成为单页可以帮助我
此绘制文本方法用于生成动态内容
- (void) drawText
{
CGContextRef currentContext = UIGraphicsGetCurrentContext();
CGContextSetRGBFillColor(currentContext, 0.0, 0.0, 0.0, 1.0);
NSString *textToDraw=[[NSString alloc] initWithString:@""];
for (int i=0; i<[fieldsArr count]; i++)
{
textToDraw=[textToDraw stringByAppendingFormat:[NSString stringWithFormat:@"%@\t%@\n",[fieldsArr objectAtIndex:i],[valuesArr objectAtIndex:i]]];
}
textToDraw=[textToDraw stringByAppendingFormat:@"\n\n\n\n\n\n"];
UIFont *font = [UIFont systemFontOfSize:14.0];
CGSize stringSize = [textToDraw sizeWithFont:font
constrainedToSize:CGSizeMake(pageSize.width - 2*kBorderInset-2*kMarginInset, pageSize.height - 2*kBorderInset - 2*kMarginInset)
lineBreakMode:UILineBreakModeWordWrap];
CGRect renderingRect = CGRectMake(kBorderInset + kMarginInset, kBorderInset + kMarginInset + 50.0, pageSize.width - 2*kBorderInset - 2*kMarginInset, stringSize.height);
[textToDraw drawInRect:renderingRect
withFont:font
lineBreakMode:UILineBreakModeWordWrap
alignment:UITextAlignmentLeft];
}
此方法用于绘制图像
- (void) drawImage
{
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *getImagePath = [documentsDirectory stringByAppendingPathComponent:@"displayImage.jpg"];
UIImage * demoImage = [UIImage imageWithContentsOfFile:getImagePath];
[demoImage drawInRect:CGRectMake( (pageSize.width - demoImage.size.width/2)/2, 500, demoImage.size.width/2, demoImage.size.height/2)];
}
此方法用于生成pdf文件
- (void) generatePdfWithFilePath: (NSString *)thefilePath
{
UIGraphicsBeginPDFContextToFile(thefilePath, CGRectZero, nil);
NSInteger currentPage = 0;
BOOL done = NO;
do
{
//Start a new page.
UIGraphicsBeginPDFPageWithInfo(CGRectMake(0, 0, pageSize.width, pageSize.height), nil);
//Draw a page number at the bottom of each page.
//Draw some text for the page.
[self drawText];
//Draw an image
[self drawImage];
done = YES;
}
while (!done);
// Close the PDF context and write the contents out.
UIGraphicsEndPDFContext();
}
请帮我分开不同页面中的文字和图片
答案 0 :(得分:0)
检查您正在撰写的内容类型,如果它属于imageView,则启动新的pdf页面。
答案 1 :(得分:0)
当您想要绘制图像时添加新页面。这是更改代码,在此我已经在绘制图像之前添加了新页面
- (void) generatePdfWithFilePath: (NSString *)thefilePath
{
UIGraphicsBeginPDFContextToFile(thefilePath, CGRectZero, nil);
NSInteger currentPage = 0;
BOOL done = NO;
do
{
//Start a new page.
UIGraphicsBeginPDFPageWithInfo(CGRectMake(0, 0, pageSize.width, pageSize.height), nil);
//Draw a page number at the bottom of each page.
//Draw some text for the page.
[self drawText];
//Again start a new page to Draw an image
UIGraphicsBeginPDFPageWithInfo(CGRectMake(0, 0, pageSize.width, pageSize.height), nil);
[self drawImage];
done = YES;
}
while (!done);
// Close the PDF context and write the contents out.
UIGraphicsEndPDFContext();
}