1

こんにちは、iOS の初心者です。一つ聞きたいことがあります... PDF を作成し、デバイスを介して電子メールとして送信します.. メールを正しく送信しています.... メールは正常に受信されますが、すべてのページが取得されませんPDF... iPhone の画面に 1 ページしか表示されません ...この問題を解決するにはどうすればよいですか?

 -(IBAction)openMail:(id)sender
 {
   if ([MFMailComposeViewController canSendMail])
   {

    NSMutableData *pdfData = [NSMutableData data];
    UIGraphicsBeginPDFContextToData(pdfData, self.view.bounds, nil);
    UIGraphicsBeginPDFPage();

    [self.view.layer renderInContext:UIGraphicsGetCurrentContext()];

    UIGraphicsEndPDFContext();


    MFMailComposeViewController *mailer = [[MFMailComposeViewController alloc] init];

    mailer.mailComposeDelegate = self;

    [mailer setSubject:@"A Message from CloudChowk"];

    [mailer addAttachmentData:pdfData mimeType:@"pdf" fileName:@"abcd.pdf"];

    NSLog(@"mailer %@",mailer);


    NSString *emailBody = @"Patient Report";

    [mailer setMessageBody:emailBody isHTML:NO];

    [self presentViewController:mailer animated:YES completion:nil];

  }

 else
  {
    UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Failure"message:@"Your device doesn't support the composer sheet"delegate:nil cancelButtonTitle:@"OK" otherButtonTitles: nil];

    [alert show];

 }


}
   - (void)mailComposeController:(MFMailComposeViewController*)controller didFinishWithResult:(MFMailComposeResult)result error:(NSError*)error
  {
    switch (result)
    {
    case MFMailComposeResultCancelled:
    {
        NSLog(@"Mail cancelled: you cancelled the operation and no email message was queued.");
        break;
    }
    case MFMailComposeResultSaved:
    {
        NSLog(@"Mail saved: you saved the email message in the drafts folder.");
        break;
    }
    case MFMailComposeResultSent:
    {
        NSLog(@"Mail send: the email message is queued in the outbox. It is ready to send.");
        break;
    }
    case MFMailComposeResultFailed:
    {
        NSLog(@"Mail failed: the email message was not saved or queued, possibly due to an error.");
        break;
    }
    default:
        NSLog(@"Mail not sent.");
        break;
  }

    [self dismissViewControllerAnimated:YES completion:nil];
 }

私は正常に実行され、電子メールを送信しますが、すべてのページを送信しないこの機能を使用しています...この問題を解決してください....

 UIGraphicsBeginPDFContextToData(pdfData, self.view.bounds, nil);

この行を self.view.bounds と疑っていますが、この問題を解決できません..

4

2 に答える 2

1

これはこれを使用した正しいコードで、生成されたpdfファイルのすべてのページを電子メールとして送信できます..

   if ([MFMailComposeViewController canSendMail])
   {

    MFMailComposeViewController *mailer = [[MFMailComposeViewController alloc] init];

    mailer.mailComposeDelegate = self;

    [mailer setSubject:@"A Message from CloudChowk"];


    NSLog(@"file name %@",fileName);
    NSData *data=[NSData dataWithContentsOfFile:fileName];
  //  NSLog(@"data %@",data);
    [mailer addAttachmentData:data mimeType:@"pdf" fileName:@"myPDF.pdf"];

    NSLog(@"mailer %@",mailer);

    NSString *emailBody = @"Patient Report";

    [mailer setMessageBody:emailBody isHTML:NO];

    [self presentViewController:mailer animated:YES completion:nil];

}

else
{
    UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Failure"message:@"Your device doesn't support the composer sheet"delegate:nil cancelButtonTitle:@"OK" otherButtonTitles: nil];

    [alert show];

}
于 2013-07-24T05:09:25.323 に答える
0

私が間違っていなければ、この行に問題がありました。今、このように編集しました。

//In this line you are only capturing view bound frame , If you are using scrollView in it then refer its bound relative to scrollView (content Size).
UIGraphicsBeginPDFContextToData(pdfData, self.scrollView.contentSize, nil);
于 2013-07-24T07:28:37.687 に答える