2017-01-24 7 views
1

Я прочитал все похожие вопросы и ответы, и я все еще застрял, старые вопросы были для старых версий.Замена PDImageXObject другим PDFBOX 2.0.3

Я хочу заменить все изображения в данном PDF-формате внешними изображениями.

Вот что я сделал до сих пор:

for(int a=0;a<doc.getNumberOfPages().size();a++){ 
     PDPage p = doc.getPage(a); 
     PDResources resources = p.getResources(); 
     for (COSName xObjectName : resources.getXObjectNames()) { 
      PDXObject xObject = resources.getXObject(xObjectName); 
      if (xObject instanceof PDImageXObject) { 
       PDImageXObject original_img = ((PDImageXObject) xObject); 
       PDImageXObject replacement_img = PDImageXObject.createFromFile(f.getImages().get(a), doc); 
      }   
     } 
    } 

Итак, у меня есть 2 PDImageXObjects имена original_img и replacement_img. Заменить replace_img необходимо перезаписать original_img.

+1

Вы пытались * заменить * еще что-то вроде 'resources.put (xObjectName, replacement_img)' после создания экземпляра 'replacement_img'? – mkl

+0

Да, я забыл. Оно работает. Спасибо @mkl – GrayFox

+0

Хорошо, я сделаю это реальным ответом. – mkl

ответ

1

Чтобы заменить старое изображение на новом изображении, необходимо установить запрошенный ресурс для нового образа, то есть

resources.put(xObjectName, replacement_img); 

после конкретизации replacement_img в коде OP в.