0

私はpdfコンテキストを作成し、以下に定義されているパスを与えることでpdfをレンダリングしています:

    NSFileManager *fileManager = [NSFileManager defaultManager];
NSString *docsDirectory = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0];
NSString *file = [docsDirectory stringByAppendingPathComponent:@"mypdf.pdf"];

そして、そのパスを次のように使用します。

    char * fileutf8 = [file UTF8String];
    CGContextRef pdfContext;
CFStringRef path;
CFURLRef url;
CFMutableDictionaryRef myDictionary = NULL;
path = CFStringCreateWithCString (NULL, fileutf8,kCFStringEncodingUTF8);
url = CFURLCreateWithFileSystemPath (NULL, path,kCFURLPOSIXPathStyle, 0);
CFRelease (path);
myDictionary = CFDictionaryCreateMutable(NULL, 0,&kCFTypeDictionaryKeyCallBacks,&kCFTypeDictionaryValueCallBacks);
CFDictionarySetValue(myDictionary, kCGPDFContextTitle, CFSTR("My PDF File"));
CFDictionarySetValue(myDictionary, kCGPDFContextCreator, CFSTR("My Name"));
pdfContext = CGPDFContextCreateWithURL (url, &size, myDictionary);
CFRelease(url);
CFRelease(myDictionary);// rendering code follows

簡単に言えば、iTunes の [ファイル共有] 領域の下に PDF が見つからないため、PDF が適切に表示されるかどうかを確認できません。何か不足していますか?

4

2 に答える 2

0

PDFファイルを表示するには、Webビューを使用できます。

NSFileManager *fileManager = [NSFileManager defaultManager];
NSString *docsDirectory = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask, YES) objectAtIndex:0];
NSString *file = [docsDirectory stringByAppendingPathComponent:@"mypdf.pdf"];

// use the code for webView

UIWebView *attachmentWebView = [[UIWebView alloc] initWithFrame:CGRectMake(10,0,300,400)];
NSURLRequest *request = [[NSURLRequest alloc] initWithURL:[NSURL fileURLWithPath:file]];   
[attachmentWebView loadRequest:request];
[request release];
[self.view addSubview:attachmentWebView];
[attachmentWebView release];
于 2010-12-13T09:53:14.623 に答える
0

あなたの質問に対する最終的な解決策ではありませんが 、NSString *ファイル行のようなものを追加し、ファイルが作成されているかどうかを確認しますNSFileManager createFileAtPath:someObject writeToFile:file atomically:YES];

シミュレーターでアプリを実行し、ターミナルを開いて、

find ~/* | grep mypdf.pdf

このコマンドは、Simulatorsdocumentsディレクトリの下にあるファイルを見つける必要があります。ジェイルブレイクされたデバイスとsshシェルを使用すると、電話で同じテストを試すことができますが、ファイルを作成する場合、シミュレーターは問題なく動作する傾向があります。

info.plistでUIFileSharingEnabledを設定したとすると、アプリはiTunesに表示されます。また、mypdf.pdfが作成されると、空の場合でも、iTunesにも表示されます。iTunesはフィルタリングしませんが、ドキュメントディレクトリにあるものはすべて表示します。

ファイルを作成できることを確認したら、デバッガーを使用して、投稿した2番目のコードブロックをステップ実行し、データがどのように処理されるかを確認します。私はPDFファイルを作成したことがないので、そこではあまり役に立ちません。

于 2010-12-13T10:46:56.787 に答える