次のコードに問題があります。 BrowsePage.Document.Body.ScrollRectangle.Widthは、ページがこれよりも大きくても230を返します。したがって、ページの大部分は切り捨てられます。たとえば、BrowsePage.Document.Body.ScrollRectangle.Widthを整数で置き換えた場合2000年には、画像全体がキャプチャされます。捕獲されているHTMLファイル(C:\ htmlTest.txt):Webブラウザー:BrowsePage.Document.Body.ScrollRectangle.Width
Public Class ImageFromHtml
Private PageUrl As String
Private ConvertedImage As Bitmap
Private BrowsePage As New WebBrowser()
Public documentText As String
Private m_intHeight As Integer
Public Property Height() As Integer
Get
Return m_intHeight
End Get
Set(ByVal value As Integer)
m_intHeight = value
End Set
End Property
Private m_intWidth As Integer
Public Property Width() As Integer
Get
Return m_intWidth
End Get
Set(ByVal value As Integer)
m_intWidth = value
End Set
End Property
Public Function ConvertPage() As Bitmap
'Me.PageUrl = PageUrl
Dim thrCurrent As New Thread(New ThreadStart(AddressOf CreateImage))
thrCurrent.SetApartmentState(ApartmentState.STA)
thrCurrent.Start()
thrCurrent.Join()
'CreateImage()
Return ConvertedImage
End Function
Private Sub CreateImage()
BrowsePage.ScrollBarsEnabled = False
'BrowsePage.Navigate(PageUrl)
' BrowsePage.ScriptErrorsSuppressed = True
'BrowsePage.Navigate("about:blank")
BrowsePage.DocumentText = documentText
BrowsePage.ScrollBarsEnabled = True
AddHandler BrowsePage.DocumentCompleted, AddressOf _
WebBrowser_DocumentCompleted
While BrowsePage.ReadyState <> WebBrowserReadyState.Complete
Application.DoEvents()
End While
BrowsePage.Dispose()
End Sub
Private Sub WebBrowser_DocumentCompleted(ByVal sender As Object, ByVal e As _
WebBrowserDocumentCompletedEventArgs)
'BrowsePage = DirectCast(sender, WebBrowser)
BrowsePage = DirectCast(sender, WebBrowser)
Height = BrowsePage.Document.Body.ScrollRectangle.Height
Width = BrowsePage.Document.Body.ScrollRectangle.Width
BrowsePage.ClientSize = New Size(BrowsePage.Document.Body.ScrollRectangle.Width, BrowsePage.Document.Body.ScrollRectangle.Height)
BrowsePage.ScrollBarsEnabled = True
BrowsePage.ScriptErrorsSuppressed = True
'ConvertedImage = New Bitmap(Width, Height)
ConvertedImage = New Bitmap(BrowsePage.Document.Body.ScrollRectangle.Width, BrowsePage.Document.Body.ScrollRectangle.Height)
BrowsePage.BringToFront()
BrowsePage.DrawToBitmap(ConvertedImage, BrowsePage.Bounds)
'MsgBox(BrowsePage.Document.Body.ScrollRectangle.Height)
'MsgBox(BrowsePage.Document.Body.ScrollRectangle.Width)
End Sub
End Class
Public Class Form1
Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
Try
Dim objImageFromHtml As New ImageFromHtml()
'objImageFromHtml.Height = 1000
'objImageFromHtml.Width = 1000
Dim SR = New StreamReader("c:\htmlTest.txt")
objImageFromHtml.documentText = SR.ReadToEnd
Dim Test As Bitmap = objImageFromHtml.ConvertPage()
Test.Save("c:\Test.jpeg", _
System.Drawing.Imaging.ImageFormat.Jpeg)
Catch ex As Exception
End Try
End Sub
End Class
お返事ありがとうございました。私は結局、問題を引き起こしていたHTMLのDOCTYPE属性であることを発見しました。 HTMLのDOCTYPE属性を削除すると、問題が解決されました。したがって、私が上で提供したコードは、問題をシミュレートするのに十分ではありませんでした。とにかくありがとう。 – w0051977
あなたのコードは、もはやサポートされていない内部メソッドに依存しています。 :) – WiredPrairie