javascript adobe words not not up in" this.getPageNthWord"

时间:2017-03-29 13:58:58

标签: javascript pdf adobe

我正在编写代码来格式化PDF,这些代码是由专有程序自动生成的。我已经开发了以下代码来实现以下目标:

  1. 查看每页的前10个单词。如果用词"评价"和"摘要"按顺序显示,删除该页面和文档末尾之间的每个页面。
  2. 在某些文件上它可以完美运行,但在其他文件上,任务不会删除最终页面。当我运行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)
                      }
               }
             }
         }
     }
    

2 个答案:

答案 0 :(得分:0)

我有一个类似的问题,事实证明getPageNthWord默认剥离标点符号和空格,这在某种程度上完全删除了某些PDF中的整个单词/短语(我的问题PDF是由Ghostscript 8.71生成的)。如果是这种情况,那么如果将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)
              }
       }
     }
 }
}

答案 1 :(得分:0)

经过一番挖掘,我发现了问题所在!我向前和向前遍历了有问题的页面上的每个单词,发现生成的单词会自动显示在索引中,而我正在寻找的单词更接近结尾。似乎页面上单词的Javascript索引指的是它们的创建顺序,而不是它们出现在屏幕上的顺序。

我试图删除的页面位于文档的底部。让脚本检查从上到下的每个单词都会消耗太多的处理能力,但让它从下到上检查每个页面上的每个单词都会加快我的处理时间并删除我想要的页面。