将ColorSpace添加到资源会导致流关闭

时间:2018-12-03 16:55:15

标签: pdf pdfbox

我正在尝试非常简单的步骤,以使用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。

有任何线索吗?

0 个答案:

没有答案