【发布时间】:2019-10-25 07:19:30
【问题描述】:
我正在使用 Spire.pdf dll 静默打印 html 页面,它在我的机器上运行良好,但在客户端机器上出现以下错误。
System.IO.FileNotFoundException: Could not load file or assembly 'Microsoft.msht
ml, Version=7.0.3300.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' or one
of its dependencies. The system cannot find the file specified.
File name: 'Microsoft.mshtml, Version=7.0.3300.0, Culture=neutral, PublicKeyToke
n=b03f5f7f11d50a3a'
at Spire.Pdf.HtmlConverter.HtmlConverter.?(String A_0, ImageType A_1, Int32 A
_2)
at Spire.Pdf.HtmlConverter.HtmlConverter.Convert(String url, ImageType type,
Int32 width, Int32 height, AspectRatio aspectRatio)
at Spire.Pdf.PdfSection.?(String A_0, Boolean A_1, Boolean A_2, Boolean A_3,
PdfHtmlLayoutFormat A_4)
at Spire.Pdf.PdfDocument.LoadFromHTML(String htmlSourceCode, Boolean autoDete
ctPageBreak, PdfPageSettings setting, PdfHtmlLayoutFormat layoutFormat, Boolean
isLoadComplete)
at Spire.Pdf.PdfDocument.LoadFromHTML(String htmlSourceCode, Boolean autoDete
ctPageBreak, PdfPageSettings setting, PdfHtmlLayoutFormat layoutFormat)
at SP.Module1.Main() in D:\Nikhil\Project\PrintDocument\SP\Module1.vb:line 96
WRN: Assembly binding logging is turned OFF.
To enable assembly bind failure logging, set the registry value [HKLM\Software\M
icrosoft\Fusion!EnableLog] (DWORD) to 1.
Note: There is some performance penalty associated with assembly bind failure lo
gging.
To turn this feature off, remove the registry value [HKLM\Software\Microsoft\Fus
ion!EnableLog].
我查看下面的页面并尝试通过添加引用并将 dll 复制到 exe 所在的本地文件夹来引用 mshtml.dll,可能是我不完全了解如何使用它。
Could not load file or assembly 'Microsoft.mshtml ... Strong name validation failed
如果有人能告诉我如何在客户端机器上安装该 dll,下面是我正在使用的代码
Dim doc As New PdfDocument()
Dim pgSt As New PdfPageSettings()
pgSt.Size = PdfPageSize.A4
pgSt.SetMargins(0.5, 0.5, 0.5, 0.5)
Dim htmlLayoutFormat As New PdfHtmlLayoutFormat()
htmlLayoutFormat.IsWaiting = False
' Dim htmlpath As String = "D:\Print-code\test3.html"
Dim source As String = response.Content ' File.ReadAllText(htmlpath)
doc.LoadFromHTML(source, True, pgSt, htmlLayoutFormat)
doc.PrintSettings.PrintController = New StandardPrintController()
doc.PrintSettings.PrinterName = printer
'doc.PrintSettings.Copies = 2
'Print all pages with default printer
doc.Print()
【问题讨论】:
-
您似乎复制了错误的 DLL。请务必使用 C:\Windows\assembly\GAC\Microsoft.mshtml\7.0.3300.0__b03f5f7f11d50a3a\Microsoft.mshtml.dll。或者运行供应商的安装程序,它应该会处理它。
-
汉斯你提到的文件路径在我的机器上不可用,我只有 C:\Windows\assembly\
-
它在那里,Explorer 不会让你看到它,因为 shell 扩展会扁平化旧 GAC 的视图。从命令行执行此操作以取得成功。
-
@Hans 现在使用命令行我可以到达 C:\Windows\assembly\GAC\Microsoft.mshtml\7.0.3300.0__b03f5f7f11d50a3a\ 所以我只需要将 Microsoft.mshtml.dll 复制到我的本地文件夹?