Тот факт, что вы спрашиваете о C # / .NET, заставляет меня догадываться, что вы работаете на платформе Windows, поэтому это может не сработать для вас, но я добился приличного успеха, используя html2ps в сочетании с ps2pdf :
#! /bin/sh
TEMPDIR="/tmp"
html2ps -u $1 > $TEMPDIR'temp.ps'
ps2pdf $TEMPDIR'temp.ps' $2
Это работает с CSS (по крайней мере, со всем тем CSS, который я уже использовал), хотя есть некоторые ограничения, если я правильно помню, в отношении некоторых встроенных стилей.
ПРИМЕЧАНИЕ : Я думаю, что они оба доступны в Windows через Cygwin, если это приемлемое для вас решение.