Извлеките вложения из PDF с помощью Java

Как программно извлекать вложения из PDF с помощью Java

Как извлечь вложения с помощью библиотеки Java

Для извлечения вложений мы будем использовать Aspose.PDF для Java API, который представляет собой многофункциональный, мощный и простой в использовании API преобразования для платформы Java. Вы можете загрузить его последнюю версию непосредственно с Maven и установить ее в свой проект на базе Maven, добавив следующие конфигурации в pom.xml.

Repository

<repository>
    <id>AsposeJavaAPI</id>
    <name>Aspose Java AP</name>
    <url>https://releases.aspose.com/java/repo/</url>
</repository>

Dependency

<dependency>
<groupId>com.aspose</groupId>
<artifactId>aspose-pdf</artifactId>
<version>version of aspose-pdf API</version>
</dependency>

Извлечение вложений из PDF Java


Вам понадобится Aspose.PDF for Java, чтобы попробовать код в своей среде.

  1. Получите коллекцию встроенных файлов.
  2. Получите количество встроенных файлов.
  3. Прокрутите коллекцию, чтобы получить все вложения.
  4. Проверьте, содержит ли объект parameter параметры.
  5. Получите вложение и запишите его в файл или поток.

Извлечь вложение из PDF-документа


// Open document
Document pdfDocument = new Document(_dataDir+"input.pdf");
// Get particular embedded file
FileSpecification fileSpecification = pdfDocument.getEmbeddedFiles().get_Item(1);
// Get the file properties
System.out.printf("Name: - " + fileSpecification.getName());
System.out.printf("\nDescription: - " + fileSpecification.getDescription());
System.out.printf("\nMime Type: - " + fileSpecification.getMIMEType());
// Get attachment form PDF file
try {
    InputStream input = fileSpecification.getContents();
    File file = new File(fileSpecification.getName());
    // Create path for file from pdf
    file.getParentFile().mkdirs();
    // Create and extract file from pdf
    java.io.FileOutputStream output = 
        new java.io.FileOutputStream(
            fileSpecification.getName(), 
            true);
    byte[] buffer = new byte[4096];
    int n = 0;
    while (-1 != (n = input.read(buffer)))
        output.write(buffer, 0, n);
    // Close InputStream object
    input.close();
    output.close();
} 
catch (IOException e) {
    e.printStackTrace();
}
// Close Document object
pdfDocument.dispose();