CDW в PDF КОМПАС V14

Автор AndreySt, 12.11.13, 15:25:41

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

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

AndreySt

Как с помощью SDK сохранить чертеж в PDF, поиск по хэлпу да и форуму не помог. прошу помощи.
ЗЫ: В компасе 14 есть функция сохранения в pdf.

IgorRUtver

   Тоже есть потребность в данном методе, искал по подобию ksSaveToDXF но в pdf, ничего не нашел. Может както через печать можно, но сам пока не знаю как.
   Есть IPrintJob::SpecialExecute с входным параметром OutputFileName
- имя устройства печати.

Примечание:
Чтобы отправить задание на печать на текущий принтер, следует в качестве параметра OutputFileName прислать пустую строку.
Может по умолчанию поставить pdf. Сам еще не тыкал н буду пробовать.


bnickl

Установите PDF-принтер. CutePDF Writer или PDFCreator например. PDFCreator требует установки Ghostscript.
Все незнакомые слова погуглите.

Цитата: bnickl от 13.11.13, 14:04:14
Установите PDF-принтер. CutePDF Writer или PDFCreator например. PDFCreator требует установки Ghostscript.
Все незнакомые слова погуглите.
Уважаемый bnickl, Вы забыли добавить имя функции из SDK, чтобы реализовать выше сказанное.

AndreySt

Цитата: IgorRUtver от 13.11.13, 13:47:28
   Тоже есть потребность в данном методе, искал по подобию ksSaveToDXF но в pdf, ничего не нашел.

Тоже все SDK перебрал, ничего толком не нашел, правда про печать и не задумывался, спасибо за подсказку, поковыряюсь. Думал попробовать вызывать окно "Сохранить как..." ksExecuteKompasCommand(ksCMFileSaveAs,true); и уже там в нужные контролы поставить нужные параметры и сохранить... буду копать в 2х направлениях. Спасибо:)всем за ответы

bnickl

Это я к тому, что для одиночного преобразования файлов в PDF можно не кодить, а тупо печатать в файл PDF.

Здесь конференция для тех, кто хочет немного потупить.

AndreySt

Цитата: bnickl от 13.11.13, 14:20:07
Это я к тому, что для одиночного преобразования файлов в PDF можно не кодить, а тупо печатать в файл PDF.
в том то и дело было бы одиночкое не заморачивался бы, а сохранение необходимо многих чертежей + помимо pdf нужно сохранять и в dwg

13.11.13, 15:10:04 #8 Последнее редактирование: 13.11.13, 16:02:14 от Sabahs
Для Dwg  используйте IConverter - стандартный интерфейс импорта/экспорта.
IConverter.GetFilter - получить фильтр и номер команды по типу документа.
IConverter.Convert - запускает процесс конвертации.


KrissKross

А для pdf
ждать 15 версию Компаса  :-)))

Slaviation

Можно попробовать подсунуть в 14-ый компас модуль pdf2d.DLL из 15-го.

AndreySt

в 14м есть pdf2d.DLL и есть tlb, получил описание интерфейса с тлб а дальше что с ним делать не знаю.
  IPdf2dParamDisp = dispinterface
    ['{1BF78A7C-E274-4B61-8771-EBD0542E8F04}']
    property EmbedFonts: WordBool dispid 1;
    property GrayScale: WordBool dispid 2;
    property Resolution: SYSINT dispid 3;
    property Scale: Double dispid 4;
    property ColorType: SYSINT dispid 5;
    property OnlyThinLine: WordBool dispid 6;
    property MultiPageOutput: WordBool dispid 7;
    property PageRange: SYSINT dispid 8;
    property PageRangeStr: {??PWideChar}OleVariant dispid 9;
    property PageOddEven: SYSINT dispid 10;

pdf2d.DLL - уже готовый конвертер исходя из экспортных функций.
- LPKOMPASCONVERTER WINAPI GetIKompasConverter() - предопределенная функция, возвращающая интерфейс конвертера.

Slaviation

Цитироватьв 14м есть pdf2d.DLL и есть tlb, получил описание интерфейса с тлб а дальше что с ним делать не знаю.

//Конвертировать в PDF
#include "AtlBase.h"
BOOL ConvertToPdf(const _bstr_t& fileName)
{
   CRegKey key;
    if (key.Open(HKEY_LOCAL_MACHINE, "SOFTWARE\\ASCON\\KOMPAS-3D\\Converters\\Pdf2d", KEY_READ ) != ERROR_SUCCESS)
      return FALSE;

   TCHAR path[BUFSIZ];
    DWORD cbPath(BUFSIZ);
   if (key.QueryStringValue("Path", path, &cbPath) != ERROR_SUCCESS)
      return FALSE;
   
   const IConverterPtr converter(api_7->GetConverter(_bstr_t(path)));
   if (!converter)
      return FALSE;

   const IPdf2dParamPtr convParam(converter->ConverterParameters(0));
   if (!convParam)
      return FALSE;

   convParam->PutColorType(0);
   return BOOL(converter->Convert(_T(""), fileName, 0, FALSE));
}
+ Благодарностей: 3

AndreySt

вроде все понятно за исключением
1)api_7 это KompasObject из kAPI7.tlb?
2)где взять AtlBase.h?
зы: есть небольшие знания по С++ но в основном работаю с делфи

+ Благодарностей: 1

AndreySt

Похоже что придется написать библиотеку на с++ для делфи не нашел метода  GetConverter , или что то отдаленно похожего на него:)

IApplication.Converter - как не нашли?

Slaviation

Цитировать2)где взять AtlBase.h?
AtlBase.h - хидер для CRegKey.
В delphi есть свои функции работы с реестром.

AndreySt

Цитата: Sabahs от 14.11.13, 13:36:19
IApplication.Converter - как не нашли?
не нашел по причине что всю работу вел через delphiauto. грешен каюсь :shu: исправлюсь