Come aggiungere pdfbox a un progetto Android o suggerire alternativa
Domanda
Sto tentando di aprire un file PDF esistente e quindi aggiungere un'altra pagina al documento PDF all'interno di un'applicazione Android. Nella pagina aggiunta, devo aggiungere un po 'di testo e un'immagine.
Voglio provare PDFBox. Altre soluzioni come ITEXTPDF non sono adatte alla nostra azienda a causa dei termini/prezzo delle licenze.
Ho un progetto di biblioteca con la base di codice principale e anche progetti completi e lite che fanno riferimento al progetto della biblioteca.
Ho scaricato il barattolo da http://pdfbox.apache.org/download.html e lo ha copiato nella cartella LIB dei progetti della libreria e ha aggiunto il file pdfbox-app-1.6.0.jar alle librerie di build java build.
Sono in grado di importare correttamente le biblioteche ad es. import org.apache.pdfbox.pdmodel.PDDocument;
e compila tutti i progetti. Tuttavia, quando eseguo l'applicazione si blocca PDDocument document = new PDDocument();
con il seguente errore.
E/AndroidRuntime (24451): java.lang.noclassdeffounderror: org.apache.pdfbox.pdmodel.pddocument
Ho letto da qualche parte che la versione 1.5 di PDFBox in poi non ha funzionato con Android, quindi ho provato a scaricare il file pdfbox-app-1.4.0.0.jar ma ho ottenuto lo stesso problema. Ho anche aggiunto la biblioteca al percorso di build nei miei progetti completi e lite, ma ho ricevuto lo stesso errore o Eclipse continuavo a crash con un errore fuori memoria.
Qualcuno può dirmi cosa sto facendo di sbagliato? Ho scaricato il file sbagliato? L'ho importato correttamente?
Grazie,
Soluzione
Pdfbox utilizza java awt e swing, anche per attività non interfaccia
Ho appena testato pdfjet http://pdfjet.com/os/edition.html È autorizzato a BSD (più versione commerciale con più funzionalità), con questo codice di esempio (strappato da Esempio_03.java) sono stato in grado di convertire un JPEG in un PDF
FileOutputStream fos = null;
try
{
fos = new FileOutputStream("/sdcard/sample.pdf");
PDF pdf = new PDF(fos);
InputStream f = getApplicationContext().getAssets().open("img0.jpg");
Image image = new Image(pdf, f, ImageType.JPEG);
Page page = new Page(pdf, A4.PORTRAIT);
image.setPosition(0, 0);
image.drawOn(page);
pdf.flush();
fos.close();
} catch (Exception e)
{
e.printStackTrace();
}
Ho trovato il link qui http://java-sorce.net/open-source/pdf-libraries
Altri suggerimenti
Porta Android di PDFBox
C'è una porta Android gratuita di PDFBox disponibile qui:
Penso che i file della classe della libreria non siano inclusi nel file APK. Le classi di libreria devono essere convertite in file DEX, quindi verrà rilevato. Si prega di fare riferimento http://developer.android.com/guide/developing/building/index.html