IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C# Discussion :

Fusion de fichiers PDF en un seul fichier


Sujet :

C#

  1. #1
    Nouveau membre du Club
    Inscrit en
    Mars 2009
    Messages
    45
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Mars 2009
    Messages : 45
    Points : 32
    Points
    32
    Par défaut Fusion de fichiers PDF en un seul fichier
    Bonjour à tous,

    Merci de m'aider pour savoir comment fusionner deux fichiers PDF pour avoir un seul fichier et le sauvegarder.

    cdt.

  2. #2
    Membre actif
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    205
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 205
    Points : 206
    Points
    206
    Par défaut
    Voir du cote d'itextsharp s'il permet de récupérer toutes les données des PDFS (testé qu'en écriture, jamais en lecture)

  3. #3
    Membre habitué
    Inscrit en
    Mars 2005
    Messages
    131
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 131
    Points : 158
    Points
    158
    Par défaut
    Salut !!

    Ce code va te servir, je l'ai testé et ça marche nickel, il utilise comme a mentionné Julien la bibliothèque ICSharp.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    using System;
    using System.IO;
     
    using iTextSharp.text;
    using iTextSharp.text.pdf;
     
    public class Concat {
     
    	/**
    	* @param args the command line arguments
    	*/
    	public static void Main(String[] args) {
    		if (args.Length < 3) {
    			Console.Error.WriteLine("This tools needs at least 3 parameters:\njava Concat destfile file1 file2 [file3 ...]");
    		}
    		else {
    			try {
    				int f = 1;
    				// we create a reader for a certain document
    				PdfReader reader = new PdfReader(args[f]);
    				// we retrieve the total number of pages
    				int n = reader.NumberOfPages;
    				Console.WriteLine("There are " + n + " pages in the original file.");
     
    				// step 1: creation of a document-object
    				Document document = new Document(reader.getPageSizeWithRotation(1));
    				// step 2: we create a writer that listens to the document
    				PdfWriter writer = PdfWriter.getInstance(document, new FileStream(args[0], FileMode.Create));
    				// step 3: we open the document
    				document.Open();
    				PdfContentByte cb = writer.DirectContent;
    				PdfImportedPage page;
    				int rotation;
    				// step 4: we add content
    				while (f < args.Length) {
    					int i = 0;
    					while (i < n) {
    						i++;
    						document.setPageSize(reader.getPageSizeWithRotation(i));
    						document.newPage();
    						page = writer.getImportedPage(reader, i);
    						rotation = reader.getPageRotation(i);
    						if (rotation == 90 || rotation == 270) {
    							cb.addTemplate(page, 0, -1f, 1f, 0, 0, reader.getPageSizeWithRotation(i).Height);
    						}
    						else {
    							cb.addTemplate(page, 1f, 0, 0, 1f, 0, 0);
    						}
    						Console.WriteLine("Processed page " + i);
    					}
    					f++;
    					if (f < args.Length) {
    						reader = new PdfReader(args[f]);
    						// we retrieve the total number of pages
    						n = reader.NumberOfPages;
    						Console.WriteLine("There are " + n + " pages in the original file.");
    					}
    				}
    				// step 5: we close the document
    				document.Close();
    			}
    			catch(Exception e) {
    				Console.Error.WriteLine(e.Message);
    				Console.Error.WriteLine(e.StackTrace);
    			}
    		}
    	}
     
    }

  4. #4
    Membre habitué

    Homme Profil pro
    Consultant informatique
    Inscrit en
    Août 2008
    Messages
    76
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Août 2008
    Messages : 76
    Points : 145
    Points
    145
    Par défaut
    Salut,

    Il existe des librairies payantes qui font celà. Par exemple DynamicPFD
    (http://www.cete.com/Products/DynamicPDFForNET/Merger/). Bien sûr ces librairies font un peu plus que simplement du merge pour justifier leur prix. Dans un cadre professionnel tu peux arriver à le faire passer (une license serveur est autour de 500$ je crois). Tu peux télécharger des version d'évaluation pour te rendre compte si celà convient à ton besoin.

  5. #5
    Nouveau membre du Club
    Inscrit en
    Mars 2009
    Messages
    45
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Mars 2009
    Messages : 45
    Points : 32
    Points
    32
    Par défaut
    Désolé pour le retard, merci pour les solutions données , je vais les tester et vous dire le résultat. A+

  6. #6
    Nouveau membre du Club
    Inscrit en
    Mars 2009
    Messages
    45
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Mars 2009
    Messages : 45
    Points : 32
    Points
    32
    Par défaut
    Merci mahdi, ça fonctionne
    Citation Envoyé par Mehdi_ab Voir le message
    Salut !!

    Ce code va te servir, je l'ai testé et ça marche nickel, il utilise comme a mentionné Julien la bibliothèque ICSharp.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    using System;
    using System.IO;
     
    using iTextSharp.text;
    using iTextSharp.text.pdf;
     
    public class Concat {
     
    	/**
    	* @param args the command line arguments
    	*/
    	public static void Main(String[] args) {
    		if (args.Length < 3) {
    			Console.Error.WriteLine("This tools needs at least 3 parameters:\njava Concat destfile file1 file2 [file3 ...]");
    		}
    		else {
    			try {
    				int f = 1;
    				// we create a reader for a certain document
    				PdfReader reader = new PdfReader(args[f]);
    				// we retrieve the total number of pages
    				int n = reader.NumberOfPages;
    				Console.WriteLine("There are " + n + " pages in the original file.");
     
    				// step 1: creation of a document-object
    				Document document = new Document(reader.getPageSizeWithRotation(1));
    				// step 2: we create a writer that listens to the document
    				PdfWriter writer = PdfWriter.getInstance(document, new FileStream(args[0], FileMode.Create));
    				// step 3: we open the document
    				document.Open();
    				PdfContentByte cb = writer.DirectContent;
    				PdfImportedPage page;
    				int rotation;
    				// step 4: we add content
    				while (f < args.Length) {
    					int i = 0;
    					while (i < n) {
    						i++;
    						document.setPageSize(reader.getPageSizeWithRotation(i));
    						document.newPage();
    						page = writer.getImportedPage(reader, i);
    						rotation = reader.getPageRotation(i);
    						if (rotation == 90 || rotation == 270) {
    							cb.addTemplate(page, 0, -1f, 1f, 0, 0, reader.getPageSizeWithRotation(i).Height);
    						}
    						else {
    							cb.addTemplate(page, 1f, 0, 0, 1f, 0, 0);
    						}
    						Console.WriteLine("Processed page " + i);
    					}
    					f++;
    					if (f < args.Length) {
    						reader = new PdfReader(args[f]);
    						// we retrieve the total number of pages
    						n = reader.NumberOfPages;
    						Console.WriteLine("There are " + n + " pages in the original file.");
    					}
    				}
    				// step 5: we close the document
    				document.Close();
    			}
    			catch(Exception e) {
    				Console.Error.WriteLine(e.Message);
    				Console.Error.WriteLine(e.StackTrace);
    			}
    		}
    	}
     
    }

  7. #7
    Membre habitué
    Inscrit en
    Mars 2005
    Messages
    131
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 131
    Points : 158
    Points
    158
    Par défaut
    You're Welcome

  8. #8
    Membre éclairé
    Avatar de m-mas
    Homme Profil pro
    Directeur technique
    Inscrit en
    Février 2003
    Messages
    576
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Février 2003
    Messages : 576
    Points : 719
    Points
    719
    Par défaut
    Bonjour,

    j'ai utilisé ce code pour fusionner mes fichiers PDF et cela marche trés bien ! par contre j'ai un problème : c'est la numérotation des pages, puisque le code premet de rassembler des pdf déjà existants, j'ai un document à la fin qui commence de 1 à 5 ensuite de 1 à 10 ... (mon premier document contient 5 pages, mon deuxième 10 pages ...)

    comment faire pour avoir un fichier pdf finale avec une bonne numérotation de page ? (de 1 à n en continue, n étant le nombre totale de page)

    Merci.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [XL-2003] Faire fusionner des fichiers PDF en un seul
    Par Nikodemus dans le forum Macros et VBA Excel
    Réponses: 14
    Dernier message: 10/04/2012, 12h34
  2. Fusion de deux pdf dans un seul fichier pdf
    Par PAULOM dans le forum ODS et reporting
    Réponses: 2
    Dernier message: 03/06/2010, 10h04
  3. afficher plusieurs fichiers pdf en une seule response
    Par amine84 dans le forum Servlets/JSP
    Réponses: 1
    Dernier message: 25/03/2010, 17h14
  4. [E-03] Fusion de fichier excel en un seul fichier
    Par Lufia dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 18/11/2008, 23h07
  5. fusion de fichiers excel en un seul fichier
    Par croset dans le forum Macros et VBA Excel
    Réponses: 41
    Dernier message: 15/11/2008, 22h56

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo