English | 日本
BCL Technologies
Shopping CartContact Us
Base de connaissances
BCL easy PDF SDK

Fusionner tous les documents PDF dans un répertoire

Date: 21 mai 2012
auteur: James Coe

Dans notre première méthode de la semaine, je vais vous donner une méthode pour fusionner tous les documents PDF dans un répertoire spécifié. Au bas de cette page la méthode complète sera affiché dans le code C #, vous permettant de copier et de le coller dans votre application dans son intégralité.Avant cela cependant, je vais couvrir l'ensemble des différentes étapes de la méthode.

Tout d'abord, n'oubliez pas d'ajouter les références appropriées à votre projet, et l'aide des entrées pour aller avec ces références. Ce projet nécessitera que Library Reference PDFProcessor est ajouté, et il faudra les entrées suivantes "using";

  • using System;
  • using System.IO;
  • using System.Collections;
  • using BCL.easyPDF7.Interop.EasyPDFProcessor;

Ensuite, le nom de la méthode est la suivante;

Method Name

Il est destiné à prendre deux variables de chaînes et retourner une variable de chaîne. La valeur de retour est une chaîne qui contiendra un rapport de situation, soit un rapport de la conversion réussie, avec le nom du Output File produit, ou les rapports d'erreur appropriés. inFileDir est où vous spécifiez votre Input Directory, tandis que outfilename est le nom de sortie.

  • inFileDir should use the following format; @"C:\YourFolderName\"
  • OutFileName should use the following format; @"C:\YourFolderName\OutName.pdf"
  • Alternativement, vous pouvez passer une valeur null pour outfilename et la méthode allez générer un outpuf Nom de fichier de son propre nom.

Ensuite, nous déclarons les variables primaires et les objets.

Declaring Variables

Une fois ceux-ci sont déclarés, une petite instruction if-then vérifie pour s'assurer que le répertoire Input existe. Ce bloc vérifie également pour voir si une variable nul a été passé comme OutputFileName, et si oui, génère un nom de fichier dans le répertoire d'entrée.

Check Input Directory

Ensuite, nous nous réunissons tous les fichiers d'entrée à l'objet ArrayList mentionnées ci-dessus. S'il n'y a pas de fichiers pdf dans le répertoire, une erreur est renvoyée indiquant que telle et la méthode Termine. Sinon, tous les fichiers pdf dans le répertoire sont chargés un par un dans l'objet ArrayList pour fusion facile.

C'est un peu utile de code encore pour d'autres opérations, comme il peut vous donner un espace unique collectées pour stocker toutes vos adresses de nom de fichier pour une utilisation facile.

Gather Input Files

Une fois les fichiers d'entrée sont réunis, la méthode crée Processory Object et l'initialise. Elle s'applique également la clé de licence BCL à l'objet. Dans ce cas, la clé affichée est simplement une extension Clé de première instance, mais le processus est identique pour une clé complète.

Create Processor Object

Enfin, une fois l'objet est initialisé, la fusion proprement dite est réalisée en une seule ligne de code.

Merge the Files

Si tout fonctionne comme prévu, vous recevrez un message vous indiquant que la fusion a été effectuée et le fichier est situé à l'emplacement spécifié. Parce que nous avons formaté la chaîne de outfilename d'inclure l'adresse du fichier entier, vous serez informé à la fois ce que le fichier est nommé et où il se trouve. S'il ya des erreurs, elles seront communiquées à la place.

Cela dit, il ya certaines limites de cette méthode. Pour commencer, tous les fichiers PDF doivent être dans le même dossier. Ensuite, si l'un des fichiers PDF dans le répertoire sont corrompus ou inaccessibles, il pourrait causer l'ensemble du procédé à l'échec, et, en raison de la façon dont fonctionne MergeBatch, pas vous dire quel fichier causé spécifiquement le problème. De même, il ne vous donne pas de contrôle sur l'ordre dans lequel les fichiers ont été fusionnés et ne vous permettent pas d'exclure tous les fichiers pdf dans le dossier de la fusion.

Et voici le code de la méthode complète, prête à être ajouté à votre demande;

          
    public static string MergeAllPDFFilesInDIR(string inFileDir, string OutFileName)
    {
            //Declare Major Variables and Objects
        string result = null;
        DirectoryInfo Dir = null;
        FileInfo[] FileList = null;
        ArrayList InputFileList = null;
        PDFProcessor oMerger = null;

            // Identify inFileDir and OutFileName
        Dir = new DirectoryInfo(inFileDir);
        if (!Dir.Exists)
        {
            result = "Directory : " + inFileDir + " : Does not Exist";
            return result;
        }
        if (OutFileName == null)    
        //If OutFileName is NUll, provide a
		//Default File Name and Location
        {
            OutFileName = inFileDir + "_1_Merged.pdf";
        }

            // Gather Input Files
        FileList = Dir.GetFiles("*.pdf", SearchOption.AllDirectories);
        InputFileList = new ArrayList();
        foreach (FileInfo FI in FileList) { InputFileList.Add(FI.FullName); }

        if (InputFileList.Count == 0)
        {
            result = "There were no PDF Files in : " + inFileDir;
            return result;
        }

            // Create Processor Object
        try
        {
            oMerger = new PDFProcessor();
            oMerger.LicenseKey = "475D-E1ED-5336-DD76-2C5E-FDAE";    
            //If you are using the BCL Licensing System, enter your License Key Here;
        }
        catch (Exception errCreate)
        {
            result = "Attempt to create PDFProcessor oMerger Failed : Message : " 
                + errCreate.Message + " : Inner Exception : "
				+ errCreate.InnerException;
            return result;
        }
        
            //Run MergeBatch
        try
        {
            oMerger.MergeBatch(InputFileList.ToArray(), OutFileName);
        }
        catch (Exception errRun)
        {
            result = "Attempt to Merge the Documents Failed : Message : " 
                + errRun.Message + " : Inner Exception : " + errRun.InnerException;
            return result;
        }

        result = "Merging Complete : Output File located at : " + OutFileName;
        return result;
    }
          

Si vous avez des questions ou des problèmes concernant cette méthode, ou si vous avez des idées pour les méthodes que vous aimeriez me voir créer, s'il vous plaît envoyez-moi un e-mail (de préférence avec "Method of the week" ou "MOTW" dans le sujet) à ;

jcoe@bcltechnologies.com.

Bonne codage!

Pour utiliser cette méthode, vous devez avoir easyPDF SDK installé sur votre machine

Télécharger

-
 
BCL
© 1993 - , BCL Technologies.
All other trademarks are the property of their respective owners.