Я пытаюсь очень простыми шагами добавить цветовое пространство к ресурсам, используя 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.
Любая подсказка?