You can certanly embed things like firefox & evince using http://www.gtk.org/api/2.6/gtk/PlugSocket.html
but for what you wan't to do there are better options.
Instead of embeding firefox you would be better off just useing Gtk+ WebCore "WebKit"
The WebKit framework uses Cairo for all rendering in the GTK+ port. Support has also been added for SVG and <canvas> content using Cairo.
And for pdf just use cairo with poppler installed.
The Poppler library uses Cairo to render PDF documents. Cairo enables the drawing of antialiased vector graphics and transparent objects.
Plus if you actualy want to generate pdf files for your viewer you can use Haru Free PDF Library
HARU is a free, cross platform, open-sourced software library for generating PDF. It supports the following features.
Generating PDF files with lines, text, images.
Outline, text annotation, link annotation.
Compressing document with deflate-decode.
Embedding PNG, Jpeg images.
Embedding Type1 font and TrueType font.
Creating encrypted PDF files.
Using various character set (ISO8859-1~16, MSCP1250~8, KOI-8R).
Supporting CJK fonts and encodings.
You can add the feature of PDF creation by using HARU without understanding complicated internal structure of PDF.
If you want a canvas widget to tie everything together you can use goocanvas.
Optional model/view split.
Uses interfaces for items and views.
Basic items - rect/ellipse/polyline/text/image/group.
Path item, using SVG path specification strings.
Table item for layout of other items (similar to the GtkTable widget). (This also supports items whose requested height changes according to their allocated width, such as text items.)
Embedded GTK+ widgets.
Layers/stacking order with raise/lower functions.
Cascading styles - line width/style/dashes, colors, fill patterns.
Affine transformations for all items - rotations/scales/skews.
Event handling - button/motion events, "pointer-events" property like SVG.
Grabs - support for pointer and keyboard grabs.
Keyboard focus traversal.
Accessibility (item title and description properties and hierarchy stuff).
Printing (output to a given cairo_t).
Item visibility setting - on/off/above zoom threshold.
Scalable - support for thousands of items over a large canvas area.
Support for different units - pixels/points/inches/millimeters.
Hope that helps :)