gpt4 book ai didi

css - 制作 pdf 时无法让 CSS 在 iTextSharp (5.4.3) 中工作

转载 作者:行者123 更新时间:2023-11-28 13:11:45 25 4
gpt4 key购买 nike

我在尝试使用 iTextSharp (5.4.3) 生成库将 css 文件应用到我的 pdf 时遇到问题。基本上根本没有应用 css。

我的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

CSS 文件仅包含:

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

(这是为了测试它是否正确呈现,所有文本应该是红色的)

我的问题是下面的命令

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

正确生成 pdf,但未对其应用 CSS。我知道它正在读取 CSS,因为在我应用 FileAccess.Read 属性之前我遇到了权限异常

方法

p.Parse(input, Encoding.UTF8)

不生成任何 pdf,只是一个“元素不允许”异常,这是因为 html(来自 radeditor 文本框,2013 年第 3 季度)是旧 html,并且解析似乎对表格有问题。

最佳答案

iTextSharp 对于使用 css、图像等的设计非常糟糕。取而代之的是 wkhtmltopdf是最好的。

关于css - 制作 pdf 时无法让 CSS 在 iTextSharp (5.4.3) 中工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18853309/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com