【发布时间】:2021-10-10 16:01:08
【问题描述】:
我的应用程序中有一个 Webview2 控件,用于查看 PDF 文档。
该应用程序还存储和读取 MS SQL 服务器 PDF 数据。
目前,我正在从 SQL 中检索二进制数据,将它们转换为临时文件到磁盘并设置:
webview2.source = New Uri("file://" + filename)
到目前为止一切正常,但我当然希望在不读写磁盘的情况下完成这项工作。
有没有办法在不访问磁盘的情况下做同样的事情?
更新(按照推荐),我尝试过。部分代码便于理解:
Dim fieldOrdinal = reader.GetOrdinal(ColumnName)
reader.Read()
Dim blob = New Byte(reader.GetBytes(fieldOrdinal, 0, Nothing, 0, 0) - 1) {}
reader.GetBytes(fieldOrdinal, 0, blob, 0, blob.Length)
Dim pdfBase64 As String = Convert.ToBase64String(blob)
Dim html As String = "<!DOCTYPE html><html><head></head><body><div>" & $"<iframe width=100% height=500 src=\" & Chr(&H22) & "data:Application/pdf;base64,{pdfBase64}\" & Chr(&H22) & ">" & "</iframe></div></body></html>"
webview2 控件显示一个框架,但没有内容
最终更新: 这里(正确)到 VB 的翻译和工作代码:
Dim html As String = "<!DOCTYPE html><html><head></head><body><div>" & $"<iframe width=100% height=500 src=""data:Application/pdf;base64,{pdfBase64}"">" & "</iframe></div></body></html>"
【问题讨论】:
-
src中的值需要用引号引起来。此外,反斜杠是 C# 中"的转义。 -
明白了! VB中的等价物是“”。在职的 !谢谢你们俩!
标签: c# sql-server vb.net winforms webview2