Hi Tilman, > Did you understand them? sort of... (please be patient, I think I'm making some confusion :-)
following your suggestion, I was able to create and add another Inline Image with the desired resolution into my pdf (I check with "pdfimages -list" from poppler-utils): PDImageXObject helper_img = LosslessFactory.createFromImage(document, scaledImage); InputStream img_data_stream = helper_img.createInputStream(); byte [] img_data = IOUtils.toByteArray(img_data_stream); PDInlineImage replacement_img = new PDInlineImage(operator.getImageParameters(), img_data, resources); I'm not sure about the "filters" you mentioned... I used the same parameters as the original (operator.getImageParameters()). Then I appended my new image to the page stream but this way I get two inline images... (if I use Appended.OVERWRITE I end up removing all other operators from the stream) PDPageContentStream pageContentStream = new PDPageContentStream(document, currentPage, AppendMode.APPEND, false, true); pageContentStream.drawImage(replacement_img, 0, 0); pageContentStream.close(); I tried other approaches: . (right after creating my replacement_img) take the content stream of the current page, parse it, get a list of tokens run through the list of tokens and build a new list omitting "BI" operator & co. create a new stream from the tokens and set it to the page (BUT: I have an error about some not-closed stream when saving) . adapt example RemoveAllText.java similar to the above: run through the tokens and modify those related to images (BUT: I'm not sure how to get to the image XObject from the token) . extend GraphicsOperatorProcessor (copying from operator.graphics.BeginInlineImage) i.e. create a StreamEngine to process my adapted "BeginInlineImage" operator (BUT: I get a ClassCastException on the StreamEngine I use) I think some of the problems are because I've used java ~15 years ago and forgot about it until now :-) Since I think I don't really get the hang of the library, I have a different (exploratory) proposition. Let's say that I generally want to "change resolution of raster images" would you (or anyone else) be interested in writing the appropriate code under compensation? I think that the code could be added to the examples in the source. At the moment I do not have any budget, but if we can come up with a sum I could try and ask my boss... I like this kind of approach because I would be able to: . get what I want in the short term, . learn the best way to do it (so that next time I can do it myself), . contribute materially to pdfbox . and add valuable piece of "documentation" (the example) to the library. . (bonus) have someone else maintain that code (I just hope my boss will feel the same :-) If you (or anyone else) feel this proposal is inappropriate, please let me know it and just forget about this. m On Thu, 21 Feb 2019 18:49:16 +0100, Tilman Hausherr wrote: > > Hi, did you try the two things I mentioned on stackoverflow? (Did you > understand them?) Did you create a PDF file with it? If yes, please > share it, I might be able to tell what is missing. > > Tilman > > Am 21.02.2019 um 09:59 schrieb Matteo Gamboz: > > Hi all, > > > > I must resize (change the resolution) of some Inline Images in a PDF. > > > > I'm a bit stuck on how best to proceed. > > > > I've tried by extending PDFStreamEngine and overriding method > > processOperator (https://stackoverflow.com/q/54744038/1581629) but > > without good results. > > > > Since I want to modify a stream (I think), I would like to ask if the > > approach is correct or if there are better methods (e.g. extend > > GraphicsOperatorProcessor or something...) --------------------------------------------------------------------- To unsubscribe, e-mail: users-unsubscr...@pdfbox.apache.org For additional commands, e-mail: users-h...@pdfbox.apache.org