URL から pdf データをフェッチし、それを解析して iOS アプリの NSString にしようとしています。
FastPdfKit のようなライブラリは情報を取得し、それを新しいモーダル ビュー コントローラーに表示しますが、これは私が望んでいるものではありません。むしろ、同じビューコントローラーでロードして解析する必要があります。
次に示すように、Quartz で解析しようとすると、次のようになります。
ページ数が 1 であっても、コールバックはまったくありません。
では、単一のビューコントローラーでこれを行うにはどうすればよいでしょうか? ありがとう
試したコード:
static void
op_MP (CGPDFScannerRef s, void *info)
{
const char *name;
if (!CGPDFScannerPopName(s, &name))
return;
printf("MP /%s\n", name);
}
static void
op_DP (CGPDFScannerRef s, void *info)
{
const char *name;
if (!CGPDFScannerPopName(s, &name))
return;
printf("MP /%s\n", name);
}
static void
op_BMC (CGPDFScannerRef s, void *info)
{
const char *name;
if (!CGPDFScannerPopName(s, &name))
return;
printf("MP /%s\n", name);
}
static void
op_BDC (CGPDFScannerRef s, void *info)
{
const char *name;
if (!CGPDFScannerPopName(s, &name))
return;
printf("MP /%s\n", name);
}
static void
op_EMC (CGPDFScannerRef s, void *info)
{
const char *name;
if (!CGPDFScannerPopName(s, &name))
return;
printf("MP /%s\n", name);
}
- (void)viewDidLoad
{
[super viewDidLoad];
CGPDFOperatorTableRef myTable;
myTable = CGPDFOperatorTableCreate();
CGPDFOperatorTableSetCallback (myTable, "MP", &op_MP);
CGPDFOperatorTableSetCallback (myTable, "DP", &op_DP);
CGPDFOperatorTableSetCallback (myTable, "BMC", &op_BMC);
CGPDFOperatorTableSetCallback (myTable, "BDC", &op_BDC);
CGPDFOperatorTableSetCallback (myTable, "EMC", &op_EMC);
CGPDFDocumentRef myDocument;
CFURLRef url = CFBundleCopyResourceURL(CFBundleGetMainBundle(), CFSTR("lel.pdf"), NULL, NULL);
myDocument = CGPDFDocumentCreateWithURL(url);
int k;
CGPDFPageRef myPage;
CGPDFScannerRef myScanner;
CGPDFContentStreamRef myContentStream;
int numOfPages = CGPDFDocumentGetNumberOfPages (myDocument);// 1
NSLog(@"%i", numOfPages);
for (k = 0; k < numOfPages; k++) {
myPage = CGPDFDocumentGetPage (myDocument, k + 1 );// 2
myContentStream = CGPDFContentStreamCreateWithPage (myPage);// 3
myScanner = CGPDFScannerCreate (myContentStream, myTable, NULL);// 4
CGPDFScannerScan (myScanner);// 5
CGPDFPageRelease (myPage);// 6
CGPDFScannerRelease (myScanner);// 7
CGPDFContentStreamRelease (myContentStream);// 8
}
CGPDFOperatorTableRelease(myTable);
}
ZachRon の pdf2iPhone を使用しようとすると、次のエラーが発生します。
http://gyazo.com/52c87cc88a397a64cdbb015113c201c6
ViewController.m:
#import "JONViewController.h"
#import "pdf.h"
@interface JONViewController ()
@end
@implementation JONViewController
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
NSURL *path = [[NSBundle mainBundle] URLForResource:@"lel" withExtension:@"pdf"];
NSString *string = [[NSString alloc] initWithContentsOfURL:path encoding:NSUTF8StringEncoding error:nil];
NSString *pdfString = convertPDF(string);
NSLog(@"%@", pdfString);
}