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

Fusionar todos los documentos PDF en un directorio

fecha: 21 de mayo 2012
Autor: James Coe

En nuestro primer método de la semana, voy a proporcionar un método para combinar todos los documentos PDF en un directorio especificado. En la parte inferior de esta página el método completo se mostrará en código C#, lo que le permite copiar y pegar en su aplicación en su totalidad. Antes de eso, sin embargo, voy a cubrir todas las etapas individuales del método.

En primer lugar, recuerde que debe agregar las referencias adecuadas a su proyecto, y las using entries para ir junto con estas referencias. Este proyecto requerirá que se añade el PDFProcessor Library Reference,y requerirá las siguientes entradas "using";

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

A continuación, el nombre del método es el siguiente ;

Method Name

Su objetivo es tomar dos variables de cadena y devuelva una variable de cadena. El valor devuelto es una cadena que contendrá un informe de situación, ya sea un informe de la conversión con éxito, con el nombre del archivo de salida producida, o el error adecuado Reports. inFileDir es donde se especifica su directorio Input, mientras que OutFileName es el archivo de FileName.

  • inFileDir debería utilizar el siguiente formato; @"C:\YourFolderName\"
  • OutFileName debería utilizar el siguiente formato; @"C:\YourFolderName\OutName.pdf"
  • Alternativamente, se puede pasar un valor null para OutFileName y el método generará un outpuf Nombre del archivo de su propio nombre.

A continuación, declaramos las variables primarias y objetos.

Declaring Variables

Una vez que éstos hayan sido declarados, una pequeña instrucción if comprueba para asegurarse de que existe el directorio Input. Este bloque también comprueba para ver si se pasa una variable nulo como OutputFileName, y de ser así, genera un nombre de archivo dentro del directorio Input.

Check Input Directory

A continuación, nos reunimos todos los archivos de entrada al objeto ArrayList declarado anteriormente. Si no hay archivos pdf en el directorio, se devolverá un error indicando tipo y el método será determinar. De lo contrario, todos los archivos PDF en el directorio se cargan uno por uno en el objeto ArrayList para una fácil combinación.

Esto es una pieza útil de código incluso para otras operaciones, ya que le puede dar una sola área de recogida para almacenar todas las direcciones de nombre de archivo para facilitar su uso.

Gather Input Files

Una vez que los archivos de entrada se reunieron, el método crea el objeto Processory y lo inicializa. También se aplica la clave de licencia BCL al objeto. En este caso, la llave se muestra es simplemente una Clave de prueba de Extensión, sin embargo, el proceso es idéntico para un Full Key.

Create Processor Object

Por último, una vez que se inicializa el objeto, la fusión real se lleva a cabo en una sola línea de código.

Merge the Files

Si todo funciona según lo previsto, usted recibirá un mensaje que le indica que la fusión se ha completado y el archivo se encuentra en la ubicación especificada. Porque nos formateado la cadena OutFileName incluir la dirección completa del archivo, se te dirá lo que tanto el archivo se llama y dónde se encuentra. Si hay algún error, se les informó de su lugar.

Dicho esto, hay algunas limitaciones a este método. Para empezar, todos los archivos PDF tienen que estar en la misma carpeta. A continuación, si alguno de los archivos PDF en el directorio son corruptos o inaccesibles, podría causar todo el método falle, y la voluntad, por la forma en MergeBatch funciona, no le dirá qué archivo causa específica del problema. Asimismo, no le otorga ningún control sobre el orden en que se fusionaron los archivos y no permiten que se excluya cualquier archivo PDF en la carpeta de la fusión.

Y aquí está el código completo de Método, listo para ser añadido a su aplicación;

          
    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 usted tiene alguna pregunta o problema relacionado con este método, o si usted tiene alguna idea para los métodos que le gustaría verme crear, por favor envíeme un correo electrónico (de preferencia con el "Method of the week" o "MOTW" en su tema) en ;

jcoe@bcltechnologies.com.

Feliz Codificación!

Para utilizar este método, es necesario tener easyPDF SDK instalado en su máquina

Descargar

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