[Métodos] Verificar que un archivo sea PDF


Verificar que un archivo sea PDF


Para lograr esa verificacion podemos valernos de algo simple pero efectivo. Al abrir un archivo PDF con un editor de texto, todos los archivos PDF comienzan con el prefijo que señala su version del estilo %PDF-1.3 o similiar pero conteniendo el porcentaje y las siglas PDF:


Con este principio entonces, podemos:
  • Crear un objeto de la clase java.io.File
  • Crear un objeto java.io.FileReader
  • Y tambien un objeto de java.util.Scanner

La idea entonces, es abrir un objeto File, preparalo con un FileReader para que el Scanner pueda leer linea a linea(Aunque solo nos interesa la prinmera) y asi poder hallar si contiene el prefijo %PDF-1.3

File archivo = new File(ruta al archivo);
Scanner input;
try{
    FileReader fReader = new FileReader(file);
    input = new Scanner(fReader);
    String checkline = new = input.nextLine();
    if (checkline.contains("%PDF-")) {
        //Aqui encontramos el prefijo esperado, es PDF!!!
    }else{
        //Lo sentimos, NO es PDF =(
    }
} catch(FileNotFoundException e) {
    e.printStackTrace();
}

[Métodos] Generar archivos PDF con imagenes desde Java (c/ iTextPDF) - Parte III


Parte III - Agregar una imagen al PDF


Para agregar una imagen a nuestros PDFs, simplemente hay que agregar a nuestro documento (Clase documento propia de itextpdf) a través de su método 'add' un objeto de la clase com.itextpdf.text.Image


Image imagen= Image.getInstance(aqui la ruta de la imagen);
documento.add(imagen);

Y con eso estariamos para agregar imagenes a nuestros documentos PDFs.
Desde luego, antes de agregar con el metodo 'add', podemos setearle algunas propiedades a nuestro objeto Image para editarlo, como redimencionarlo o centrarlo.

  • imagen.scaleToFit(436, 267);
  • imagen.setAlignment(Chunk.ALIGN_MIDDLE);

Un ejemplo del código sería algo mas o menos de esta forma:

Document documento = new Document();
String escritorio = System.getProperty("user.home") + "/Desktop/miPDF.pdf";
FileOutputStream fos;
Image imagen;
try {
    fos = new FileOutputStream(escritorio);

    PdfWriter pdfW = PdfWriter.getInstance(documento, fos);
    pdfW.setInitialLeading(20);

    documento.open();
    imagen = Image.getInstance("src/com/dar10comyr/blogspot/img/imagen.png");
    documento.add(imagen);

    documento.close();
} catch (IOException | DocumentException e) {
    e.printStackTrace();
}


Para poder obtener algo de la forma: