Extrair e Salvar um Anexo
Contents
[
Hide
]
Obter Todos os Anexos
Com o 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 você precisa remover anexos de um PDF.
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 desta coleção representa um objeto FileSpecification. Cada iteração do loop foreach pela coleção EmbeddedFiles retorna um objeto FileSpecification. 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.
// Para exemplos completos e arquivos de dados, por favor, acesse https://github.com/aspose-pdf/Aspose.PDF-for-.NET
// O caminho para o diretório dos documentos.
string dataDir = RunExamples.GetDataDir_AsposePdf_Attachments();
// Abrir documento
Document pdfDocument = new Document(dataDir + "GetAlltheAttachments.pdf");
// Obter coleção de arquivos embutidos
EmbeddedFileCollection embeddedFiles = pdfDocument.EmbeddedFiles;
// Obter quantidade de arquivos embutidos
Console.WriteLine("Total de arquivos : {0}", embeddedFiles.Count);
int count = 1;
// Percorrer a coleção para obter todos os anexos
foreach (FileSpecification fileSpecification in embeddedFiles)
{
Console.WriteLine("Nome: {0}", fileSpecification.Name);
Console.WriteLine("Descrição: {0}",
fileSpecification.Description);
Console.WriteLine("Tipo MIME: {0}", fileSpecification.MIMEType);
// Verificar se o objeto de parâmetros contém os parâmetros
if (fileSpecification.Params != null)
{
Console.WriteLine("Checksum: {0}",
fileSpecification.Params.CheckSum);
Console.WriteLine("Data de Criação: {0}",
fileSpecification.Params.CreationDate);
Console.WriteLine("Data de Modificação: {0}",
fileSpecification.Params.ModDate);
Console.WriteLine("Tamanho: {0}", fileSpecification.Params.Size);
}
// Obter o anexo e escrever para arquivo ou fluxo
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;
}
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.
// Para exemplos completos e arquivos de dados, por favor, vá para https://github.com/aspose-pdf/Aspose.PDF-for-.NET
// O caminho para o diretório dos documentos.
string dataDir = RunExamples.GetDataDir_AsposePdf_Attachments();
// Abrir documento
Document pdfDocument = new Document(dataDir + "GetIndividualAttachment.pdf");
// Obter arquivo embutido específico
FileSpecification fileSpecification = pdfDocument.EmbeddedFiles[1];
// Obter as propriedades do arquivo
Console.WriteLine("Nome: {0}", fileSpecification.Name);
Console.WriteLine("Descrição: {0}", fileSpecification.Description);
Console.WriteLine("Tipo MIME: {0}", fileSpecification.MIMEType);
// Verificar se o objeto de parâmetro contém os parâmetros
if (fileSpecification.Params != null)
{
Console.WriteLine("Checksum: {0}",
fileSpecification.Params.CheckSum);
Console.WriteLine("Data de Criação: {0}",
fileSpecification.Params.CreationDate);
Console.WriteLine("Data de Modificação: {0}",
fileSpecification.Params.ModDate);
Console.WriteLine("Tamanho: {0}", fileSpecification.Params.Size);
}
// Obter o anexo e escrever para arquivo ou stream
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();