#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();
}
}
}
}