2014-06-17 1 views

답변

1

첫 번째 단계 : 매우 프로젝트에서 네임 스페이스 아래/참조를 가져와야 시작 :

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 기능 추가

관련 문제