Добавление ColorSpace к ресурсам приводит к закрытию потока - PullRequest
0 голосов
/ 03 декабря 2018

Я пытаюсь очень простыми шагами добавить цветовое пространство к ресурсам, используя PDFBOX версии 2.0.7, но это не работает.

У меня есть PDF "pdf1.pdf", я читаю цветовые пространства из этого файлаи добавив их в HashMap, я создаю новые ресурсы и пытаюсь добавить цветовые пространства во вновь созданные ресурсы.Но это не работает

Итак, первым шагом я прочитал colorSpaces из файла sourcePdf и добавил их в HashMap:

    seperationColors = new HashMap<COSName, PDColorSpace>();
    PDDocument sourcePdfFile = null;
    try {
        sourcePdfFile = PDDocument.load(new FileInputStream(new File(pdfPath)));
        PDPage page = sourcePdfFile.getPages().get(0);
        page.getContents();
        for (COSName name : page.getResources().getColorSpaceNames()) {
            PDColor color = page.getResources().getColorSpace(name).getInitialColor();
            if (color.getColorSpace() instanceof PDSeparation) {
                seperationColors.put(name, page.getResources().getColorSpace(name));
            }
        }
    } catch (FileNotFoundException e) {
        // e.printStackTrace();
    } catch (IOException e) {
        // e.printStackTrace();
    } finally {
        if (sourcePdfFile != null)
            try {
                sourcePdfFile.close();
            } catch (IOException e) {
                e.printStackTrace();
            } finally {
                sourcePdfFile = null;
            }
    }
}

Затем, на более поздних этапах в коде, я хочучтобы создать новый PDF-документ и добавить colorSpaces из исходного Pdf в новый.

        PDResources newResources = new PDResources();
        PDColorSpace colorSpace = originalDocumentColorSpaces.values().iterator().next();
        newResources.add(colorSpace);

newResources будет иметь ошибку: COSDictionary {COSStream был закрыт и не может быть прочитан.Возможно, включающий PDDocument был закрыт?} После операции добавления (строка 3)

colorSpace имеет тип PDSeperation.

Любая подсказка?

...