0
안녕하세요 아래는 Word 문서의 첫 페이지 이미지를 PNG 형식으로 캡처하는 단계입니다. 사용자가 다른 형식으로 이미지를 캡처해야하는 경우. 그런 다음 이미지 확장을 아래 코드에서 필요한 출력 이미지 확장으로 바꿉니다. 이 대답이 유용하다면 투표하는 것을 잊지 마십시오.vb.net 단어 문서의 첫 번째 페이지의 스크린 샷을 캡처하는 코드
안녕하세요 아래는 Word 문서의 첫 페이지 이미지를 PNG 형식으로 캡처하는 단계입니다. 사용자가 다른 형식으로 이미지를 캡처해야하는 경우. 그런 다음 이미지 확장을 아래 코드에서 필요한 출력 이미지 확장으로 바꿉니다. 이 대답이 유용하다면 투표하는 것을 잊지 마십시오.vb.net 단어 문서의 첫 번째 페이지의 스크린 샷을 캡처하는 코드
첫 번째 단계 : 매우 프로젝트에서 네임 스페이스 아래/참조를 가져와야 시작 :
Import Imports Microsoft.Office.Interop.Word
두 번째 단계 : 프로젝트에 빈 클래스 파일을 추가하고 vb.net 코드 아래를 복사 워드 문서 :
Public Class ClipboardAPI
<Runtime.InteropServices.DllImport("user32.dll", EntryPoint:="OpenClipboard", SetLastError:=True, ExactSpelling:=True, CallingConvention:=System.Runtime.InteropServices.CallingConvention.StdCall)> _
Public Shared Function OpenClipboard(ByVal hWnd As IntPtr) As Boolean
End Function
<Runtime.InteropServices.DllImport("user32.dll", EntryPoint:="EmptyClipboard", SetLastError:=True, ExactSpelling:=True, CallingConvention:=System.Runtime.InteropServices.CallingConvention.StdCall)> _
Public Shared Function EmptyClipboard() As Boolean
End Function
<Runtime.InteropServices.DllImport("user32.dll", EntryPoint:="SetClipboardData", SetLastError:=True, ExactSpelling:=True, CallingConvention:=System.Runtime.InteropServices.CallingConvention.StdCall)> _
Public Shared Function SetClipboardData(ByVal uFormat As Integer, ByVal ByValhWnd As IntPtr) As IntPtr
End Function
<Runtime.InteropServices.DllImport("user32.dll", EntryPoint:="CloseClipboard", SetLastError:=True, ExactSpelling:=True, CallingConvention:=System.Runtime.InteropServices.CallingConvention.StdCall)> _
Public Shared Function CloseClipboard() As Boolean
End Function
<Runtime.InteropServices.DllImport("user32.dll", EntryPoint:="GetClipboardData", SetLastError:=True, ExactSpelling:=True, CallingConvention:=System.Runtime.InteropServices.CallingConvention.StdCall)> _
Public Shared Function GetClipboardData(ByVal uFormat As Integer) As IntPtr
End Function
<Runtime.InteropServices.DllImport("user32.dll", EntryPoint:="IsClipboardFormatAvailable", SetLastError:=True, ExactSpelling:=True, CallingConvention:=System.Runtime.InteropServices.CallingConvention.StdCall)> _
Public Shared Function IsClipboardFormatAvailable(ByVal uFormat As Integer) As Short
End Function
End Class
세번째 단계 : 여기은 F에 대한 워드 문서로부터 이미지를 캡처하기위한 코드는 irst 페이지.
Dim Width, Height, Orientation as Integer
Dim objWord As New Microsoft.Office.Interop.Word.Application
Dim objDoc As Microsoft.Office.Interop.Word.Document
Const CF_ENHMETAFILE As Integer = 14
objDoc = objWord.Documents.Open(YourSourcePath)
objWord.ActiveDocument.Select()
objWord.Selection.CopyAsPicture()
Try
Dim ip As IntPtr
Dim metaFile As System.Drawing.Imaging.Metafile
Dim bRet As Boolean
bRet = ClipboardAPI.OpenClipboard(Me.Handle)
If bRet = True Then
'Verify the clipboard contains data available
'as an enhanced metafile.
bRet = ClipboardAPI.IsClipboardFormatAvailable(CF_ENHMETAFILE) <> 0
End If
If bRet = True Then
'Store the clipboard's contents in the IntPtr.
ip = ClipboardAPI.GetClipboardData(CF_ENHMETAFILE)
End If
'Verify the IntPrt contains data before proceeding. Passing
'an empty IntPtr to System.Drawing.Imaging.Metafile results
'in an exception.
If Not IntPtr.Zero.Equals(ip) Then
metaFile = New System.Drawing.Imaging.Metafile(ip, True)
ClipboardAPI.CloseClipboard()
Dim image As System.Drawing.Image = metaFile
'Me.PictureBox1.Image = metaFile
Dim objImageWriter As Image = New Bitmap(image)
Dim objGraphics As Graphics = Graphics.FromImage(objImageWriter)
objGraphics.Clear(Color.White)
objGraphics.SmoothingMode = Drawing2D.SmoothingMode.AntiAlias
If Orientation = 1 Then
Width = image.Width
Height = image.Height
Else
Width = image.Height
Height = image.Width
End If
objGraphics.DrawImage(image, 0, 0, Width, Height)
image.Dispose()
objGraphics.Dispose()
Dim ep As Imaging.EncoderParameters = New Imaging.EncoderParameters
ep.Param(0) = New System.Drawing.Imaging.EncoderParameter(System.Drawing.Imaging.Encoder.Quality, 100)
Dim codecs() As Imaging.ImageCodecInfo = Imaging.ImageCodecInfo.GetImageEncoders()
Dim iciInfo As Imaging.ImageCodecInfo
Dim item As Imaging.ImageCodecInfo
For Each item In codecs
If (item.MimeType = "image/png") Then iciInfo = item
Next
ImageFileName = Format(Now, "ddMMMyyyy_hhmmss_") & RandNumber.Next & ".png"
ImageFilePath = Application.StartupPath & "\" & ImageFileName
objImageWriter.Save(ImageFilePath, iciInfo, ep)
objImageWriter.Dispose()
End If
Catch ex As Exception
ExceptionGenerated = True
Throw New System.Exception(ex.Message.ToString())
Finally
objDoc.Close()
objWord.Application.Quit(False)
objDoc = Nothing
objWord = Nothing
ReleaseComObject(objWord)
ReleaseComObject(objDoc)
End Try
네 번째 단계 :
objDoc.PageSetup.Orientation = Microsoft.Office.Interop.Word.WdOrientation.wdOrientPortrait/wdOrientLandscape
: Public Sub ReleaseComObject(ByVal obj As Object)
Try
System.Runtime.InteropServices.Marshal.ReleaseComObject(obj)
obj = Nothing
Catch ex As Exception
obj = Nothing
End Try
End Sub
당신은 심지어 vb.net 코드 아래 사용하여 단어의 페이지 방향을 확인할 수 있습니다 프로젝트에 ReleaseComObject 기능 추가