1
我想從其他應用中...菜單通過公開發送到我的應用程序在pdfFile
strings
。 我寫了一個pdfscanner
,而我傳遞一個pdfPage
和掃描儀應該火回調"getString"
我使用SWIFT大多但掃描儀的代碼是在Objective-C 的問題是,當我發送pdfDoc到我的應用從另一個應用程序,「getString」callBack不會觸發。 當我在同一個文檔使用URL從目錄中我的MacBook Pro發送到我的應用程序, 然後它和「的getString」回調被調用。 當我檢查調試器時,我總是將有效的CGPDFPageRef傳遞給「extractStringsFromPDFPage:」方法。 我也是在這兩種情況下有一個有效的CGPDFContentStream和CGPDFOperatorTableCGPDFScannerScan不調用回調函數
這裏的掃描儀的代碼:
@implementation FFStringExtractor
- (instancetype)init
{
self = [super init];
if (self) {
self.pdfStrings = [[NSMutableArray alloc] init];
}
return self;
}
- (void) extractStringsFromPDFPage: (CGPDFPageRef) page {
CGPDFContentStreamRef contentStream = CGPDFContentStreamCreateWithPage(page);
// get the strings
CGPDFOperatorTableRef operatorTable = CGPDFOperatorTableCreate();
CGPDFOperatorTableSetCallback(operatorTable, "Tj", getString);
FFStringExtractor *currentExtractor = self;
CGPDFScannerRef scanner = CGPDFScannerCreate(contentStream, operatorTable, (__bridge void*)currentExtractor);
CGPDFScannerScan(scanner);
//releases
CGPDFOperatorTableRelease(operatorTable);
CGPDFScannerRelease(scanner);
CGPDFContentStreamRelease(contentStream);
}
@end
void getString (CGPDFScannerRef pageScanner, void *info) {
CGPDFStringRef pdfString;
CGPDFScannerPopString(pageScanner, &pdfString);
const unsigned char *byteString = CGPDFStringGetBytePtr(pdfString);
NSString *macRomanDecode = [NSString stringWithCString:byteString encoding:NSMacOSRomanStringEncoding];
FFStringExtractor *currentObject = (__bridge FFStringExtractor*) info;
[currentObject.pdfStrings addObject:macRomanDecode];
}
這裏是如何我的文件從的appDelegate
func application(application: UIApplication, openURL url: NSURL, sourceApplication: String?, annotation: AnyObject?) -> Bool {
//Get the Data from the preview open in... menu
//let macBookUrl = NSURL(fileURLWithPath: "/Users/vmalterre/Documents/Xcodes/TESTDOC.pdf")
let doc = CGPDFDocumentCreateWithURL(url)
//let doc = = CGPDFDocumentCreateWithURL(macBookUrl)
let sharedStore = FFDataStore.sharedStore
sharedStore.addFileWithDoc(doc)
return true
}
發送到我的應用我我一直在這一整天,任何幫助將不勝感激。