2017-09-30 6 views
0

Je voulais créer un pdf avec Itext, tout fonctionne jusqu'à ce que je l'ai fait le pot runnable. Adobe Reader affiche ce message: "Adobe Reader n'a pas pu ouvrir xxx.pdf car il ne s'agit pas d'un type de fichier pris en charge ou parce que le fichier a été endommagé (par exemple, il a été envoyé en pièce jointe et n'a pas été décodé correctement). " Et voici mon code:Itext, pdf créé ne pouvait pas être ouvert

String ruta = txtruta.getText(); 
    Document doc = new Document(); 

    try { 
     FileOutputStream archivo = new FileOutputStream(ruta + ".pdf"); //crear archivo con su ruta 

     doc.open(); 

     PdfPTable tabla = new PdfPTable(8); //creacion de una tabla de 8 columnas 

     tabla.addCell("Celda 1");// addCell() agrega una celda a la tabla, el cambio de fila ocurre automaticamente al llenar la fila 
     tabla.addCell("Celda 2"); 
     tabla.addCell("Celda 3"); 
     tabla.addCell("Celda 4"); 
     tabla.addCell("Celda 5"); 
     tabla.addCell("Celda 6"); 
     tabla.addCell("Celda 7"); 
     tabla.addCell("Celda 8");// aca se completa una fila 

     doc.add(tabla); 

     doc.close(); 

     JOptionPane.showMessageDialog(null, "PDF creado correctamente"); 

    } catch (Exception e) { 
     System.out.println("Error: "+ e); 
    } 

Répondre

1

Il y a une ligne manquante dans votre code:

String ruta = txtruta.getText(); 
Document doc = new Document(); 

try { 
    FileOutputStream archivo = new FileOutputStream(ruta + ".pdf"); //crear archivo con su ruta 
    PdfWriter.getInstance(document, archivo); 
    doc.open(); 

    PdfPTable tabla = new PdfPTable(8); //creacion de una tabla de 8 columnas 

    tabla.addCell("Celda 1");// addCell() agrega una celda a la tabla, el cambio de fila ocurre automaticamente al llenar la fila 
    tabla.addCell("Celda 2"); 
    tabla.addCell("Celda 3"); 
    tabla.addCell("Celda 4"); 
    tabla.addCell("Celda 5"); 
    tabla.addCell("Celda 6"); 
    tabla.addCell("Celda 7"); 
    tabla.addCell("Celda 8");// aca se completa una fila 

    doc.add(tabla); 

    doc.close(); 

    JOptionPane.showMessageDialog(null, "PDF creado correctamente"); 

} catch (Exception e) { 
    System.out.println("Error: "+ e); 
} 

Voyez-vous?

Sans PdfWriter.getInstance(document, archivo); vous créez un FileOutputStream, mais rien n'est jamais écrit dans ce flux. C'est un fichier avec 0 octet.

+0

Cela n'explique pas * "tout fonctionne jusqu'à ce que j'ai fait le pot runnable" *, cependant ... – mkl

+0

Pas de @mkl, mais c'est la seule réponse qui peut être donnée en fonction des informations de la question. Si le PO avait dit: * J'obtiens une exception de classe non trouvée *, alors nous pourrions supposer que les dépendances ne sont pas correctes dans le pot exécutable (qui est la cause la plus probable du problème). Cependant, l'OP fait quelque chose de très stupide quand il écrit 'catch (Exception e)'; il y a de fortes chances que la sortie de 'System.out' l'avertisse en effet des classes manquantes, mais puisque l'OP ne mentionne aucune erreur, nous ne pouvons pas commenter cela. –

+0

c'est vrai bien sûr. – mkl