Обнаружение пакета PDF или портфолио в коде - PullRequest
4 голосов
/ 06 мая 2011

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

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

Ответы [ 2 ]

0 голосов
/ 29 января 2014
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();
            }
        }

    }

}
0 голосов
/ 29 мая 2012

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

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

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

...