Note that there are some explanatory texts on larger screens.

plurals
  1. POReading PDF files as string through iPhone application
    primarykey
    data
    text
    <p>I am facing some problem in iPhone application development for "Reading PDF". I have tried following code. I know I have used wrong methods for parsing - parsing methods are just used for searching purpose. But I want to convert entire pdf text in to a string. Say for example Apple's MobileHIG.pdf - I have used in this code.</p> <pre><code>@implementation NetPDFViewController size_t totalPages; // a variable to store total pages // a method to get the pdf ref CGPDFDocumentRef MyGetPDFDocumentRef (const char *filename) { CFStringRef path; CFURLRef url; CGPDFDocumentRef document; path = CFStringCreateWithCString (NULL, filename,kCFStringEncodingUTF8); url = CFURLCreateWithFileSystemPath (NULL, path, kCFURLPOSIXPathStyle, 0); CFRelease (path); document = CGPDFDocumentCreateWithURL (url);// 2 CFRelease(url); int count = CGPDFDocumentGetNumberOfPages (document);// 3 if (count == 0) { printf("`%s' needs at least one page!", filename); return NULL; } return document; } // table methods to parse pdf static void op_MP (CGPDFScannerRef s, void *info) { const char *name; if (!CGPDFScannerPopName(s, &amp;name)) return; printf("MP /%s\n", name); } static void op_DP (CGPDFScannerRef s, void *info) { const char *name; if (!CGPDFScannerPopName(s, &amp;name)) return; printf("DP /%s\n", name); } static void op_BMC (CGPDFScannerRef s, void *info) { const char *name; if (!CGPDFScannerPopName(s, &amp;name)) return; printf("BMC /%s\n", name); } static void op_BDC (CGPDFScannerRef s, void *info) { const char *name; if (!CGPDFScannerPopName(s, &amp;name)) return; printf("BDC /%s\n", name); } static void op_EMC (CGPDFScannerRef s, void *info) { const char *name; if (!CGPDFScannerPopName(s, &amp;name)) return; printf("EMC /%s\n", name); } // a method to display pdf page. void MyDisplayPDFPage (CGContextRef myContext,size_t pageNumber,const char *filename) { CGPDFDocumentRef document; CGPDFPageRef page; document = MyGetPDFDocumentRef (filename);// 1 totalPages=CGPDFDocumentGetNumberOfPages(document); page = CGPDFDocumentGetPage (document, pageNumber);// 2 CGPDFDictionaryRef d; d = CGPDFPageGetDictionary(page); // ----- edit problem here - CGPDFDictionary is completely unknown // ----- as we don't know keys &amp; values of it. CGPDFScannerRef myScanner; CGPDFOperatorTableRef myTable; myTable = CGPDFOperatorTableCreate(); CGPDFOperatorTableSetCallback (myTable, "MP", &amp;op_MP); CGPDFOperatorTableSetCallback (myTable, "DP", &amp;op_DP); CGPDFOperatorTableSetCallback (myTable, "BMC", &amp;op_BMC); CGPDFOperatorTableSetCallback (myTable, "BDC", &amp;op_BDC); CGPDFOperatorTableSetCallback (myTable, "EMC", &amp;op_EMC); CGPDFContentStreamRef myContentStream = CGPDFContentStreamCreateWithPage (page);// 3 myScanner = CGPDFScannerCreate (myContentStream, myTable, NULL);// 4 CGPDFScannerScan (myScanner);// 5 // CGPDFDictionaryRef d; CGPDFStringRef str; // represents a sequence of bytes d = CGPDFPageGetDictionary(page); if (CGPDFDictionaryGetString(d, "Thumb", &amp;str)){ CFStringRef s; s = CGPDFStringCopyTextString(str); if (s != NULL) { //need something in here in case it cant find anything NSLog(@"%@ testing it", s); } CFRelease(s); // CFDataRef data = CGPDFStreamCopyData (stream, CGPDFDataFormatRaw); } // ----------------------------------- CGContextDrawPDFPage (myContext, page);// 3 CGContextTranslateCTM(myContext, 0, 20); CGContextScaleCTM(myContext, 1.0, -1.0); CGPDFDocumentRelease (document);// 4 } - (void)viewDidLoad { [super viewDidLoad]; // -------------------------------------------------------- // code for simple direct image from pdf docs. UIGraphicsBeginImageContext(CGSizeMake(320, 460)); initialPage=28; MyDisplayPDFPage(UIGraphicsGetCurrentContext(), initialPage, [[[NSBundle mainBundle] pathForResource:@"MobileHIG" ofType:@"pdf"] UTF8String]); imgV.image=UIGraphicsGetImageFromCurrentImageContext(); imgV.image=[imgV.image rotate:UIImageOrientationDownMirrored]; } - (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{ UITouch *touch = [touches anyObject]; CGPoint LasttouchPoint = [touch locationInView:self.view]; int LasttouchX = LasttouchPoint.x; startpoint=LasttouchX; } - (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event{ } - (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event{ UITouch *touch = [touches anyObject]; CGPoint LasttouchPoint = [touch locationInView:self.view]; int LasttouchX = LasttouchPoint.x; endpoint=LasttouchX; if(startpoint&gt;(endpoint+75)){ initialPage++; [self loadPage:initialPage nextOne:YES]; } else if((startpoint+75)&lt;endpoint){ initialPage--; [self loadPage:initialPage nextOne:NO]; } } -(void)loadPage:(NSUInteger)page nextOne:(BOOL)yesOrNo{ if(page&lt;=totalPages &amp;&amp; page&gt;0){ UIGraphicsBeginImageContext(CGSizeMake(720, 720)); MyDisplayPDFPage(UIGraphicsGetCurrentContext(), page, [[[NSBundle mainBundle] pathForResource:@"MobileHIG" ofType:@"pdf"] UTF8String]); CATransition *transition = [CATransition animation]; transition.duration = 0.75; transition.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut]; transition.type=kCATransitionPush; if(yesOrNo){ transition.subtype=kCATransitionFromRight; } else { transition.subtype=kCATransitionFromLeft; } transition.delegate = self; [imgV.layer addAnimation:transition forKey:nil]; imgV.image=UIGraphicsGetImageFromCurrentImageContext(); imgV.image=[imgV.image rotate:UIImageOrientationDownMirrored]; } } </code></pre> <p>But I didn't get success to read even a single line from the pdf document. What is still missing?</p>
    singulars
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload