1-first thing create a generalized entity from filedocument entity
2-you can use already existing widget called file manager also you can use market place widget called dropzone
3- to view the pdf you can use (file document viewer , universal file viewer).
Hope my answer meet you requirement.
The following document helps you to complete your requirement