Trying to extract text from PDF in c# in UWP -


private void fvpdf_selectionchanged(object sender, selectionchangedeventargs e) {     int index = fvpdf.selectedindex;     if (resultlist.count > 0 && resultlist.count > index)     {         this.displaytext.text = resultlist[index];     } }  private async void openpdf_click(object sender, routedeventargs e) {     // this.openpdf.isenabled = false;     fileopenpicker picker = new fileopenpicker();     picker.filetypefilter.add(".pdf");     storagefile pdffile = await picker.picksinglefileasync();      if (pdffile != null)     {         // load pdf file.         pdfdocument pdfdoc = await pdfdocument.loadfromfileasync(pdffile);         uint pagecount = pdfdoc.pagecount;         progressbar.maximum = pagecount;         fvpdf.items.clear();         resultlist.clear();          (uint = 0; < pagecount; i++)         {             using (pdfpage page = pdfdoc.getpage(i))             {                 inmemoryrandomaccessstream stream = new inmemoryrandomaccessstream();                  // default actual size. render pdf page stream                 await page.rendertostreamasync(stream);                  // create bitmapimage image source                 bitmapimage bitmap = new bitmapimage();                  // set stream bitmapimage's source                 await bitmap.setsourceasync(stream);                  // create image flipview item's source                 image img = new image();                 img.source = bitmap;                  // add image item flipview.                 fvpdf.items.add(img);                  // update processbar                 progressbar.value++;                  // new ocrengine default language                 ocrengine ocrengine = ocrengine.trycreatefromuserprofilelanguages();                 bitmapdecoder decoder = await bitmapdecoder.createasync(stream);                 softwarebitmap softwarebitmap = await decoder.getsoftwarebitmapasync(bitmappixelformat.bgra8, bitmapalphamode.premultiplied);                  // recognition result                 ocrresult result = await ocrengine.recognizeasync(softwarebitmap);                  // add result list                 resultlist.add(result.text);             }         }          // show first page recognition result         fvpdf_selectionchanged(null, null);     } } 

well works fine in first attempt read pdf file whereas when trying read 2nd pdf, showing error , throwing exception:

system.argumentoutofrangeexception

in line:

this.displaytext.text = resultlist[index]; 

how clear "list" again work 2nd time , on?

i tested code snippet , throw following exception mentioned:

system.argumentoutofrangeexception: 'index out of range. must non-negative , less size of collection.'

actually exception, mkl said caused value of selectedindex "-1" resultlist[index] thrown exception. invoked fvpdf_selectionchanged(null, null); showing first page result , method selectedindex using, @ same time selectedindex "-1" default since there no item selected. details please reference selectedindex property.

so if want show first recognize page result, should set selectedindex 0 after loaded pdf file. updated code follows:

// show first page recognition result //fvpdf_selectionchanged(null, null); fvpdf.selectedindex = 0; 

Comments

Popular posts from this blog

PHP and MySQL WP -

android - InAppBilling registering BroadcastReceiver in AndroidManifest -

go - golang pprof for c library code -