4

我从 Apache 下载了 PDFBox 1.8.6

然后我将它复制到我在 Java/Eclipse 项目的根目录中创建的“res”文件夹中。然后我右键单击项目,转到属性,然后进入 Java 构建路径,然后在库中,然后单击添加 JARS... 并添加它及其文档。

这是结果

从那时起,在我的代码中,我可以导入(ish)PDFBox。

例如,我可以看到:

import org.apache.pdfbox.pdmodel.*;

但是,如果您想做一些有用的事情,则需要导入更多内容,通常采用以下形式:

import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.pdmodel.PDPage;
import org.apache.pdfbox.pdmodel.edit.PDPageContentStream;
import org.apache.pdfbox.pdmodel.font.PDType1Font;
import org.apache.pdfbox.pdmodel.font.PDFont;

出于某种奇怪的原因,我看不到这些......

这是导入的屏幕截图...

有人可以为我解释一下吗?

4

6 回答 6

1

官方来源链接的当前文件不正确。它的重量为 28K 而不是几兆字节。哇,这一次不是我!哈哈哈

于 2014-09-22T00:33:47.767 回答
0

对于您的问题,我必须说您需要更改 pdfbox jar 文件并下载许多支持的 jar,或者您可以尝试下面的代码。

这里的代码使用 pdfbox 和 apache tika 来解析一个 pdf 文件并将输出保存到一个位置。

您将需要以下这些罐子。

bcprov-1.45.jar fontbox-1.5.0.jar org.apache.tika.jar org.apache.tika.parsers.jar pdfbox-1.3.1.jar

package readpdf;

import java.io.BufferedWriter;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileWriter;
import java.io.InputStream;
import java.io.OutputStream;

import org.apache.tika.metadata.Metadata;
import org.apache.tika.parser.AutoDetectParser;
import org.apache.tika.sax.BodyContentHandler;
import org.xml.sax.ContentHandler;

public class readpdf {
  public static void main(String args[]) throws Exception {


        File file = new File("OutputFile");

        // if file doesnt exists, then create it
        if (!file.exists()) {
            file.createNewFile();
        }

        FileWriter fw = new FileWriter(file.getAbsoluteFile());
        BufferedWriter bw = new BufferedWriter(fw);

    InputStream is = null;
    OutputStream o=null;
    try {
      is = new FileInputStream(InputFile);
      ContentHandler contenthandler = new BodyContentHandler();
      Metadata metadata = new Metadata();
      AutoDetectParser parser = new AutoDetectParser();
      parser.parse(is, contenthandler, metadata);
      System.out.println(contenthandler.toString());
      bw.write(contenthandler.toString());
        bw.close();
      //String[] a = metadata.names();

   /*  for(int i = 0;i< a.length-1;i++)
      {
          System.out.println(a[i]);
      }*/

      //System.out.println("title = "+metadata.get("title"));
     // System.out.println("Author = "+metadata.get("Author"));
    //  System.out.println("Content-Type = "+metadata.get("Content-Type"));
     // System.out.println("Producer = "+metadata.get("producer"));
     // System.out.println("Created = "+metadata.get("created"));
     // System.out.println("Last-Modified = "+metadata.get("Last-Modified"));
      System.out.println("*******************Content of PDF ********************");
      System.out.println(contenthandler.toString());

    }
    catch (Exception e) {
      e.printStackTrace();
    }
    finally {
        if (is != null) is.close();
    }
  }
}
于 2014-10-29T11:01:45.317 回答
0

我现在使用的是最新的 1.8.7,但是在将其添加到库并将 jar 文件设置为“添加构建路径”并按顺序检查并导出之后..它给出了相同的错误

 "10-28 13:45:14.510: E/AndroidRuntime(1630): java.lang.NoClassDefFoundError: org.apache.pdfbox.pdmodel.PDDocument"..

我实际上浪费了 5 个小时......但后来我发现 iText用于相同的 PDF 目的......运行良好......

链接到 iText 教程

http://zacktutorials.blogspot.com/2014/07/android-read-and-write-pdf-file-using.html

于 2014-10-28T19:17:28.467 回答
0

相关软件包都在您的第二个屏幕截图中。您必须先从显示的列表中选择包;然后按 Ctrl-Space 可以选择每个包中的类。从您的第二个屏幕截图的外观来看,一切似乎都运行良好。

于 2014-09-21T23:30:17.960 回答
0

问题是您已将 javadoc jar 和实际 jar 作为构建库导入。

我现在尝试这样做,我遇到了和你一样的问题。

从构建路径中删除 javadoc。如果要将 javadoc 连接到 pdfbox jar,则应单击真实 jar 左侧的三角形,选择Javadoc location,单击“编辑...”,然后选择“存档中的 Javadoc”并选择您的存档。

顺便说一句,我可能错了,但这pdfbox-app-1.8.6.jar似乎是针对命令行应用程序的。用于构建您自己的项目的可能是较轻的pdfbox-1.8.6.jar

于 2014-10-28T19:02:20.820 回答
0

我不确定您在尝试什么,但我尝试复制您的步骤

  1. 从https://pdfbox.apache.org/download.cgi下载了 pdfbox-app-1.8.7.jar
  2. 将 jar 导入我的项目构建路径。PS:您不需要将 javadoc 添加到构建路径中。那是一个单独的过程。
  3. 尝试导入“org.apache.pdfbox.pdmodel.PDDocument;” (输入到 org.apache.pdfbox.pdmodel。然后按 Ctrl+Space 以获得类提示)。它正确显示。在此处输入图像描述
  4. 其他包也一样。例如。对于“org.apache.pdfbox.pdmodel.font.PDFont”,您需要输入“org.apache.pdfbox.pdmodel.font”。然后按 Ctrl+Space 获得类提示。在此处输入图像描述
  5. 我想你做了一个“import org.apache.pdfbox.pdmodel.*;” 所以,它显示了所有的包。对于链接 3、4、5,从建议列表中选择相应的包,然后按 Ctrl+Space 以获取该包中的类建议。还要从您的构建路径中删除 javadoc 并检查。

希望这可以帮助

于 2014-11-04T06:29:17.653 回答