我有两个应用程序,我正在尝试将PDF文件从一个传递到另一个。
我们将把两个应用程序视为App1和App2。我正在从App1中打开App2。
所以我已经在App2的信息列表中配置了URLType。
在App1中单击“打开App2”按钮时,我正在创建一个粘贴板,并为其分配一个pdf文件,该pdf文件位于项目目录中,如下所示:
在App1'openApp2'操作方法中:
//pdf copying to pasteboard
NSString *pdfPath = [[NSBundle mainBundle] pathForResource:@"thenativescriptbook" ofType:@"pdf"];
NSURL *pdfURL = [NSURL fileURLWithPath:pdfPath];
NSData *data = [NSData dataWithContentsOfURL:pdfURL];
[[UIPasteboard generalPasteboard] setData:data forPasteboardType:(NSString *)kUTTypePDF];
//code to launch app2
NSString *customAppURL = @"Example://";
NSMutableDictionary *options;
[[UIApplication sharedApplication] openURL:[NSURL
URLWithString:customAppURL] options:options completionHandler:^(BOOL
success) {
NSLog(@"**************Launch Success*************");
}];
它正在启动App2。
现在我正尝试从App2的粘贴板中获取PDF文件,如下所示:
UIPasteboard *pasteboard = [UIPasteboard generalPasteboard];
NSData *data = [pasteboard dataForPasteboardType:(NSString *)kUTTypePDF];
NSURL *pdfURL = [NSURL URLWithDataRepresentation:data relativeToURL:nil];
self.pdfPath = [pdfURL path];
NSLog(@"PATH: %@",self.pdfPath);
但是它给出了我无法在任何PDF阅读器中打开的错误消息。
答案 0 :(得分:1)
当您尝试重新加载PDF文件时,问题似乎出在您的App2中。首次在App1中设置数据时,您将检索PDF文件的数据,并将此数据放置在粘贴板上。
然后在App2中,您检索PDF的数据,但是您没有尝试将其保存到新文件中,而是尝试从PDF数据创建URL,并且...失败了。
UIPasteboard *pasteboard = [UIPasteboard generalPasteboard];
NSData *data = [pasteboard dataForPasteboardType:(NSString *)kUTTypePDF];
到目前为止,该部分仍然有效,但随后...
NSURL *pdfURL = [NSURL URLWithDataRepresentation:data relativeToURL:nil];
self.pdfPath = [pdfURL path];
NSLog(@"PATH: %@",self.pdfPath);
您尝试从检索的PDF数据中创建URL。这是有关如何创建文件的粗略示例:
NSString *cachesFolder = [NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES) lastObject];
NSString *file = [cachesFolder stringByAppendingPathComponent:@"testfile.pdf"];
[data writeToFile:file options:NSDataWritingAtomic error:nil];