2016-05-20 5 views
-1

Я пытаюсь привнести текст из моего приложения в PowerShell с помощьюClipboard изображения OCR MODI.Document

$MODIObj = New-Object -ComObject MODI.Document 
$MODIObj.Create($filepath) 

Можно непосредственно получить мое изображение из буфера обмена? Я пробовал:

$MODIObj.Create([System.Windows.Forms.Clipboard]::GetImage()) 

Но это не работает. Можно ли попробовать что-то подобное без создания файла?

+0

Вы сначала загрузили сборку winforms? ('Add-Type -Assembly System.Windows.Forms') –

ответ

0

Согласно MSDN, Create() требует строковый параметр с пути или имени файла для MDI или TIF-документ, который означает, что он не будет принимать System.Drawing.Image -объект вы получаете от GetImage(). В качестве обходного пути вы можете сохранить изображение, хранящееся в буфере обмена, в временном файле и попытаться загрузить его. Ex.

#Get image from clipboard 
Add-Type -AssemblyName System.Windows.Forms 
$i = [System.Windows.Forms.Clipboard]::GetImage() 

#Save image to a temp. file 
$filepath = [System.IO.Path]::GetTempFileName() 
$i.Save($filepath) 

#Create MODI.Document from filepath 
$MODIObj = New-Object -ComObject MODI.Document 
$MODIObj.Create($filepath) 

Если Create() жалуется на имя файла (отсутствует расширение), то просто добавьте его к темп-FilePath:.

$filepath = [System.IO.Path]::GetTempFileName() + ".tif" 

Вы также можете нажать скопировать на файл (бывший Ctrl + C в файл Explorer) и получить этот путь. Пример:

#Get image from clipboard 
Add-Type -AssemblyName System.Windows.Forms 

#If clipboard contains image-object 
if([System.Windows.Forms.Clipboard]::ContainsImage()) { 

    #Get image from clipboard 
    $i = [System.Windows.Forms.Clipboard]::GetImage() 

    #Save image to a temp. file 
    $filepath = [System.IO.Path]::GetTempFileName() 
    $i.Save($filepath) 

} elseif ([System.Windows.Forms.Clipboard]::ContainsFileDropList()) { 
    #If a file (or files) are stored in the clipboard (you have pressed ctrl+c/ctrl+x on file/files) 
    $files = [System.Windows.Forms.Clipboard]::GetFileDropList() 

    #Only using first filepath for this demo. 
    #If you need to support more files, use a foreach-loop to ex. create multiple MODI.documents or process one at a time 
    $filepath = $files[0] 
} 

#If filepath is defined 
if($filepath) { 
    #Create MODI.Document from filepath 
    $MODIObj = New-Object -ComObject MODI.Document 
    $MODIObj.Create($filepath) 
} 

 Смежные вопросы

  • Нет связанных вопросов^_^