У меня есть этот метод, который использует мой UIWebView и конвертирует в PDF-файл и хорошо работает. Но когда я распечатываю этот PDF-файл или отправляю его по электронной почте, он отключается. Это похоже на то, что размер UIWebView, который я установил (ширина: 688 & height: 577) Если я увеличу размер UIWebView до 300 или 1024, мой PDF-файл пуст. Мой UIWebView больше 577, но в моем приложении я могу прокручивать.Задачи-C Проблемы с UIWebView в PDF
Вот способ ....
-(void)webViewDidFinishLoad:(UIWebView *)webViewPDF
{
CGRect origframe = webViewPDF.frame;
NSString *heightStr = [webViewPDF stringByEvaluatingJavaScriptFromString:@"document.body.scrollHeight;"]; // Get the height of our webView
int height = [heightStr intValue];
CGFloat maxHeight = kDefaultPageHeight - 2*kMargin;
int pages = floor(height/maxHeight);
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *path = [paths objectAtIndex:0];
self.pdfPath = [path stringByAppendingPathComponent:[NSString stringWithFormat:@"Purchase Order.pdf"]];
UIGraphicsBeginPDFContextToFile(self.pdfPath, CGRectZero, nil);
for (int i = 0; i < pages; i++)
{
if (maxHeight * (i+1) > height) {
CGRect f = [webViewPDF frame];
f.size.height -= (((i+1) * maxHeight) - height);
[webViewPDF setFrame: f];
}
UIGraphicsBeginPDFPageWithInfo(CGRectMake(0, 0, kDefaultPageWidth, kDefaultPageHeight), nil);
CGContextRef currentContext = UIGraphicsGetCurrentContext();
CGContextTranslateCTM(currentContext, kMargin, kMargin);
[webViewPDF.layer renderInContext:currentContext];
}
UIGraphicsEndPDFContext();
[webViewPDF setFrame:origframe];
[[[webViewPDF subviews] lastObject] setContentOffset:CGPointMake(0, 0) animated:NO];
}
Я надеюсь, что это имеет смысл .... Кто-нибудь есть какие-либо предложения о том, как это исправить, так что PDF не отрезан?
Я забыл упомянуть эти переменные:
#define kDefaultPageHeight 850
#define kDefaultPageWidth 850
#define kMargin 50
Вот моя кнопка доля:
- (IBAction)Share:(id)sender {
NSData *pdfData = [NSData dataWithContentsOfFile:self.pdfPath];
UIActivityViewController * activityController = [[UIActivityViewController alloc] initWithActivityItems:@[pdfData] applicationActivities:nil];
UIPopoverController *popup = [[UIPopoverController alloc] initWithContentViewController:activityController];
[popup presentPopoverFromRect:CGRectMake(self.view.frame.size.width - 36, 60, 0, 0)inView:self.view permittedArrowDirections:UIPopoverArrowDirectionUp animated:YES];
}
Так что же это связано с Objective-C? – matt
этот метод Objective-C – user979331
Очевидно, что ваш код находится в Objective-C. Любой может это видеть. Но вопрос не о _ Objective-C. Независимо от того, какой ответ будет одинаковым, используете ли вы Objective-C, Swift, AppleScript или что-то еще. – matt