Sortir les meta-données d'un fichier pdf

Soyez le premier à donner votre avis sur cette source.

Snippet vu 19 811 fois - Téléchargée 29 fois

Contenu du snippet

Ce code sert à extraire les meta-données d'un fichier PDF(nom de l'auteur, date de création et meta-donnée personnalisées).
/!\ Cette source utilise la librairie IText en licence GNU.
Fonctionnement :
lancer la class avec deux argument : 0:chemin complet du fichier pdf; 1 : chemin complet du fichier texte de sortie.

Source / Exemple :


import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.HashMap;

import com.lowagie.text.pdf.PdfReader;

public class mapping_meta_donne {

	/**

  • @param args
  • /
public static void main(String[] args) { // TODO Auto-generated method stub /**
  • Parametres : args0 = fichier pdf à traiter args1 = fichier de sortie
  • /
File pdf = null;// Fichier pdf File sortie = null;// fichier text PdfReader pdfr = null; // outil itext pour lire les pdf int mod = 1; pdf = new File(args[0]); sortie = new File(args[1]); // System.out.println(pdf.toString()); if (args.length != 2) { System.out.println("Nombre d'argument incorrect!"); System.out.println("La class demande deux argument :"); System.out.println("0 : Le chemin complet du pdf à analyser"); System.out .println("1 : Le chemin complet du fichier texte à remplire ou 0 si on ne veut pas remplire de fichier."); } else { if (java.util.regex.Pattern.matches(".*" + args[1] + ".*", "0")) { System.out.println("de ; " + args[1]); mod = 0; File fil = new File("c:\rien");// ce fichier n'existe pas il // sert à utiliser la même // fonction d'ecriture avec // creation de fichier ou pas ecrire(fil, "pas de création de fichier", mod); } if (sortie.isFile()) { sortie.delete(); } if (!sortie.isFile()) { try { sortie.createNewFile(); } catch (IOException e) { // TODO Auto-generated catch block ecrire(sortie, e.toString(), mod); } } if (pdf.isFile()) { try { pdfr = new PdfReader(pdf.getAbsolutePath()); } catch (IOException e) { // TODO Auto-generated catch block ecrire(sortie, "impossible de lire le fichier pdf; erreur : " + e.toString(), mod); } HashMap infos = pdfr.getInfo(); ecrire(sortie, "nb meta=" + infos.size(), mod); ecrire(sortie, "nb page=" + pdfr.getNumberOfPages(), mod); // System.out.println(infos.size()+" taille"); // ecrire(sortie,infos.toString()); String result = infos.toString(); String[] result2 = result.split(","); int i; for (i = 0; i < result2.length; i++) { ecrire(sortie, result2[i], mod); } } else { ecrire(sortie, "le fichier pdf n'existe pas", mod); } } } public static void ecrire(File f, String m, int mode) { PrintWriter fic = null; System.out.println(m); FileWriter n = null; if (mode == 1) { try { n = new FileWriter(f, true); } catch (IOException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } fic = new PrintWriter(n, true); fic.println(m); fic.flush(); fic.close(); } } }

A voir également

Ajouter un commentaire Commentaires
Messages postés
30
Date d'inscription
dimanche 22 mai 2005
Statut
Membre
Dernière intervention
19 mars 2009

OK j'irais voir merci
voila le lien pour telecharger itext (source, compile et doc.)
http://www.lowagie.com/iText/download.html
Messages postés
2835
Date d'inscription
lundi 11 août 2003
Statut
Modérateur
Dernière intervention
16 décembre 2006
10
Salut,
donne just ele lien direct vers la librairie déjà c'est une bonne chose. SInon pour ton informaiton voici le lien vers la convention de codage SUN (en gros celle que tout le monde utilise à 90% partout sur le net) : http://java.sun.com/docs/codeconv/

++
Messages postés
30
Date d'inscription
dimanche 22 mai 2005
Statut
Membre
Dernière intervention
19 mars 2009

Salut;
Désolé pour les conventions Sun mais j'ait apprit sur le tas et + ou - seul j'y ferrait plus gaffe à l'avenir.
Pour la librairie j'ais essayé de la mettre dans un zip mais elle est trop grosse le site ne veut pas la télécharger; toutefois elle est gratuite et je pense qu'elle doit facilement ce trouver sur le site de lowagie sinon envoyez moi un mail je vous la ferrait passer... :)
Voila IText est vraiment une librairie complète pour la manip de pdf, j'ait tellement galéré pour trouver des trucs comme sa ou le Split de fichier que quand j'ait trouver j'ait voulut en faire profité tt l monde :)


Ps : je rajoute le controle d'erreur.
Messages postés
2835
Date d'inscription
lundi 11 août 2003
Statut
Modérateur
Dernière intervention
16 décembre 2006
10
Salut,
effectivement si tu peux respecter les conventions Java SUN ce serait sympa, de même que si tu mettais une source complète (avec la lib si pas trop gros) afin que les personnes qui veuillent tester ta source puissent le faire dans les meilleures condictions ! ;-)

++
Messages postés
545
Date d'inscription
lundi 10 mai 2004
Statut
Membre
Dernière intervention
28 septembre 2011
2
P'tite source sympathique, qui, j'en ai bien l'impression, sert surtout d'exemple d'utilisation de l'API que tu utilises.

Si j'avais un p'tit conseil à donner, ou plutot deux, ce serait de respecter certains conventions (comme le nom de la classe sous la forme NomDeClasse) ainsi qu'à mettre un petit message d'erreur personnalisé en cas de mauvaise utilisation du code (if (args.length <2) .... )

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.