Регистрация | | запомнить |
 
 
ВК



Просматривают:   1 Анонимно





COrelDRAW com и php
print | #
PC/director
Присоединился:
2005/2/5 2:25
Откуда РФ
Сообщений: 4640
Offline
Привет!
Может ктонибудь пробовал работать с CorelDraw на уровне COM интерфейса из PHP? сейчас разобрался как запускать корел через веб интерфейс могу перебирать объекты, выводить их свойства, удалять объекты, создавать слои.
Но как только применяю метод содержащий кучу параметров типа
Цитата:

// VBA
Dim s1 As Shape
Set s1 = ActiveLayer.CreateRectangle(0.620803, 9.776315, 8.033945, 4.253673)
// в PHP я делаю так
$cdr = new COM("corelDRaw.application" or die("Unable to instantiate CDR";
$cdr->FileOpen("c:/foo.cdr";
$cdr->ActivDocument->ActivePage->ActiveLayer->CreateRectangle(0.620803, 9.776315, 8.033945, 4.253673);
// возвращает ошибку о неверном типе данных

Начинает ругаться на неверный тип параметра.
Буду благодарен за любую помощь!
Спасибо!
ман по работе с com в PHP http://ru2.php.net/manual...

---- up 10.08.1012 ---
Рабочий скрипт под вин, только укажите правильно пути.
cdr.zip
Результат:

Опубликовано: 2009/4/17 13:31
_________________
I love vector graphics!!!


Re: COrelDRAW com и php
Титан - модератор
Присоединился:
2006/4/8 19:42
Сообщений: 152
Offline
обсуждалось что-то похожее в С# на forum.oberonplace.com, там все сводилось к тому, что нужно было передавать какой-то доп.параметр что ли...

а здесь - мот надо указывать все параметры для CreateRectangle, их же много?

p.s. я так понимаю Activ<***>Document - это просто опечатка на форуме?

Опубликовано: 2009/4/17 13:44


Re: COrelDRAW com и php
PC/director
Присоединился:
2005/2/5 2:25
Откуда РФ
Сообщений: 4640
Offline
нарисовать и закрасить удалось

Цитата:

$cdr = new COM("CorelDRaw.application") or die("Unable to instantiate corel");
echo "Loaded CorelDraw, version {$cdr->Version}\n";
$cdr->Visible = 1;
$cdr->CreateDocument();
$s1 = $cdr->ActiveDocument->ActiveLayer->CreateRectangle(0.620803, 9.776315, 8.033945, 4.253673);
$s1->Fill->UniformColor->CMYKAssign( 0, 100, 100, 0 );


делает



авот при экспорте выдает ошибку...

Цитата:

$expflt = $cdr->ActiveDocument->ExportBitmap("C:\\Documents and Settings\\igor\\Рабочий стол\\Рисунок1.bmp", cdrOS2BMP, cdrAllPages, cdrRGBColorImage, 185, 191, 72, 72, cdrNormalAntiAliasing, False, False, False, False, cdrCompressionNone);
$expflt->Version = 1 ;
$expflt->Finish;



ошибка
Цитата:
Fatal error: Uncaught exception 'com_exception' with message 'Parameter 12: Несовпадение типов. ' in Z:\home\test\www\com\example.php:19 Stack trace: #0 Z:\home\test\www\com\example.php(19): variant->ExportBitmap('C:\Documents an...', 'cdrOS2BMP', 'cdrAllPages', 'cdrRGBColorImag...', 185, 191, 72, 72, 'cdrNormalAntiAl...', false, false, false, false, 'cdrCompressionN...') #1 {main} thrown in Z:\home\test\www\com\example.php on line 19

Опубликовано: 2009/4/17 15:56
_________________
I love vector graphics!!!


Re: COrelDRAW com и php
Титан - модератор
Присоединился:
2006/4/8 19:42
Сообщений: 152
Offline
гм, возможно придется исползовать числовые эквиваленты констант типа cdrXXXX ( cdrRGBColorImagе и т.п. -- смотреть, ясен день либо в коде в вба-редакторе корела по Shift-F9 либо в его object browser, shift-f2 вроде lookup definition)

Опубликовано: 2009/4/17 16:28


Re: COrelDRAW com и php
PC/director
Присоединился:
2005/2/5 2:25
Откуда РФ
Сообщений: 4640
Offline
wOxxOm
большое спасибо за подсказку!
похоже сработало.
удалось создать документ и сохранить его.
Вот код на PHP:
Цитата:
<?
$empty = new VARIANT();
com_load_typelib('CorelDRaw.Application');
$cdr = new COM("CorelDRaw.application") or die("Unable to instantiate corel");
echo "Loaded CorelDraw, version {$cdr->Version}\n";
$cdr->Visible = 1;


$cdr->CreateDocument();
$s1 = $cdr->ActiveDocument->ActiveLayer->CreateRectangle(0.620803, 9.776315, 8.033945, 4.253673);
$s1->Fill->UniformColor->CMYKAssign( 0, 100, 100, 0 );

$cT = $cdr->ActiveDocument->ActiveLayer->CreateArtisticText( 0, 0, date("Y/m/d"), $empty, $empty);




$SaveOptions = $cdr->CreateStructSaveAsOptions();
// With SaveOptions
$SaveOptions->EmbedVBAProject = False;
$SaveOptions->Filter = 1795;
$SaveOptions->IncludeCMXData = False;
$SaveOptions->Range = 0;
$SaveOptions->EmbedICCProfile = False;
$SaveOptions->Version = 9;
$name = "J:\\temp\\art".time().".cdr";
$cdr->ActiveDocument->SaveAs($name, $SaveOptions);

?>

Опубликовано: 2009/4/17 17:43
_________________
I love vector graphics!!!


Re: COrelDRAW com и php
PC/director
Присоединился:
2005/2/5 2:25
Откуда РФ
Сообщений: 4640
Offline
up смотрите в шапку

Опубликовано: 2012/8/10 12:11
_________________
I love vector graphics!!!


Re: COrelDRAW com и php
Титан
Присоединился:
2005/10/2 14:57
Откуда Москва
Сообщений: 6779
Offline
о. появился ))

Опубликовано: 2012/8/13 2:09
_________________
[икс́эм]







Форма быстрого ответа
ЛогинИмя   Пароль   Логин
Сообщение:          

      ПРИМЕР


 [далее...]
Уведомлять о сообщениях в теме.



[Настройки поиска]