Hello Franco,
Mathematica provides you with the ability to open external files on your system and opening webpages using the SystemOpen function. However, once the request is sent for a file to be opened in an external program it is the external program that chooses how to open the file. For you to request that a program open a file at a specific location the external program must provide you with a way to send parameters to the program.
For web urls, you have a couple of options, https://www.wolfram.com/learningcenter/tutorialcollection/MathematicsAndAlgorithms/MathematicsAndAlgorithms.pdf#page=43 for example opens the pdf at page 43. Named destinations in pdf:s can also be used. # can also be used to reference specific parts of HTML documents when opened in a web browser.
When making calls to local resources, it is the operating system that handles these calls. On Windows at least, I don't think the system allows parameters to be passed when opening a local resource. Maybe this could work on some other platform.
For opening local resource I think you would need to open them from a command-line using the Run function from Mathematica and then passing parameters through switches if the program allows that. Using Adobe Reader the /A switch allows you to pass parameters. Using the following command works and opens the pdf on page 4:
Run["\"" <> pathToAdobe <> "Acrobat.exe\" /A page=4 " <> pathToDocument <> "Test.pdf"]
but then of course you need to know the path to the pdf program to be used and what kind of switches it supports, so that is not something that would be viable if you are intending on distributing the notebook.
If you are able to make the files accessible online I would recommend doing that and referencing them using SystemOpen. With Vitaliy:s example:
Graph[{Button[1 -> 2, SystemOpen["url.pdf#page=1"]], 2 -> 3, 3 -> 1},
GraphStyle -> "SmallNetwork", DirectedEdges -> True]
Hope that helps.
Patrik