2017-03-29 62 views
0

我正在寫代碼來格式化PDF,它是由專有程序自動生成的。我已經開發了以下代碼來完成以下目標:javascript adobe字詞沒有顯示在「this.getPageNthWord」

  1. 翻閱每頁的前10個單詞。如果單詞「評估」和「摘要」按順序顯示,請刪除該頁面和文檔末尾之間的每個頁面。

在一些文件上它可以很好地工作,但是在其他文件上,任務不會刪除最終頁面。當我運行this.getPageNthWord(「有評估摘要的頁面索引」,「評估索引」)時,它會跳過該單詞。

我的第一個想法是,我在屏幕上看到的單詞是一個圖像文件,但是當我編輯PDF或使用Ctrl + F搜索時,它顯示爲文本。似乎後端軟件正在生成數據並將其放置在大部分空白的模板上,javascript this.getPageNthWord函數只計算由後端軟件生成的數據,而不是模板。

我的問題是如何在PDF文件中的單詞不顯示在this.getPageNthWord?有沒有其他的屬性可以被找到?

for (var p=this.numPages-1; p>=0; p--) { 
    for (var n=0; n<10; n++) { 
     if (this.getPageNthWord(p, n) == "Evaluations") { 
      if (this.getPageNthWord(p, n+1) == "Summary") { 
       for (var d=p; d<this.numPages;d++){ 
        this.deletePages(d) 
        } 
      } 
     } 
    } 
} 

回答

0

我有一個類似的問題,事實證明,getPageNthWord默認爲剝出標點符號和空格,這在某種程度上完全消除整個詞/在某些PDF文件短語(爲Ghostscript 8.71生成了我的問題PDF文件)。如果是這種情況,那麼很有可能如果將getPageNthWord的bStrip參數設置爲false,它將起作用。您還需要使用trim()刪除剩餘的空格。

for (var p=this.numPages-1; p>=0; p--) { 
for (var n=0; n<10; n++) { 
    if (this.getPageNthWord(p, n, false).trim() == "Evaluations") { 
     if (this.getPageNthWord(p, n+1, false).trim() == "Summary") { 
      for (var d=p; d<this.numPages;d++){ 
       this.deletePages(d) 
       } 
     } 
    } 
} 
} 
0

經過一番小小的挖掘,我找出了問題所在!我逐字逐句瀏覽相關頁面上的每個字詞,發現自動生成的單詞首先在索引中出現,並且我正在尋找更接近結尾的單詞。看起來,頁面上的文字的Javascript索引指的是它們的創建順序,而不是它們在屏幕上顯示的順序。

我試圖刪除的頁面位於文檔的底部。讓腳本檢查從上到下的每個單詞吃掉了太多的處理能力,但是讓它從底部檢查每個頁面上的每個單詞,從而加快了處理時間並刪除了我想要去的頁面。