Extraer y Guardar un Archivo Adjunto
Obtener Todos los Archivos Adjuntos
Con Aspose.PDF, es posible obtener todos los archivos adjuntos de un documento PDF. Esto es útil ya sea cuando deseas guardar los documentos por separado del PDF, o si necesitas eliminar un PDF de archivos adjuntos.
Para obtener todos los archivos adjuntos de un archivo PDF:
Recorre la colección EmbeddedFiles del objeto Document . La colección EmbeddedFiles contiene todos los archivos 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 .
Una vez que el objeto esté disponible, recupera ya sea todas las propiedades del archivo adjunto o el archivo en sí.
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 .
.NET Core 3.1
// For complete examples and data files, visit https://github.com/aspose-pdf/Aspose.PDF-for-.NET
private static void GetAllAttachments ()
{
// The path to the documents directory
var dataDir = RunExamples . GetDataDir_AsposePdf_Attachments ();
// Open PDF document
using ( var document = new Aspose . Pdf . Document ( dataDir + "GetAlltheAttachments.pdf" ))
{
// Get embedded files collection
Aspose . Pdf . EmbeddedFileCollection embeddedFiles = document . EmbeddedFiles ;
// Get count of the embedded files
Console . WriteLine ( "Total files : {0}" , embeddedFiles . Count );
int count = 1 ;
// Loop through the collection to get all the attachments
foreach ( Aspose . Pdf . FileSpecification fileSpecification in embeddedFiles )
{
Console . WriteLine ( "Name: {0}" , fileSpecification . Name );
Console . WriteLine ( "Description: {0}" ,
fileSpecification . Description );
Console . WriteLine ( "Mime Type: {0}" , fileSpecification . MIMEType );
// Check if parameter object contains the parameters
if ( fileSpecification . Params != null )
{
Console . WriteLine ( "CheckSum: {0}" ,
fileSpecification . Params . CheckSum );
Console . WriteLine ( "Creation Date: {0}" ,
fileSpecification . Params . CreationDate );
Console . WriteLine ( "Modification Date: {0}" ,
fileSpecification . Params . ModDate );
Console . WriteLine ( "Size: {0}" , fileSpecification . Params . Size );
}
// Get the attachment and write to file or stream
var fileContent = new byte [ fileSpecification . Contents . Length ];
fileSpecification . Contents . Read ( fileContent , 0 , fileContent . Length );
using ( var fileStream = new FileStream ( dataDir + count + "_out" + ".txt" , FileMode . Create ))
{
fileStream . Write ( fileContent , 0 , fileContent . Length );
}
count += 1 ;
}
}
}
.NET 8
// For complete examples and data files, visit https://github.com/aspose-pdf/Aspose.PDF-for-.NET
private static void GetAllAttachments ()
{
// The path to the documents directory
var dataDir = RunExamples . GetDataDir_AsposePdf_Attachments ();
// Open PDF document
using var document = new Aspose . Pdf . Document ( dataDir + "GetAlltheAttachments.pdf" );
// Get embedded files collection
Aspose . Pdf . EmbeddedFileCollection embeddedFiles = document . EmbeddedFiles ;
// Get count of the embedded files
Console . WriteLine ( "Total files : {0}" , embeddedFiles . Count );
int count = 1 ;
// Loop through the collection to get all the attachments
foreach ( Aspose . Pdf . FileSpecification fileSpecification in embeddedFiles )
{
Console . WriteLine ( "Name: {0}" , fileSpecification . Name );
Console . WriteLine ( "Description: {0}" ,
fileSpecification . Description );
Console . WriteLine ( "Mime Type: {0}" , fileSpecification . MIMEType );
// Check if parameter object contains the parameters
if ( fileSpecification . Params != null )
{
Console . WriteLine ( "CheckSum: {0}" ,
fileSpecification . Params . CheckSum );
Console . WriteLine ( "Creation Date: {0}" ,
fileSpecification . Params . CreationDate );
Console . WriteLine ( "Modification Date: {0}" ,
fileSpecification . Params . ModDate );
Console . WriteLine ( "Size: {0}" , fileSpecification . Params . Size );
}
// Get the attachment and write to file or stream
var fileContent = new byte [ fileSpecification . Contents . Length ];
fileSpecification . Contents . Read ( fileContent , 0 , fileContent . Length );
using var fileStream = new FileStream ( dataDir + count + "_out" + ".txt" , FileMode . Create );
fileStream . Write ( fileContent , 0 , fileContent . Length );
count += 1 ;
}
}
Obtener Archivo Adjunto Individual
Para obtener un archivo adjunto individual, podemos especificar el índice del archivo adjunto en el objeto EmbeddedFiles
de la instancia del Documento. Por favor, intenta usar el siguiente fragmento de código.
.NET Core 3.1
// For complete examples and data files, visit https://github.com/aspose-pdf/Aspose.PDF-for-.NET
private static void GetIndividualAttachment ()
{
// The path to the documents directory
var dataDir = RunExamples . GetDataDir_AsposePdf_Attachments ();
// Open PDF document
using ( var document = new Aspose . Pdf . Document ( dataDir + "GetIndividualAttachment.pdf" ))
{
// Get particular embedded file
Aspose . Pdf . FileSpecification fileSpecification = document . EmbeddedFiles [ 1 ];
// Get the file properties
Console . WriteLine ( "Name: {0}" , fileSpecification . Name );
Console . WriteLine ( "Description: {0}" , fileSpecification . Description );
Console . WriteLine ( "Mime Type: {0}" , fileSpecification . MIMEType );
// Check if parameter object contains the parameters
if ( fileSpecification . Params != null )
{
Console . WriteLine ( "CheckSum: {0}" ,
fileSpecification . Params . CheckSum );
Console . WriteLine ( "Creation Date: {0}" ,
fileSpecification . Params . CreationDate );
Console . WriteLine ( "Modification Date: {0}" ,
fileSpecification . Params . ModDate );
Console . WriteLine ( "Size: {0}" , fileSpecification . Params . Size );
}
// Get the attachment and write to file or stream
var fileContent = new byte [ fileSpecification . Contents . Length ];
fileSpecification . Contents . Read ( fileContent , 0 , fileContent . Length );
using ( var fileStream = new FileStream ( dataDir + "test_out" + ".txt" , FileMode . Create ))
{
fileStream . Write ( fileContent , 0 , fileContent . Length );
}
}
}
.NET 8
// For complete examples and data files, visit https://github.com/aspose-pdf/Aspose.PDF-for-.NET
private static void GetIndividualAttachment ()
{
// The path to the documents directory
var dataDir = RunExamples . GetDataDir_AsposePdf_Attachments ();
// Open PDF document
using var document = new Aspose . Pdf . Document ( dataDir + "GetIndividualAttachment.pdf" );
// Get particular embedded file
Aspose . Pdf . FileSpecification fileSpecification = document . EmbeddedFiles [ 1 ];
// Get the file properties
Console . WriteLine ( "Name: {0}" , fileSpecification . Name );
Console . WriteLine ( "Description: {0}" , fileSpecification . Description );
Console . WriteLine ( "Mime Type: {0}" , fileSpecification . MIMEType );
// Check if parameter object contains the parameters
if ( fileSpecification . Params != null )
{
Console . WriteLine ( "CheckSum: {0}" ,
fileSpecification . Params . CheckSum );
Console . WriteLine ( "Creation Date: {0}" ,
fileSpecification . Params . CreationDate );
Console . WriteLine ( "Modification Date: {0}" ,
fileSpecification . Params . ModDate );
Console . WriteLine ( "Size: {0}" , fileSpecification . Params . Size );
}
// Get the attachment and write to file or stream
var fileContent = new byte [ fileSpecification . Contents . Length ];
fileSpecification . Contents . Read ( fileContent , 0 , fileContent . Length );
using var fileStream = new FileStream ( dataDir + "test_out" + ".txt" , FileMode . Create );
fileStream . Write ( fileContent , 0 , fileContent . Length );
}
Obtener Archivos Adjuntos que Contienen Objetos FileAttachmentAnnotation
Además de la colección EmbeddedFiles del objeto Document, los archivos adjuntos también pueden estar contenidos en objetos FileAttachmentAnnotation. A continuación se muestra el código para ver el número y los detalles de dichos archivos adjuntos.