UIPasteboard 不适用于 PDF 文件
UIPasteboard is not working for PDF files
我有两个应用程序,我正在尝试将 PDF 文件从一个应用程序传递到另一个应用程序。
我们将这两个应用程序视为 App1 和 App2。我正在从 App1 打开 App2。
所以我在App2的信息plist中配置了URLTypes。
单击 App1 中的按钮 'Open App2',我正在创建一个粘贴板并将其分配给项目目录中的一个 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 阅读器中打开它。
当您尝试加载 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];
我有两个应用程序,我正在尝试将 PDF 文件从一个应用程序传递到另一个应用程序。
我们将这两个应用程序视为 App1 和 App2。我正在从 App1 打开 App2。
所以我在App2的信息plist中配置了URLTypes。
单击 App1 中的按钮 'Open App2',我正在创建一个粘贴板并将其分配给项目目录中的一个 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 阅读器中打开它。
当您尝试加载 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];