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
Copy
private static void GetAllAttachments ( )
{
var dataDir = RunExamples . GetDataDir_AsposePdf_Attachments ();
using ( var document = new Aspose . Pdf . Document ( dataDir + "GetAlltheAttachments.pdf" ))
{
Aspose . Pdf . EmbeddedFileCollection embeddedFiles = document . EmbeddedFiles ;
Console . WriteLine ( "Total files : {0}" , embeddedFiles . Count );
int count = 1 ;
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 );
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 );
}
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
Copy
private static void GetAllAttachments ( )
{
var dataDir = RunExamples . GetDataDir_AsposePdf_Attachments ();
using var document = new Aspose . Pdf . Document ( dataDir + "GetAlltheAttachments.pdf" );
Aspose . Pdf . EmbeddedFileCollection embeddedFiles = document . EmbeddedFiles ;
Console . WriteLine ( "Total files : {0}" , embeddedFiles . Count );
int count = 1 ;
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 );
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 );
}
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
Copy
private static void GetIndividualAttachment ( )
{
var dataDir = RunExamples . GetDataDir_AsposePdf_Attachments ();
using ( var document = new Aspose . Pdf . Document ( dataDir + "GetIndividualAttachment.pdf" ))
{
Aspose . Pdf . FileSpecification fileSpecification = document . EmbeddedFiles [ 1 ];
Console . WriteLine ( "Name: {0}" , fileSpecification . Name );
Console . WriteLine ( "Description: {0}" , fileSpecification . Description );
Console . WriteLine ( "Mime Type: {0}" , fileSpecification . MIMEType );
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 );
}
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
Copy
private static void GetIndividualAttachment ( )
{
var dataDir = RunExamples . GetDataDir_AsposePdf_Attachments ();
using var document = new Aspose . Pdf . Document ( dataDir + "GetIndividualAttachment.pdf" );
Aspose . Pdf . FileSpecification fileSpecification = document . EmbeddedFiles [ 1 ];
Console . WriteLine ( "Name: {0}" , fileSpecification . Name );
Console . WriteLine ( "Description: {0}" , fileSpecification . Description );
Console . WriteLine ( "Mime Type: {0}" , fileSpecification . MIMEType );
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 );
}
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.