Это будет не так просто.Там нет высокоуровневый способ делать то, что вы хотите.Вам нужно будет перечислить ресурсы, ищущие изображения XObject, и очистить их флаг / Interpolate.
И вам придется сделать это перед созданием PdfImportedPage, потому что нет открытого способа доступа к их ресурсам.Grr.
void removeInterpolation( int pageNum ) {
PdfDictionary page = someReader.getPageN(pageNum);
PdfDictionary resources = page.getAsDict(PdfName.RESOURCES);
enumResources(resources);
}
void enumResource( PdfDictionary resources) {
PdfDictionary xobjs = resources.getAsDict(PdfName.XOBJECTS);
Set<PdfName> xobjNames = xobjs.getKeys();
for (PdfName name : xobjNames) {
PdfStream xobjStream = xobjs.getAsStream(name);
if (PdfName.FORM.equals( xobjStream.getAsName(PdfName.SUBTYPE))) {
// xobject forms have their own nested resources.
PdfDictionary nestedResources = xobjStream.getAsDict(PdfName.RESOURCES);
enumResources(nestedResources);
} else {
xobjStream.remove(PdfName.INTERPOLATE);
}
}
}
В приведенном выше коде пропущена небольшая проверка нуля.Страница не должна иметь словарь ресурсов, хотя они почти всегда есть.То же самое для форм XObject.Все функции getAs*
будут возвращать ноль, если данный ключ отсутствует или имеет другой тип ... Вы понимаете.