我正在尝试非常简单的步骤,以使用PDFBOX 2.0.7版向资源添加色彩空间,但是它不起作用。
我有PDF“ pdf1.pdf”,我正在从该文件中读取色彩空间并将其添加到HashMap,然后创建新资源,并尝试将色彩空间添加到新创建的资源中。但这不起作用
因此,第一步,我从sourcePdf文件读取colorSpaces并将其添加到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文档,并将colorPings从源Pdf添加到新的。
PDResources newResources = new PDResources();
PDColorSpace colorSpace = originalDocumentColorSpaces.values().iterator().next();
newResources.add(colorSpace);
newResources将出现错误:COSDictionary {COSStream已关闭,无法读取。可能其随附的PDDocument已关闭?} 添加操作之后(第3行)
colorSpace的类型为PDSeperation。
有任何线索吗?