【问题标题】:iphone pdf save to document storeiphone pdf保存到文档存储
【发布时间】:2017-12-07 08:42:25
【问题描述】:

我通过创建 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

长话短说,我看不到 PDF 是否好看,因为我在 iTunes 的“文件共享”区域下找不到它。我错过了什么吗?

【问题讨论】:

    标签: iphone directory pdf-generation documents


    【解决方案1】:

    不是您问题的最终解决方案,但我会添加类似的内容 NSFileManager createFileAtPath:someObject writeToFile:file atomically:YES]; 在 NSString * 文件行之后并验证是否创建了任何文件。

    在模拟器中运行应用程序,然后打开一个终端并执行一个

    find ~/* | grep mypdf.pdf

    该命令应该在 Simulators 文档目录下找到该文件。使用越狱设备和 ssh shell,您可以在手机上尝试相同的测试,但对于创建文件,模拟器往往可以正常工作。

    假设您在 info.plist 中设置了 UIFileSharingEnabled,您的应用程序将显示在 iTunes 中。如果创建了 mypdf.pdf,即使是空的,它也应该显示在 iTunes 中。 iTunes 不会过滤,但会显示位于文档目录中的任何内容。

    确认可以创建文件后,继续使用调试器逐步执行您发布的第二个代码块,并查看数据是如何处理的。我从来没有创建过 PDF 文件,所以我无法为您提供太多帮助。

    【讨论】:

      【解决方案2】:

      要查看 PDF 文件,您可以使用 webviews。

      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];
      

      【讨论】:

      • 很有用,谢谢。只需弹出该 Webview 并查看是否创建了任何内容,这很容易。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-09-23
      • 2011-07-07
      • 1970-01-01
      相关资源
      最近更新 更多