2014-09-21 2 views
4

Я скачал PDFBox 1.8.6 с ApachePDFBox половина доступна

затем я скопировал его в папку «Res» я создал в корне моего проекта Java/Eclipse. Затем я щелкнул правой кнопкой мыши по проекту, перешел к свойствам, затем в путь сборки Java, затем в Библиотеки, затем нажал кнопку Добавить JARS ... и добавил его и свою документацию.

Here are the results

С тех пор в моем коде, я мог бы импортировать (МОГ) 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; 

Для некоторых нечетным причина, я вижу, не вижу их ...

here is a screenshot of the imports...

Может кто-нибудь прояснить Тхи для меня, пожалуйста?

+0

Текущая версия 1.8.7. –

+0

Такая же ошибка со мной .. не удалось ее решить. – Jamil

ответ

0

Соответствующие пакеты находятся на втором снимке экрана. Сначала вы должны выбрать пакет, из отображаемого списка; затем нажмите Ctrl-Space, чтобы иметь возможность выбирать классы внутри каждого пакета. По внешнему виду вашего второго скриншота все кажется, что все работает правильно.

+0

Привет, Дэвид, похоже, может обмануть ... в противном случае я смог бы получить доступ к org.apache.pdfbox.pdmodel.PDDocument. Но, как показано на скриншоте, ничего не видно для «р», следовательно, это сообщение. http://pdfbox.apache.org/docs/1.8.3/javadocs/org/apache/pdfbox/pdmodel/PDDocument.html Вы пробовали? – SuperWoman

+0

@SuperWoman Даже я не смог найти файл класса 'PDFieldTreeNode' поэтому я использовал' 2.0.0-SNAPSHOT' –

1

Текущий файл, связанный с официальным источником, неверен. Он весит 28 Кб вместо нескольких мегабайт. Вау, на этот раз это не я! hahaha

+0

Какой файл, по которому эта ссылка? –

+0

Здравствуйте, Tilman, http://pdfbox.apache.org/downloads.html#recent, создается впечатление, что вы можете щелкнуть правой кнопкой мыши и загрузить, но вы не можете (http://www.apache.org/dyn/closer .cgi/pdfbox/1.8.7/pdfbox-1.8.7.jar), так как в результате получается файл размером 27.3kb. Вы должны щелкнуть левой кнопкой мыши, следовать за кроликом по ссылке на эту другую страницу, а затем вы можете скачать оттуда. – SuperWoman

+0

Я отправил вашу жалобу Учителю, и теперь есть новая ссылка без этой проблемы: http://pdfbox.apache.org/downloads.cgi –

0

Проблема в том, что вы импортировали как javadoc jar, так и фактическую банку в качестве своих библиотек сборки.

Я попытался сделать это прямо сейчас, и у меня возникла такая же проблема, как и у вас.

Удалить javadoc из пути сборки. Если вы хотите подключить javadoc к банку pdfbox, вы должны щелкнуть треугольник слева от реальной банки, выберите Javadoc location, нажмите «Изменить ...», а затем выберите «Javadoc в архиве» и выберите архив.

Кстати, я могу ошибаться, но pdfbox-app-1.8.6.jar, похоже, для приложений с командной строкой. Тот, который будет использоваться для создания ваших собственных проектов, вероятно, будет легче pdfbox-1.8.6.jar.

+0

Я рекомендую получить приложение, потому что оно содержит большинство других необходимых библиотек. pdfbox * jar один недостаточно, вам нужны fontbox и jempbox. –

+0

@TilmanHausherr, но он содержит множество других материалов, таких как библиотеки bouncycastle, которые могут быть не самыми современными и могут конфликтовать с другими проектами. – RealSkeptic

+0

Это правда. Конечно, вы можете использовать maven. Но использование pdfbox * .jar только не сделает вас счастливыми. –

0

я теперь я использую последнее 1.8.7, но после добавления его в LIBS и установку файла банка «добавить путь сборки», а также проверить его в порядке и экспорте .. это дает ту же ошибку, что

"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

+0

PDFBox в любом случае не работает с Android. Есть производный проект от парня, но этот, в основном, предназначен для создания PDF-файлов, вы не можете делать PDF-файлы с этим. –

0

Для вашей проблемы я должен сказать, что вам нужно изменить файл javascript pdfbox, а также загрузить многие поддерживающие банки, или вы можете попробовать код ниже.

Здесь код с использованием 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(); 
    } 
    } 
} 
0

Я не уверен, что вы Тринг, но я пытался копировать ваши шаги

  1. Загрузили pdfbox-приложение-1.8.7.jar из https://pdfbox.apache.org/download.cgi
  2. Импортные банку на мой про ject построить путь. PS: Вам не нужно добавлять javadoc в свой путь сборки. Это отдельный процесс.
  3. Пробовал импорт «org.apache.pdfbox.pdmodel.PDDocument;» (Напечатано до org.apache.pdfbox.pdmodel, а затем Ctrl + Space, чтобы получить подсказки класса). Он отображается правильно. enter image description here
  4. То же самое для других пакетов. например. для «org.apache.pdfbox.pdmodel.font.PDFont» вам нужно ввести до «org.apache.pdfbox.pdmodel.font». а затем нажмите Ctrl + Space, чтобы получить подсказки класса. enter image description here
  5. Я думаю, что вы сделали «import org.apache.pdfbox.pdmodel. *;» поэтому он отображает все пакеты. Для ссылки 3,4,5 выберите соответствующий пакет из списка предложений, а затем нажмите Ctrl + Space, чтобы получить предложения класса внутри этого пакета. Также удалите javadoc из вашего пути сборки и проверьте.

Надеется, что это помогает