Pipes work by sending one program's output to another program's input. This means that the program receiving the output of the other has to be able to read from
STDIN (standard streams).
In this case,
grep is able to read the output of
ll because it is designed that way.
du expects a command line argument pointing to the directory it should run in (if a directory isn't given, it will default to the current working directory
As for seeing the sizes of the
.pdf files, if all the files are in a directory, you can run
du -h -d1 /path/to/pdf/dir or
locate *.pdf | xargs | du -h. If they are in different directories, you will want to use
find together (another user will probably give you a hand with this, I'm not quite sure how to do it).