Java Question problems with my first library pdt to jpg

jota

Active Member
Licensed User
Longtime User
problems with my first library pdf to jpg

I'm trying to do my first library, convert pdf to jpg but something goes wrong.

The code of the library:
package anywheresoftware.b4a.pruebas.PdfToJpg;

import java.awt.Graphics2D;
import java.awt.RenderingHints;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import java.util.List;

import javax.imageio.ImageIO;

import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.pdmodel.PDPage;

import anywheresoftware.b4a.BA.ShortName;
import anywheresoftware.b4a.BA.Version;
import anywheresoftware.b4a.BA.DependsOn;

@ShortName("PdfToJpg")
@Version(1f)
@DependsOn(values={"pdfbox-app-1.6.0","fontbox-1.6.0"})

public class PdfToJpg

{


/* Convierte el documento PDF a imagen con un tamaño grande*/
public void Convertir_1(String path, String pdf){
try {
PDDocument document = null;
//se carga el documento
document = PDDocument.load(new File(path + pdf));
//se obtiene el numero de paginas del PDF
int numero_paginas = document.getNumberOfPages();
System.out.println("texto: " + document.getNumberOfPages());
//Se capturan todas las paginas
List pages = document.getDocumentCatalog().getAllPages();
//un ciclo repetitivo para crear todas las imagenes
for(int i=0; i<=numero_paginas-1;i++){
System.out.println( "creando imagen - " + i);
//se obtiene la pagina "i" de n paginas
PDPage page = (PDPage)pages.get( i );
//se convierte la hoja pdf a imagen y se coloca en memoria
BufferedImage image = page.convertToImage();
// se escribe a imagen en disco
ImageIO.write(image, "jpg", new File( path + "tmp_" + i + ".jpg"));
System.out.println( "imagen [" + i + "] creada");
}
document.close();//cerramos el pdf
} catch (IOException ex) {

}
}


/* Convierte el documento PDF a Imagen, escalando el archivo al
* tamaño de las hojas del PDF*/
public void Convertir_2(String path, String pdf){
try {
PDDocument document = null;
//se carga el documento
document = PDDocument.load(new File(path + pdf));
//se obtiene el numero de paginas del PDF
int numero_paginas = document.getNumberOfPages();
System.out.println("texto: " + document.getNumberOfPages());
//Se capturan todas las paginas
List pages = document.getDocumentCatalog().getAllPages();
//un ciclo repetitivo para crear todas las imagenes
for(int i=0; i<=numero_paginas-1;i++){
System.out.println( "creando imagen - " + i);
//se obtiene la pagina "i" de n paginas
PDPage page = (PDPage)pages.get( i );
//se convierte la hoja pdf a imagen y se coloca en memoria
BufferedImage image = page.convertToImage();
//ancho y alto de la pagina pdf
int w = (int) document.getPageFormat(i).getWidth();
int h = (int) document.getPageFormat(i).getHeight();
//se crea una nueva imagen en memoria con el tamaño de la hoja pdf
BufferedImage escala = new BufferedImage(w,h, BufferedImage.TYPE_INT_RGB);
Graphics2D graphics2D = escala.createGraphics();
graphics2D.setRenderingHint(RenderingHints.KEY_INTERPOLATION,RenderingHints.VALUE_INTERPOLATION_BILINEAR);
//se añade la imagen
graphics2D.drawImage(image, 0, 0, w, h, null);
// se escribe a imagen en disco
ImageIO.write(escala, "jpg", new File( path + "tmp_e" + i + ".jpg"));
System.out.println( "imagen [" + i + "] creada");
}
document.close();//cerramos el pdf
} catch (IOException ex) {

}
}

}
The B4a code:
Sub Globals
Dim j As PdfToJpg
End Sub

Sub Activity_Create(FirstTime As Boolean)
If File.Exists(File.DirDefaultExternal,"xxx.pdf") Then File.Delete(File.DirDefaultExternal,"xxx.pdf")
File.Copy(File.DirAssets,"xxx.pdf",File.DirDefaultExternal,"xxx.pdf")
j.Convertir_1(File.DirDefaultExternal,"/xxx.pdf")
End Sub
and the error in phone:

PackageAdded: package:softlucions.pdftojpg
** Activity (main) Create, isFirst = true **
main_activity_create (java line: 214)
java.lang.NoClassDefFoundError: org.apache.pdfbox.pdmodel.PDDocument
at anywheresoftware.b4a.pruebas.PdfToJpg.PdfToJpg.Convertir_1(PdfToJpg.java:34)
at softlucions.pdftojpg.main._activity_create(main.java:214)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:521)
at anywheresoftware.b4a.BA.raiseEvent2(BA.java:143)
at softlucions.pdftojpg.main.afterFirstLayout(main.java:84)
at softlucions.pdftojpg.main.access$100(main.java:16)
at softlucions.pdftojpg.main$WaitForLayout.run(main.java:72)
at android.os.Handler.handleCallback(Handler.java:587)
at android.os.Handler.dispatchMessage(Handler.java:92)
at android.os.Looper.loop(Looper.java:143)
at android.app.ActivityThread.main(ActivityThread.java:4914)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:521)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:858)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
at dalvik.system.NativeStart.main(Native Method)
** Activity (main) Resume **
** Activity (main) Pause, UserClosed = false **

What am I doing wrong? thanks
 
Last edited:
Top