Извлечение и сохранение вложения

Получение всех вложений

С помощью Aspose.PDF можно получить все вложения из документа PDF. Это полезно, когда вы хотите сохранить документы отдельно от PDF или если вам нужно удалить вложения из PDF.

Для получения всех вложений из файла PDF:

  1. Пройдите через коллекцию EmbeddedFiles объекта Document. Коллекция EmbeddedFiles содержит все вложения. Каждый элемент этой коллекции представляет объект FileSpecification. Каждая итерация цикла foreach по коллекции EmbeddedFiles возвращает объект FileSpecification.

Следующие примеры кода показывают, как получить все вложения из документа PDF.

Следующий фрагмент кода также работает с библиотекой Aspose.PDF.Drawing.

// Для полных примеров и файлов данных, пожалуйста, перейдите по ссылке https://github.com/aspose-pdf/Aspose.PDF-for-.NET
// Путь к директории документов.
string dataDir = RunExamples.GetDataDir_AsposePdf_Attachments();

// Открыть документ
Document pdfDocument = new Document(dataDir + "GetAlltheAttachments.pdf");

// Получить коллекцию встроенных файлов
EmbeddedFileCollection embeddedFiles = pdfDocument.EmbeddedFiles;

// Получить количество встроенных файлов
Console.WriteLine("Всего файлов: {0}", embeddedFiles.Count);

int count = 1;

// Пройти по коллекции, чтобы получить все вложения
foreach (FileSpecification fileSpecification in embeddedFiles)
{
    Console.WriteLine("Имя: {0}", fileSpecification.Name);
    Console.WriteLine("Описание: {0}",
    fileSpecification.Description);
    Console.WriteLine("MIME-тип: {0}", fileSpecification.MIMEType);

    // Проверить, содержит ли объект параметры
    if (fileSpecification.Params != null)
    {
        Console.WriteLine("Контрольная сумма: {0}",
        fileSpecification.Params.CheckSum);
        Console.WriteLine("Дата создания: {0}",
        fileSpecification.Params.CreationDate);
        Console.WriteLine("Дата изменения: {0}",
        fileSpecification.Params.ModDate);
        Console.WriteLine("Размер: {0}", fileSpecification.Params.Size);
    }

    // Получить вложение и записать в файл или поток
    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;
}

Получение отдельного вложения

Для получения отдельного вложения мы можем указать индекс вложения в объекте EmbeddedFiles экземпляра документа. Пожалуйста, используйте следующий фрагмент кода.

// Для полных примеров и файлов данных, пожалуйста, перейдите на https://github.com/aspose-pdf/Aspose.PDF-for-.NET
// Путь к директории с документами.
string dataDir = RunExamples.GetDataDir_AsposePdf_Attachments();

// Открыть документ
Document pdfDocument = new Document(dataDir + "GetIndividualAttachment.pdf");

// Получить конкретный встроенный файл
FileSpecification fileSpecification = pdfDocument.EmbeddedFiles[1];

// Получить свойства файла
Console.WriteLine("Имя: {0}", fileSpecification.Name);
Console.WriteLine("Описание: {0}", fileSpecification.Description);
Console.WriteLine("MIME тип: {0}", fileSpecification.MIMEType);

// Проверить, содержит ли объект параметры
if (fileSpecification.Params != null)
{
    Console.WriteLine("Контрольная сумма: {0}",
    fileSpecification.Params.CheckSum);
    Console.WriteLine("Дата создания: {0}",
    fileSpecification.Params.CreationDate);
    Console.WriteLine("Дата изменения: {0}",
    fileSpecification.Params.ModDate);
    Console.WriteLine("Размер: {0}", fileSpecification.Params.Size);
}

// Получить вложение и записать в файл или поток
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();