Обнаружение пакета PDF или портфолио в коде

#java #pdf #package #portfolio

#java #PDF #пакет #Портфолио

Вопрос:

Кто-нибудь знает способ определить, является ли данный PDF-файл портфолио PDF или пакетом PDF, а не «обычным» PDF? Я бы предпочел решения Java, хотя, поскольку я еще не нашел никакой информации об обнаружении определенного типа PDF, я возьму то, что смогу достать, и они попытаются выяснить решение Java впоследствии.

(При поиске прошлых вопросов выясняется, что группа людей не знает, что существуют такие вещи, как портфолио PDF и пакеты PDF. Как правило, это оба способа, с помощью которых Adobe позволяет упаковывать несколько отдельных PDF-файлов в один PDF-файл. Открытие пакета PDF в Reader показывает пользователю список встроенных PDF-файлов и позволяет осуществлять дальнейший просмотр оттуда. Портфолио PDF, похоже, немного сложнее — они также включают браузер на основе Flash для встроенных файлов, а затем позволяют пользователям извлекать оттуда отдельные PDF-файлы. Моя проблема с ними и причина, по которой я хотел бы иметь возможность обнаруживать их в коде, заключается в том, что встроенный в OS X Preview.app не может прочитать эти файлы — поэтому я хотел бы, по крайней мере, предупредить пользователей моего веб-приложения, что их загрузка может привести к снижению совместимости между платформами.)

Комментарии:

1. PDF Package vs PDF Porfolio блог Adobe для справки.

Ответ №1:

Этот вопрос устарел, но на случай, если кто-то захочет знать, это возможно. Это можно сделать с помощью Acrobat и JavaScript с помощью следующей команды.

  if (Doc.collection() != null)
 {
     //It Is Portfolio
 }
  

JavaScript API Acrobat сообщает: «Объект коллекции получен из свойства Doc.collection. Doc.collection возвращает нулевое значение, когда нет коллекции PDF (также называемой пакетом PDF и портфолио PDF).Объект collection используется для установки исходного документа в коллекции, задания начального вида коллекции, а также для получения, добавления и удаления полей коллекции (или категорий).»

Ответ №2:

 I'm also facing same problem while extracting data through kofax,  but i got solution and its working fine need to add extra jar for Document class.

import java.io.File;
import java.io.IOException;
import java.io.InputStream;

public class PDFPortfolio {

    /**
     * @param args
     */
    public static void main(String[] args) {

        com.aspose.pdf.Document pdfDocument = new com.aspose.pdf.Document("e:/pqr1.pdf");
        // get collection of embedded files
        com.aspose.pdf.EmbeddedFileCollection embeddedFiles = pdfDocument.getEmbeddedFiles();
        // iterate through individual file of Portfolio
        for(int counter=1; counter<=pdfDocument.getEmbeddedFiles().size();counter  )
        {
            com.aspose.pdf.FileSpecification fileSpecification = embeddedFiles.get_Item(counter);
            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("e:/" 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();
            }
        }

    }

}