The PDF File Format includes some very sophisticated features. One of the most interesting ones is the Blend Mode (introduced in PDF version 1.4). This is intended as a brief overview article – if you would like to see some more detailed articles, let us know.
What is Blend Mode?
Blend Mode controls how new content is painted and allows the new pixels to be affected by what has already been drawn.
In Normal mode, any new drawing will erase existing items that it draws over. So if I draw a RED box on a page, anything underneath will disappear. But wouldn’t it be useful if the new red box could ‘interact’ (or blend) with whatever is on the page? This is what Blend Modes allow!
How is it set?
Blend Mode is set using the BM command in the GraphicsState and the default value is Normal.
Other possible values are Compatible (actually the same as Normal), Multiply, Screen, Overlay, Darken, Lighten, ColorDodge, ColorBurn, Hardlight, SoftLight, Difference, Exclusion.
How does it work?
When a pixel is drawn on the page, a formula is applied as defined in Section 11.3.5 of the PDF File Specification which produces a final blended result based on the current value and the new value.
How it works can be dependent on the exact colorspace used.
How would I implement it in Java?
If you want to implement this functionality in Java, the easiest way is to use JavaFX which includes all these modes defined so you can apply to any Node.
Java is more complex because it needs an implementation of CompositeContext for each Mode.
There is a nice tutorial exploring Composites in Swing/Java2D here.
Java also works in sRGB, so effects based on DeviceCMYK or other ColorSpaces become more complex to implement.
Is there a good PDF example?
If you are looking for a detailed example file, take a look at the Adobe test file.
Blend Modes allow to create some very interesting effects in compositing (both in and beyond PDF). If you are doing any form of drawing, they are worth knowing about and experimenting with.
Want to learn more about PDF files?
This post is part of our “Understanding the PDF File Format” series. In each article, we aim to take a specific PDF feature and explain it in simple terms. If you wish to learn more about PDF, we have 13 years’ worth of PDF knowledge and tips, so visit our series index!
Are you a Developer working with PDF files?
Our developers guide contains a large number of technical posts to help you understand the PDF file Format.
Do you need to solve any of these problems?
|Display PDF documents in a Web app|
|Use PDF Forms in a web browser|
|Convert PDF Documents to an image|
|Work with PDF Documents in Java|