Extraer y Guardar un Adjunto
Contents
[
Hide
]
Obtener Todos los Adjuntos
Con Aspose.PDF, es posible obtener todos los adjuntos de un documento PDF. Esto es útil ya sea cuando quieres guardar los documentos por separado del PDF, o si necesitas despojar a un PDF de adjuntos.
Para obtener todos los adjuntos de un archivo PDF:
- Recorre la colección EmbeddedFiles del objeto Document. La colección EmbeddedFiles contiene todos los adjuntos. Cada elemento de esta colección representa un objeto FileSpecification. Cada iteración del bucle foreach a través de la colección EmbeddedFiles devuelve un objeto FileSpecification. Los siguientes fragmentos de código muestran cómo obtener todos los archivos adjuntos de un documento PDF.
El siguiente fragmento de código también funciona con la biblioteca Aspose.PDF.Drawing.
// Para ejemplos completos y archivos de datos, por favor vaya a https://github.com/aspose-pdf/Aspose.PDF-for-.NET
// La ruta al directorio de documentos.
string dataDir = RunExamples.GetDataDir_AsposePdf_Attachments();
// Abrir documento
Document pdfDocument = new Document(dataDir + "GetAlltheAttachments.pdf");
// Obtener la colección de archivos incrustados
EmbeddedFileCollection embeddedFiles = pdfDocument.EmbeddedFiles;
// Obtener el conteo de los archivos incrustados
Console.WriteLine("Total de archivos : {0}", embeddedFiles.Count);
int count = 1;
// Recorrer la colección para obtener todos los archivos adjuntos
foreach (FileSpecification fileSpecification in embeddedFiles)
{
Console.WriteLine("Nombre: {0}", fileSpecification.Name);
Console.WriteLine("Descripción: {0}",
fileSpecification.Description);
Console.WriteLine("Tipo MIME: {0}", fileSpecification.MIMEType);
// Verificar si el objeto de parámetros contiene los parámetros
if (fileSpecification.Params != null)
{
Console.WriteLine("Suma de verificación: {0}",
fileSpecification.Params.CheckSum);
Console.WriteLine("Fecha de creación: {0}",
fileSpecification.Params.CreationDate);
Console.WriteLine("Fecha de modificación: {0}",
fileSpecification.Params.ModDate);
Console.WriteLine("Tamaño: {0}", fileSpecification.Params.Size);
}
// Obtener el archivo adjunto y escribirlo en un archivo o flujo
byte[] fileContent = new byte[fileSpecification.Contents.Length];
fileSpecification.Contents.Read(fileContent, 0,
fileContent.Length);
FileStream fileStream = new FileStream(dataDir + count + "_out" + ".txt",
FileMode.Create);
fileStream.Write(fileContent, 0, fileContent.Length);
fileStream.Close();
count+=1;
}
Obtener Adjunto Individual
Para obtener un adjunto individual, podemos especificar el índice del adjunto en el objeto EmbeddedFiles
de la instancia del Documento. Por favor, intente usar el siguiente fragmento de código.
// Para ejemplos completos y archivos de datos, por favor visite https://github.com/aspose-pdf/Aspose.PDF-for-.NET
// La ruta al directorio de documentos.
string dataDir = RunExamples.GetDataDir_AsposePdf_Attachments();
// Abrir documento
Document pdfDocument = new Document(dataDir + "GetIndividualAttachment.pdf");
// Obtener archivo embebido particular
FileSpecification fileSpecification = pdfDocument.EmbeddedFiles[1];
// Obtener las propiedades del archivo
Console.WriteLine("Nombre: {0}", fileSpecification.Name);
Console.WriteLine("Descripción: {0}", fileSpecification.Description);
Console.WriteLine("Tipo MIME: {0}", fileSpecification.MIMEType);
// Verificar si el objeto de parámetros contiene los parámetros
if (fileSpecification.Params != null)
{
Console.WriteLine("Suma de verificación: {0}",
fileSpecification.Params.CheckSum);
Console.WriteLine("Fecha de creación: {0}",
fileSpecification.Params.CreationDate);
Console.WriteLine("Fecha de modificación: {0}",
fileSpecification.Params.ModDate);
Console.WriteLine("Tamaño: {0}", fileSpecification.Params.Size);
}
// Obtener el adjunto y escribir a archivo o flujo
byte[] fileContent = new byte[fileSpecification.Contents.Length];
fileSpecification.Contents.Read(fileContent, 0, fileContent.Length);
FileStream fileStream = new FileStream(dataDir + "test_out" + ".txt", FileMode.Create);
fileStream.Write(fileContent, 0, fileContent.Length);
fileStream.Close();