PDFBox:页面(ColorSpaces)的深层克隆特定资源

时间:2019-05-16 22:05:58

标签: java pdf pdfbox

我有一个用例,其中我需要深度克隆特定资源(仅适用于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));
                        }
                    }  

是否可以从页面上深度克隆颜色空间,然后浅表复制其余资源?

0 个答案:

没有答案