 In this video, I'm showing stream objects in PDF and a new option that I've added to PDF parser to help analyzing stream objects. So a stream object that can be identified with PDF ID we are just going to count what is present, no zeros. In this example, and in this PDF file, you can see that there is a stream object. It will be GSTM. A stream object is an object that contains other objects. And with PDF parser, we can search for stream objects in this example. And here you see object 1 is a stream object, OBG STM, and it contains a stream. If I apply the filter, I can see what's inside the stream. And what we see inside the streams are a set of dictionaries. Like here, open action. That's a catalog. This is dictionary for catalog object outlines here and so on. So what you have here inside this stream is different objects. Here you have the number of the objects. So the index 2, 3, 4, 5, 6, 7. So you have 6 objects in here and that's why you have N6. And here are all the dictionaries of those objects. So one stream object can contain other objects. Now this cannot be repeated indefinitely. So a stream object itself cannot contain another stream object. It can only contain objects without streams. So and what I used to tell my attendees of my workshops and my trainings is that if they find PDF with a stream object, then they have to use PDF parser to parse the stream objects, filter them and then look what's inside. Here we did this with a visual inspection, but if you have a lot of output you can pipe this into PDF ID again with option N. And PDF ID here will refuse this, another PDF document because the header is missing. It's the output of PDF parser we are analyzing. But you can force PDF ID to analyze it with option F and then you can see here it contains JavaScript and an open action. Now if we let PDF parser run on this example like this we get the output for the different elements and objects that are found inside. The header, a command, here object 1 and then immediately followed by object 8 and 9. All the objects that are in here, they are stored in that stream object so we don't see them. A new option that I added is option O, uppercase O. And when you use that option then the objects inside the stream object will be extracted and parsed and processed like any other object. Like this. So now you see we have object 1, the stream object, then followed by object 2. And object 2 is a catalog. And here you can see containing your stream object is 1. So we know that this is an object that is inside stream objects and then stream object 1. Object 3 outlines in object 1, object 4, the pages and so on. Here you have the JavaScript and then you have object 8 and 9 that we saw before. Now with PDF parser you can calculate statistics about all the elements and objects found inside an element, inside a PDF, like this example. And here you see we have 3 commands, 1 startCostRef and 3 indirect objects. Object 8, 1 and 9. You can also use that uppercase option here. And then the objects inside the stream object will be parsed and also then processed and they will appear in the statistics. So you see here now the search keywords appear like JS, JavaScript and OpenAction. So I know the JavaScript is in option 7. So statistics with option uppercase O that replaces the combination of PDF parser and piping that into PDF ID. You can now achieve the same with those 2 options and here have the results for all the different keywords that are found inside the PDF document. And normally you have a count but you also have the enumeration of the object themselves. So the OpenAction is in object 2, JavaScript is in object 7. So that means that with PDF parser I can select that object 7 and say that it needs to parse the stream objects. And then here you see that I have object 7 and I can see the JavaScript. I could also search for that JavaScript like this and then I have it. But for that I need to use that option O uppercase O. If I don't use it then it will not be found because it has not been parsed and the same here by referencing object 7 like this no output because it is inside a stream object and you need to use option O to look inside that stream object and parse the objects that are inside it. So that is a new feature in PDF parser in version 070. Uppercase O will parse the stream objects if those objects are present.