2016-03-21 2 views
0

Нужно получить длину смещения и байта каждой страницы в формате PDF. Например, значение смещения первой страницы будет равно 0, а length будет длиной в байтах страницы ,Сплит PDF с использованием смещения и длины IBM ONDEMAND (в объединенном PDF)

У меня есть требование передать индексный файл для PDF в инструмент IBM Ondemand, это репозиторий PDF. Мне нужно объединить отдельные файлы PDF, чтобы вычислить смещение и длину каждого PDF-файла, создать индексный файл с этими двумя параметрами и передать его в инструмент.

Инструмент будет использовать индексный файл для разделения PDF (несколько PDF объединены в один) на основе смещения и длины, переданных как свойства (индексный файл).

Я использовал itext, чтобы получить начало и конец страницы с помощью закладки. Нужно вычислить смещение и длину байтов для каждой страницы.

Предложите, есть ли способ получить индекс (начало страницы) и конец страницы с точки зрения байтов.

Любая помощь будет оценена

+0

Это я, или этот вопрос просто не имеет смысла? Вы можете перефразировать его? Похоже, вы делаете некоторые предположения о неправильном формате файла PDF. –

ответ

0

Вы не можете сделать это в любом случае. Пожалуйста, прочитайте спецификацию формата файла PDF (здесь, среди других мест http://www.adobe.com/devnet/pdf/pdf_reference.html).

PDF-файл содержит «объекты», а на странице есть описание страницы, записанное в объекте потока, и может (и в основном будет) использовать различные другие объекты, которые, по всей вероятности, будут разбросаны по всему файлу.

Вы неправильно понимаете, как создаются PDF-файлы, и вам нужно понять, прежде чем вы начнете спотыкаться, пытаясь реализовать это, или вы собираетесь тратить много времени.

0

Этот вопрос необходимо задать на форуме IBM Ondemand. Я думал, что могу использовать Itext, чтобы взломать его. Как уже упоминалось Дэвидом, мы не можем иметь дело с таким неструктурированным PDF-файлом, используя Itext. Ниже приведен фрагмент кода для решения проблемы.

Оба PDF объединены с использованием простой java. Объединенный файл будет иметь две информации EOF, заголовка и трейлера.

Когда вы откроете в Acrobat, он прочитает последнюю информацию и информацию о документе. Когда мы передаем длину и индекс по запросу, он разделит PDF и отобразит, как ожидалось.

public static void main(String[] args) throws IOException { 
    String sourceFile1Path = "C:\\sample1.PDF"; 
    String sourceFile2Path = "C:\\sample1.PDF"; 

    String mergedFilePath = "C:\\merged.PDF"; 

    File[] files = new File[2]; 
    files[0] = new File(sourceFile1Path); 
    files[1] = new File(sourceFile2Path); 

    File mergedFile = new File(mergedFilePath); 
    for (File file : files) { 
     FileWriter fstream = null; 
     BufferedWriter out = null; 
     fstream = new FileWriter(mergedFile, true); 
     out = new BufferedWriter(fstream); 

     FileInputStream fis = new FileInputStream(file); 
     BufferedReader in = new BufferedReader(new InputStreamReader(fis)); 

     String aLine; 
     while ((aLine = in.readLine()) != null) { 
      out.write(aLine); 
      out.newLine(); 
     } 
     out.close(); 
     fstream.close(); 
     fis.close(); 
     in.close(); 

     System.out.println("File Length: " + file.getName() + " : " + new File(mergedFilePath).length()); 
    } 
} 
Смежные вопросы