1

うまくいけば、タイトルは理にかなっています。これが私の状況です。

Pages で 1 つの PDF を作成し、PDF としてエクスポートしました。次に、アプリ内で別の PDF を作成します。次のコードで PDF ファイルを作成します。

- (void)makePDF:(NSString*)fileName :(NSDictionary*)dictResults
{
    pageSize = CGSizeMake(612, 792);
    _strPDFJustCreated = fileName;
    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
    NSString *documentsDirectory = [paths objectAtIndex:0];
    NSString *pdfFileName = [documentsDirectory stringByAppendingPathComponent:fileName];

    [self generatePdfWithFilePath:pdfFileName:dictResults];
}

- (void)generatePdfWithFilePath:(NSString *)thefilePath :(NSDictionary*)dictResults
{
    UIGraphicsBeginPDFContextToFile(thefilePath, CGRectZero, nil);
    BOOL done = NO;

    do {
        ...whole lot of coding goodness
        done = YES;
    } while (!done);

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

どちらのファイルも、次のコードを含む電子メール メッセージに添付されています。

/**********Attach PDF Files**************/
//get path to pdf file
NSArray* paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString* documentsDirectory = [paths objectAtIndex:0];
NSString* pdfFilePath = [documentsDirectory stringByAppendingPathComponent:strPDFFileName];

//convert pdf file to NSData
NSData* pdfData = [NSData dataWithContentsOfFile:pdfFilePath];

//attach the pdf file
[mailViewController addAttachmentData:pdfData mimeType:@"application/pdf" fileName:strPDFFileName];

//get path to pdf file
NSString* pdf2FilePath = [documentsDirectory stringByAppendingPathComponent:@"OER_MarketingContent.pdf"];

//convert pdf file to NSData
NSData* pdf2Data = [NSData dataWithContentsOfFile:pdf2FilePath];

//attach the pdf file
[mailViewController addAttachmentData:pdf2Data mimeType:@"application/pdf" fileName:@"OER_MarketingContent.pdf"];

[self presentViewController:mailViewController animated:YES completion:NULL];

iPhone Simulator フォルダー内の app フォルダー内でピークを取ると、そこに PDF ファイルがあり、OS によって PDF ファイルとして認識され、開いて読み取ることができます。しかし、電子メール メッセージが配信されたとき (笑ってはいけませんが、Lotus Notes を使用しています)、ファイルをプレビューすることはできません。 )ハングするだけです。

他のアプリでも同じコードを問題なく使用しています。私の推測では、コードのどこかで何か違うことをしているということです。明らかなものが何も表示されないので、私の質問は、ファイルを添付する前に NSData の成功/失敗をテストする方法や、添付ファイルを送信する前にメールを送信する前にテストする方法はありますか?

ありがとう

4

1 に答える 1

0

使用しないでくださいUIGraphicsBeginPDFContextToFile(thefilePath, CGRectZero, nil);。代わりに、次を使用しますNSData * pdfData = [NSData dataWithContentsOfFile:pdfFileName];

したがって、全体は次のようになります。

    NSString *fileName = @"Demo.pdf";
    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
    NSString *documentsDirectory = [paths objectAtIndex:0];
    NSString *pdfFileName = [documentsDirectory stringByAppendingPathComponent:fileName];
    [self generatePdfWithFilePath:pdfFileName];

    MFMailComposeViewController *controller = [[MFMailComposeViewController alloc] init];
        controller.mailComposeDelegate = self;
        [controller setToRecipients:[NSArray arrayWithObject:@"email@email.com"]];
        [controller setSubject:@"PDFTEST"];
        [controller setMessageBody:@"Your text here" isHTML:NO];

NSData * pdfData = [NSData dataWithContentsOfFile:pdfFileName];
    NSString *testFileName = [NSString stringWithFormat:@"PDFNAME"];
    [controller addAttachmentData:pdfData mimeType:@"application/pdf" fileName:testFileName];

    [self presentModalViewController:controller animated:YES];

これは私にとってはうまくいきました。他にご不明な点やご不明な点がございましたら、お気軽にお問い合わせください。ありがとう!

于 2013-07-19T21:03:55.383 に答える