Doing file I/O in a servlet in no different than file I/O in a desktop app.
If, on the other hand, you want to stream a PDF to a browser, that's no different than streaming any other binary content.
Or is the problem the cretaion of PDF content? There are several libraries that help with this, they're listed on the AccessingFileFormats wiki page. iText in particular is very popular, or FOP if you have structured data in an XML format.