0

URL から pdf データをフェッチし、それを解析して iOS アプリの NSString にしようとしています。

FastPdfKit のようなライブラリは情報を取得し、それを新しいモーダル ビュー コントローラーに表示しますが、これは私が望んでいるものではありません。むしろ、同じビューコントローラーでロードして解析する必要があります。

次に示すように、Quartz で解析しようとすると、次のようになります。

https://developer.apple.com/library/mac/documentation/GraphicsImaging/Conceptual/drawingwithquartz2d/dq_pdf_scan/dq_pdf_scan.html

ページ数が 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);
}
4

1 に答える 1

1

PdfIphone コードは私のために働いた: https://github.com/zachron/pdfiphone

Pdf を解析し、converPdfメソッドで NSString を返します。

于 2013-10-06T17:46:46.397 に答える