No se puede hacer que CSS funcione en iTextSharp (5.4.3) al hacer pdf

Tengo un problema al intentar aplicar un archivo css a mi pdf utilizando la biblioteca de generación de iTextSharp (5.4.3). Básicamente el css no se está aplicando en absoluto.

Tengo el siguiente método en mi archivo vb.net

    Protected Sub btnPreview_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnPreview.Click
    Dim bytes As Byte()
    bytes = System.Text.Encoding.UTF8.GetBytes(letterRadEdit.Content)

    Dim tagProcessor As tool.xml.html.DefaultTagProcessorFactory()

    Using input As New MemoryStream(bytes, False)

        Dim ms As New MemoryStream()

        Dim document As New iTextSharp.text.Document(iTextSharp.text.PageSize.LETTER, 36, 36, 36, 36)
        Dim writer As PdfWriter = PdfWriter.GetInstance(document, ms)

        writer.CloseStream = False
        document.Open()

        Dim htmlContext As HtmlPipelineContext = New HtmlPipelineContext(Nothing)
        htmlContext.SetAcceptUnknown(True)
        htmlContext.SetTagFactory(Tags.GetHtmlTagProcessorFactory())
        Dim cssResolver As ICSSResolver = XMLWorkerHelper.GetInstance().GetDefaultCssResolver(False)
        cssResolver.AddCssFile(HttpContext.Current.Server.MapPath("/assets/css/pdf.css"), True)

        Dim pipeline As New CssResolverPipeline(cssResolver, New HtmlPipeline(htmlContext, New PdfWriterPipeline(document, writer)))
        Dim pdfworker As New XMLWorker(pipeline, True)
        Dim p As New XMLParser(True, pdfworker, New System.Text.UTF8Encoding)

        Try

            'p.AddListener(pdfworker)
            'p.Parse(input, Encoding.UTF8)

            XMLWorkerHelper.GetInstance().ParseXHtml(writer, document, input, New FileStream(HttpContext.Current.Server.MapPath("~/assets/css/pdf.css"), FileMode.Open, FileAccess.Read))
        Catch

        Finally
            pdfworker.Close()

        End Try

        document.Close()
        ms.Position = 0

        Response.Buffer = True
        Response.Clear()
        Response.ContentType = "application/pdf"
        Response.AddHeader("content-disposition", "attachment; filename=preview.pdf")
        Response.BinaryWrite(ms.GetBuffer())
        Response.Flush()
    End Using
End Sub

el archivo CSS simplemente contiene:

p{color:#e10000;margin-bottom:1.2em;}

(Esto es para probar si se está procesando correctamente, todo el texto debe ser rojo)

Mi problema es que el siguiente comando

XMLWorkerHelper.GetInstance().ParseXHtml(writer, document, input, New FileStream(HttpContext.Current.Server.MapPath("~/assets/css/pdf.css"), FileMode.Open, FileAccess.Read))

produce correctamente el pdf, pero no le aplica el CSS. Sé que está leyendo el CSS porque tuve una excepción de permisos hasta que apliqué la propiedad FileAccess.Read

el método

p.Parse(input, Encoding.UTF8)

no produce ningún pdf, solo una excepción de 'Elemento no permitido', esto se debe a que el html (proveniente de un cuadro de texto del radeditor Q3 2013) es antiguo html y el análisis parece tener un problema con las tablas.

Respuestas a la pregunta(2)

Su respuesta a la pregunta