使用PDFContentStreamEditor.class可以操作主PDF页面内容的运算符和操作数。
似乎XObject不是编辑器编辑的,我的问题是是否有例子也可以调整XObject的操作符和操作数?
PDResources pdResources = page.getResources();
pdResources.getXObjectNames().forEach(propertyName -> {
PDXObject xObject = pdResources.getXObject(propertyName);
if(xObject instanceof PDFormXObject pdformxobject) {
//Is this the right place
}
}
字符串
我在PDFContentStreamEditor.class中尝试了其他方法-processControlrencyGroup方法。我认为我离解决方案越来越近了,但在下面的行中,我只在XObject中添加了一个Contents元素,并且不更改根对象操作符和操作数:
group.getCOSObject().setItem(COSName.CONTENTS, stream);
型
这里是完整的方法:
@Override
protected void processTransparencyGroup(PDTransparencyGroup group){
PDStream stream = new PDStream(document, group.getContents());
replacementForm = new ContentStreamWriter(replacementFormStream = stream.createOutputStream(COSName.FLATE_DECODE));// stream.createOutputStream(COSName.FLATE_DECODE));
super.processTransparencyGroup(group);
replacementFormStream.close();
group.getCOSObject().setItem(COSName.CONTENTS, stream);
replacementForm = null;
replacementFormStream = null;
}
型
1条答案
按热度按时间laximzn51#
您可以通过将此方法添加到this old answer的
PdfContentStreamEditor
类来编辑表单XObjects内容流:字符串
(PdfContentStreamEditor方法)
(Form XObject的内容流并不在Contents子条目中,它们本身就是内容流。因此,替换流内容必须以不同的方式存储。)
你可以这样使用它:
型
testInvertColorsHighPioneerFallNewsletterADApdf_2
)*此示例反转文档的直接表单XObject页面资源中的某些填充颜色。