Как получить местоположение страницы PDF без создания нового массива - PullRequest
0 голосов
/ 25 января 2019

Можно ли просто узнать расположение страниц PDF в байтовом массиве?

На данный момент я анализирую полный PDF, чтобы узнать байты страницы:

  public static List<byte[]> splitPdf(byte[] pdfDocument) throws Exception {
        InputStream inputStream = new ByteArrayInputStream(pdfDocument);
        PDDocument document = PDDocument.load(inputStream);
        Splitter splitter = new Splitter();
        List<PDDocument> PDDocs = splitter.split(document);
        inputStream.close();
        List<byte[]> pages = PDDocs.stream()
                .map(PDFUtils::getResult).collect(Collectors.toList());
}

private  static byte[] getResult(PDDocument pd) {
    ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
    pd.save(byteArrayOutputStream);
    return byteArrayOutputStream.toByteArray();
}

Мой код работает очень хорошо, но

  • Я создал дополнительные Список для сохранения байтов страницы. Я хотел бы просто иметь байтовые местоположения - если я знаю байтовые индексы страницы (начальное местоположение страницы, конечное местоположение страницы) Я извлеку это из основного байтового массива.

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

Сейчас я пытаюсь оптимизировать память, потому что я анализирую сотни документов параллельно. Поэтому я не хочу создавать дублирующиеся массивы.

1 Ответ

0 голосов
/ 26 января 2019

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

Как @Amedee уже намекнул в комментарии, для каждой страницы есть не просто раздел pdf соответственно.

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

Таким образом, уже сумма размеров ваших частичных pdfs может быть меньше, больше или даже равна размеру полного pdf.

...