3

Corel DrawforJavaなどのAPIがあるかどうか疑問に思っています。私の友人は、いくつかの写真を編集する小さなプログラムが必要になります。Corel Drawである必要がありますが、プログラミング言語に制限はありません(JavaまたはC#が推奨されます...)

残念ながら、インターネットで役立つものは見つかりませんでした。多分あなたたちの何人かはもっと知っていますか?

4

2 に答える 2

0

VB を使用してマクロを作成していることは知っています。すべての情報は、以下の場所にある PDF ドキュメントで確認できます。

C:\Program Files (x86)\Corel\Corel Graphics 12\Programs

PDF: dvba_pg.pdf

PP VBA オブジェクト モデル.pdf: CorelDRAW VBA オブジェクト モデル.pdf

これがお役に立てば幸いです。

于 2013-01-01T20:37:16.013 に答える
0

私が見つけた最良の方法は、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>
于 2014-09-05T09:56:13.667 に答える