Corel DrawforJavaなどのAPIがあるかどうか疑問に思っています。私の友人は、いくつかの写真を編集する小さなプログラムが必要になります。Corel Drawである必要がありますが、プログラミング言語に制限はありません(JavaまたはC#が推奨されます...)
残念ながら、インターネットで役立つものは見つかりませんでした。多分あなたたちの何人かはもっと知っていますか?
VB を使用してマクロを作成していることは知っています。すべての情報は、以下の場所にある PDF ドキュメントで確認できます。
C:\Program Files (x86)\Corel\Corel Graphics 12\Programs
PDF: dvba_pg.pdf
PP VBA オブジェクト モデル.pdf: CorelDRAW VBA オブジェクト モデル.pdf
これがお役に立てば幸いです。
私が見つけた最良の方法は、VBscript を使用することです。
まだ興味がある場合は、以下のコードを見てください。スクリプト (Java から開始) は、ソース ファイルと宛先ファイルの 2 つの引数を取り、宛先に保存する前にソース ファイルを操作します。
このスクリプトの制限は、「CorelDraw x6」に依存していることです。より汎用的に記述して、さまざまな CorelDraw OLE オブジェクトを探すことができます。
このメカニズムの制限は、VB ですべてを実行できるわけではないことです (CorelDraw ページのサイズを取得することはできませんでした!!!)
コード:
<package>
<job id="Main">
<reference object="CorelDraw.Application" version="16.0" />
<script language="VBScript">
Option Explicit
Dim app
' Parameters
Dim source, dest
if ( Wscript.Arguments.count<2) Then
Err.Raise 2, "MakeThumb", "Invalid paremeters count"
Wscript.echo "Invalid paremeters count"
Wscript.quit -999
end if
source= Wscript.Arguments.Item(0)
dest= Wscript.Arguments.Item(1)
'Wscript.echo source
'Wscript.echo dest
' Initialisation
set app= nothing
On Error resume next
' Retrieval of an existing instance
Set app = GetObject(, "CorelDraw.Application.16")
On Error GoTo 0
' No existing instance, creatoing a new one
If (app is nothing) Then
Err.Clear
On Error resume next
Set app = CreateObject("CorelDraw.Application.16")
On Error GoTo 0
End If
If (app Is Nothing) Then
Err.Raise 2, "MakeThumb", "Impossible to open Corel Draw"
'stop
Wscript.quit -998
end if
app.visible=true
Dim doc
set doc = app.OpenDocument(source)
' Trying to get source document's size
'Dim cs
'Set cs = CreateObject( "CorelDRAW.CorelScript" )
Dim pg
Set pg = doc.pages.Item(1)
doc.unit=5 'unit=pixels
Dim h0, w0
on error resume next
' if it fails, I assume the dimention are an A4
h0=pg.SizeHeight
w0=pg.SizeWidth
if (err<>0) then
w0=2480
h0=3508
end if
on error goto 0
Dim h, w, s, r
'Wscript.echo "h orig=" + CStr(h0) + ",w orig=" + CStr(w0) + " unit=" + CStr(doc.Unit)
h = doc.ToUnits(h0, cdrPixel)
w = doc.ToUnits(w0, cdrPixel)
s = h * w
r = Sqr(500990 / s)
'Wscript.echo "h=" + CStr(h) + ",w=" + CStr(w) + ",s=" + CStr(s) + ", r=" + CStr(r)
Dim h2, w2
h2 = h * r
w2 = w * r
'Wscript.echo "h2=" + CStr(h2) + ",w2=" + CStr(w2)
Dim exportFilter
Set exportFilter = doc.ExportBitmap( _
dest, cdrPNG, cdrCurrentPage, cdrRGBColorImage, w2, h2, 72, 72, _
cdrNormalAntiAliasing, False, False, True, False, cdrCompressionNone, Nothing, Nothing)
exportFilter.Finish
doc.close
app.quit
Set app = Nothing
Set doc = Nothing
Wscript.quit 0
</script>
</job>
</package>