CorelDrawのCDRフォーマット解析
1478 ワード
Cdrフォーマットはcoreldrawソフトウェアの基本フォーマットですが、ファイル構造は公開されておらず、解析するには自分で解読する必要があります.
現在2つの方法があり、1つ目は直接1バイト推測で、現在pythonベースのいくつかの解析プログラム、unicovert、inkscapeなどがあり、sk 1パッケージを呼び出して完成し、学習が困難で、サポートが全面的ではありません.
もう1つの方法はcoreldrawのvbaスクリプトを真似て解析し、C#またはC++を使用してcomコンポーネントを呼び出す方法で解析することができます.いくつかの注意事項:基本構造cdrファイル->ページ->レイヤー->グラフィック.上から下へ順番に集まりましたが、ここで注意しなければならないのは、すべての下付き文字が1から始まることです. 各インタフェースを呼び出すとき、変数のタイプに注意してください.Item[]のパラメータがlongであるなど、intには決して入力できません.そうしないとエラーが発生します.
また、いくつかの基本的な概念を把握する必要があります.ホームページ面:ホームページ面は各ページに表示されますが、下図と理解してください メインレイヤー.
続行...
参考資料:
http://forum.oberonplace.com/forumdisplay.php?f=16
VCが開発した基本コードは、参考までに使用します.
現在2つの方法があり、1つ目は直接1バイト推測で、現在pythonベースのいくつかの解析プログラム、unicovert、inkscapeなどがあり、sk 1パッケージを呼び出して完成し、学習が困難で、サポートが全面的ではありません.
もう1つの方法はcoreldrawのvbaスクリプトを真似て解析し、C#またはC++を使用してcomコンポーネントを呼び出す方法で解析することができます.いくつかの注意事項:
また、いくつかの基本的な概念を把握する必要があります.
続行...
参考資料:
http://forum.oberonplace.com/forumdisplay.php?f=16
VCが開発した基本コードは、参考までに使用します.
#include "stdafx.h"
#import "vgcoreauto.tlb" rename ("GetCommandLine", "vgGetCommandLine"), rename ("CopyFile", "vgCopyFile"), rename ("FindWindow", "vgFindWindow") no_namespace named_guids
#import "CorelDraw.tlb" rename ("FindWindow", "cdrFindWindow") named_guids
int _tmain(int argc, _TCHAR* argv[])
{
CoInitialize(NULL);
CorelDRAW::IDrawApplicationPtr pApp(L"CorelDRAW.Application.14");
CorelDRAW::IDrawPagePtr pTargetPage = pApp->ActivePage;
pTargetPage->ActiveLayer->CreateRectangle(1,1,2,2,0,0,0,0);
try
{
pTargetPage->CreateLayer("testlayer");
}
catch (_com_error)
{
}
CoUninitialize();
return 0;
}