Extrair e Salvar um Anexo
Obter Todos os Anexos
Com Aspose.PDF, é possível obter todos os anexos de um documento PDF. Isso é útil tanto quando você deseja salvar os documentos separadamente do PDF, quanto se precisar remover um PDF de anexos.
Para obter todos os anexos de um arquivo PDF:
Percorra a coleção EmbeddedFiles do objeto Document . A coleção EmbeddedFiles contém todos os anexos. Cada elemento dessa coleção representa um objeto FileSpecification . Cada iteração do loop foreach pela coleção EmbeddedFiles retorna um objeto FileSpecification .
Uma vez que o objeto esteja disponível, recupere as propriedades do arquivo anexado ou o próprio arquivo.
Os seguintes trechos de código mostram como obter todos os anexos de um documento PDF.
O seguinte trecho de código também funciona com a 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 ;
}
}
Obter Anexo Individual
Para obter um anexo individual, podemos especificar o índice do anexo no objeto EmbeddedFiles
da instância do Documento. Por favor, tente usar o seguinte trecho 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 );
}
Obter Anexos que estão contidos em objetos FileAttachmentAnnotation
Além da coleção EmbeddedFiles do objeto Document, os Anexos também podem estar contidos em objetos FileAttachmentAnnotation. Abaixo está o código para visualizar o número e os detalhes de tais Anexos.