I know this question must have been asked before, but the problem that I am facing is that I am using a library PoDoFo to parse PDF files. It seems that it is only compatible with C++.
Now I want the application to be web-based. That is, the user uploads a PDF file on the server, the server parses it and the parsed content is then sent back to the user.
Is such a thing possible with C++, or maybe any good work-arounds?
Or should I look at server-side scripting languages like PHP and their respective libraries?
You can do this with ease and flexibility using CGI. There are also other methods such as a module interface for a given webserver or building it directly into the web server.
Actually I have very little web development experience.
Can external libraries (DLLs) be dynamically linked to the server application? Also, will I have to provide OS specific DLLs for the executable? Or do I choose my server OS to be compatible with the executable on which I have compiled the exe file?
A server is just a normal computer (usually with specialized hardware) used to serve client computers with data, like a website. This means you can do anything you can do on your server that you can do on your normal computer. The only difference is probably the operating system. If you want to pay for the Windows operating system to be run on your server, you will be able to link DLLs the exact same way you do now. If you are running Linux on your server, you will have to compile the libraries for Linux, which are .a's or .so's.
When programming for servers, instead of writing to the screen or to the console, you would write to the network using sockets. You can use a C++ web framework to make this much easier for you.
Running external commands from PHP is extremely simple, no particular security issues other than running from a C++ application for example.
Use exec() PHP function if you want to automatically capture the output. However this is a blocking function (wait until the external program finishes): http://us3.php.net/function.exec