Извлечение и сохранение вложения
Получить все вложения
С помощью Aspose.PDF можно получить все вложения из PDF-документа. Это полезно, когда вы хотите сохранить документы отдельно от PDF или если вам нужно удалить вложения из PDF.
Чтобы получить все вложения из PDF-файла:
Пройдите по коллекции EmbeddedFiles объекта Document . Коллекция EmbeddedFiles содержит все вложения. Каждый элемент этой коллекции представляет собой объект FileSpecification . Каждая итерация цикла foreach по коллекции EmbeddedFiles возвращает объект FileSpecification .
Как только объект доступен, извлеките либо все свойства прикрепленного файла, либо сам файл.
Следующие фрагменты кода показывают, как получить все вложения из PDF-документа.
Следующий фрагмент кода также работает с библиотекой 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 ;
}
}
Получить отдельное вложение
Чтобы получить отдельное вложение, мы можем указать индекс вложения в объекте EmbeddedFiles
экземпляра документа. Пожалуйста, попробуйте использовать следующий фрагмент кода.
.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 );
}
Получить вложения, содержащиеся в объектах FileAttachmentAnnotation
В дополнение к коллекции EmbeddedFiles объекта Document, вложения также могут содержаться в объектах FileAttachmentAnnotation. Ниже приведен код для просмотра количества и деталей таких вложений.