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