2014-07-23 60 views
0

我的web應用程序的工作中,我一定要顯示使用PDF.JS PDF文件,並有在那裏我有畫一個矩形,用戶可以點擊該該把他帶到詳細信息頁面數區域。到現在爲止,我能夠顯示PDF邊看PDF JS,我發現canvas.js中的所有文本是吸取使用
showText帆布:功能CanvasGraphics_showText(字形){}功能現在我跟蹤的所有文本的文本,我必須畫一個矩形但我面臨一些問題來完成它。 showText函數調用多次創建多個矩形。我已經做了以下更改功能使用PDFJS可以在畫布上搜索繪圖文本嗎?

if(glyphs.length ==10){ 
      // common case 
      var bValue=false; 

      glyphs.forEach(function(value, index, ar){ 
      var str =['d', 'e', 't', 'a','i','l','=']; 

      if(str.indexOf(value.fontChar)>=0){ 
       bValue=true; 
       } 
      }); 

      if(bValue){ 
       ctx.beginPath(); 
        ctx.rect(scaledX, 50, 200, 100); 
        ctx.fillStyle = 'yellow'; 
        ctx.fill(); 
        ctx.lineWidth = 2; 
        ctx.strokeStyle = 'black'; 
        ctx.stroke();  
        ctx.font = '20pt Calibri'; 
        // textAlign aligns text horizontally relative to placement 
        ctx.textAlign = 'center'; 
        // textBaseline aligns text vertically relative to font 
        // style 
        ctx.textBaseline = 'middle'; 
        ctx.fillStyle = 'blue'; 
        ctx.fillText("Click", 120, 100); 
      } 

      } 

字形是對象的數組,我正在尋找值海峽定義。 任何人都可以將我指向正確的方向嗎? 在此先感謝。

+0

mmmh我建議你喜歡FabricJs – InferOn

+0

畫布框架@推斷,在使用FabricJs它可以搜索文本? – RizN81

+0

這只是一種可能。要做到這一點,而不庫的唯一方法是使用包括每個位置的變量來跟蹤文本,搜索變量,看看搜索文本匹配,則假選中文字,如果它匹配的 –

回答

0

這不是真的有可能直接做到這一點。 Canvas從根本上說是一個基於位圖的圖形引擎:它從調用中調用的唯一東西就是它內部像素的值。 您可以繪製文字,但一旦完成了,畫布就不會再知道文字了。。這就是爲什麼你不能在圖像內搜索它。

解決這個問題的最快和最簡單的方法是跟蹤文本其他地方的。 @ ZachSaucier的評論提到了這種可能性。我發現你關心的是性能,但另一種方法是實現某種OCR算法來從位圖中提取文本。沒有標準的方法來做到這一點,所以你必須自己實現OCR,並且它將比將文本存儲在變量中慢得多。

另一種選擇是使用SVG來代替畫布。 SVG不是基於位圖的,因此當您將文本放入SVG圖像時,引擎可以記住它是文本,並且您可以在其中進行搜索。但是,在SVG中繪製事物與在Canvas中繪製事物非常不同,因此除非您已經使用可以與任何一個工作的庫,否則必須重新編寫繪圖代碼。對於你想要做的事,這可能是不可行的。