Сохранения в один файл растрового формата

Автор kornei, 21.08.12, 14:17:57

« назад - далее »

0 Пользователи и 1 гость просматривают эту тему.

kornei

Проблема такая. При выполнении экспорта в формат JPEG руками в окне можно поставить галочку "Весь документ в один файл"

А вот при написании библиотеки среди свойств ksRasterFormatParam подобного нет.

Возможно ли эту функцию как то реализовать?


kornei

А в чем отличие от ksSaveAsToRasterFormat? И там и там используется ksRasterFormatParam и список атрибутов, которые можно задать - не отличается.

colorBPP
colorType
extResolution
extScale
format
greyScale
multiPageOutput
onlyThinLine
pages
rangeIndex

Т е нет свойства, которое бы чтобы задать галочку "Весь документ в один файл" для файлов JPEG.
Но раз в Компасе такая функция есть, значит и тут она должна как то реализовываться. Может я что то пропустил?

Freddy

Я это делал следующим образом:
1. Сначала создавал временные файлы для каждой сраницы
2. Склеивал их средствами
      //
      // Summary:
      //     Draws the specified System.Drawing.Image, using its original physical size,
      //     at the specified location.
      //
      // Parameters:
      //   image:
      //     System.Drawing.Image to draw.
      //
      //   point:
      //     System.Drawing.Point structure that represents the location of the upper-left
      //     corner of the drawn image.
      //
      // Exceptions:
      //   System.ArgumentNullException:
      //     image is null.
      public void DrawImage(Image image, Point point);
из System.Drawing

Разница в (Unicode).
Функция ksSaveAsToRasterFormatW использует структуру параметров RasterFormatParamW.
Функция ksSaveAsToRasterFormat использует структуру параметров RasterFormatParam

kornei

Freddy
Средствами Компас API сделать не получилось?

Sabahs
Эта разница то понятна))) Но список свойств не отличается ведь. RasterFormatParamW тоже не имеет свойства "Весь документ в один файл".


kornei

Не получилось сохранить многостраничный чертеж в один файл jpg.

Freddy

Цитата: kornei от 21.08.12, 16:08:01
Freddy
Средствами Компас API сделать не получилось?

Нет

kornei


Разница в длине переменных.
P.S. Причем тут структура RasterFormatParamW? Вообще, сохраняет функция ksSaveAsToRasterFormatW.

kornei

Вот мой фрагмент кода.


        RastrPar := ksTLB.ksRasterFormatParam (Doc.RasterFormatParam);

       
        RastrPar.format := 2;
        RastrPar.colorType := 0;
        RastrPar.extResolution := 300;
        RastrPar.extScale := 1;
        RastrPar.greyScale := true;
        RastrPar.multiPageOutput := true;
        RastrPar.onlyThinLine := false;
        RastrPar.rangeIndex := 0;

        FileFormat := '.jpg';

        Doc.SaveAsToRasterFormat('D:\NewFile\' + FileName + FileFormat, RastrPar);


Какое свойство надо задать, чтобы  сохранить многостраничный чертеж в один файл jpg.

chelkar

Похоже никак нельзя.

Как вариант.
Сохранить в TIFF c multiPageOutput = true.
И поискать готовый конвертер из TIFF в JPEG.

kornei

К сожалению такой вариант не подходит Скорее уж прямо в программе склеивать как предложил Freddy

Должен сохранять, я вот только язык на котором Вы пишете не могу понять, на Delphi этот код работать не будет.

kornei


21.08.12, 16:53:59 #16 Последнее редактирование: 21.08.12, 17:07:27 от Sabahs
RastrPar := ksTLB.ksRasterFormatParam (Doc.RasterFormatParam); - не правильно.

kompas - KompasObject
RastrPar:=ksRasterFormatParam(kompas.GetParamStruct(ko_RasterParam));
Надеюсь указатель на документ ksDocument2D (Doc), Вами получен правильно.
+ Благодарностей: 1

kornei


Тогда покажите в отладчике, как работает.
Если использовать функцию описанную в LibTool.pas
// Экспортный номер - 700
//----------------------------------------------------------------------
// сохранить  документ в растровый формат
// возвращает 1 в случае успеха или 0 в случае неудачи
// задается полное имя файла
// если sheet=0 сохраняем текущий документ
//----------------------------------------------------------------------
function ksSaveAsToRasterFormat ( sheet    : Reference;         // указатель документа
                                  fileName : PChar;             // имя файла документа
                                  par      : PRasterFormatParam ) : Integer; //структура параметров для конвертации в растровый формат
                                  stdcall;


То тоже неправильно, здесь нужно указатели передавать.

kornei

Я к сожалению не знаю, как делать exe с видео подобные Вашим.