iText 7 中尚不提供 OCG 删除功能。
但是,您可以尝试使用一种解决方法:我们可以将有关 OCG 的所有信息从您的源文档复制到目标文档,这应该在目标文档中创建相同的 OCG 并保留默认的开/关状态。
要复制 OCG,您可以将一个文档的页面复制到另一个文档(这将复制所有 OCG),然后删除该页面。
当 iText 中的 OCG 删除功能可用时,该方法会变得更简洁,但现在您可以使用类似于以下的代码:
PdfDocument sourceDocument = new PdfDocument(new PdfReader(sourcePdfPath));
PdfDocument targetDocument = new PdfDocument(new PdfWriter(targetPdfPath));
PdfFormXObject pageCopy = sourceDocument.getFirstPage().copyAsFormXObject(targetDocument);
PdfPage page = targetDocument.addNewPage();
PdfCanvas canvas = new PdfCanvas(page);
canvas.addXObject(pageCopy);
// Workaround: copying the page from source document to destination document also copies OCGs
sourceDocument.copyPagesTo(1, 1, targetDocument);
// Workaround: remove the page that we only copied to make sure OCGs are copied
targetDocument.removePage(targetDocument.getNumberOfPages());
sourceDocument.close();
targetDocument.close();