我有一个用例,其中我需要深度克隆特定资源(仅适用于ColorSpaces),出于某些原因,我不想深度克隆整个资源,我想浅化复制资源,但仅深度克隆色彩空间,是这个吗?可能?我试图深度克隆颜色空间,但是效果不佳,但是有问题
我试图将资源浅复制到xobject中,并深克隆颜色空间,但这没用
PDFormXObject xobject = new PDFormXObject(target);
InputStream in = null;
OutputStream os = null;
if (page.hasContents()) {
try {
in = page.getContents();
os = xobject.getStream().createOutputStream(COSName.FLATE_DECODE);
IOUtils.copy(in, os);
} finally {
IOUtils.closeQuietly(in);
IOUtils.closeQuietly(os);
}
xobject.setResources(page.getResources());
ArrayList<PDSeparation> set = new ArrayList<PDSeparation>();
for (COSName colorSpaceName : page.getResources().getColorSpaceNames()) {
PDColor spotColor = page.getResources().getColorSpace(colorSpaceName).getInitialColor();
if (spotColor.getColorSpace() != null && spotColor.getColorSpace() instanceof PDSeparation) {
PDSeparation SeparationColorSpace = (PDSeparation) spotColor.getColorSpace();
COSArray arr = (COSArray) cloneForNewDocument(SeparationColorSpace.getCOSObject());
xobject.getResources().add(new PDSeparation(arr));
}
}
是否可以从页面上深度克隆颜色空间,然后浅表复制其余资源?