objective-c - NSTask 运行 pdftk 命令

标签 objective-c macos cocoa

我正在为学校项目使用 cocoa 应用程序为 pdftk 制作一个界面,但由于某种原因它无法工作,它会抛出此错误

Error: Unable to find file.
Error: Failed to open PDF file: 
   articulo.pdf
Done.  Input errors, so no output created.

我的文件下载的当前目录 这是我当前的代码

- (IBAction)getMetadata:(id)sender {

    task = [[NSTask alloc] init];

    NSString *arg = [NSString stringWithFormat:@"%@", fileNamePDF];
    [task setCurrentDirectoryPath: directory];
    task = [NSTask launchedTaskWithLaunchPath:@"/usr/local/bin/pdftk" arguments:@[arg, @"dump_data"]];

    task = nil;
}

最佳答案

“launchedTaskWithLaunchPath”创建新对象(您可以在调试器中检查)。这是适合您的方法:

- (IBAction)getMetadata:(id)sender {
    task = [[NSTask alloc] init];
    NSPipe  *outputPipe = [NSPipe pipe];
    [task setStandardOutput:outputPipe];
    NSFileHandle *outputFileHandle = [outputPipe fileHandleForReading];
    NSString *arg = [NSString stringWithFormat:@"%@", fileNamePDF];
    [task setCurrentDirectoryPath: directory];
    [task setLaunchPath:@"/usr/local/bin/pdftk"];
    [task setArguments:@[arg, @"dump_data"]];
    [task launch];
    [self.task waitUntilExit];
    //read output
    NSData *outputData = [outputFileHandle readDataToEndOfFile];
}

关于objective-c - NSTask 运行 pdftk 命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32573293/

相关文章:

ios - 如何在编辑模式下调整 UITableViewCell 背景的大小

ios - 识别 UIScrollView 中的滑动手势

objective-c - Swift:如何通过 SCDynamicStoreCopyConsoleUser 获取控制台用户、UID 和 GID?

objective-c - 从 NSDocument 类外部保存 cocoa 文档

macos - Cocoa:获取某些文件类型的人类可读描述,仅知道扩展名

ios - NSNotification 不适用于 Swift 翻译(来自 Objective-C)

ios - 如何知道在 uisearchbar 中连续打字以及在 ios 中停止打字

c++ - QScrollArea 在 MacOS X 上的透明背景

macos - 如何在其中对 dmg 和 App 进行代码设计?

iphone - 什么时候不需要为 Nib 指定文件所有者?