Какая библиотека C++/.NET/Java может быть использована для конвертации PDF и изображений в формат AutoCAD DWG и обратно?

Вопрос или проблема

Существуют ли библиотеки c++/.net/java/.., которые можно использовать для конвертации различных форматов, таких как pdf, jpeg, bmp в формат autocad dwg и обратно.

Заранее спасибо

Конвертация из векторных форматов, таких как DWG, в растровые битмапы, такие как JPEG и BMP, называется растрация и является относительно простой.

Обратная конвертация из растровых битмапов в векторный формат может быть выполнена как минимум двумя способами:

  1. Либо встроить битмап как есть в векторный файл.
  2. Либо проанализировать содержимое битмапа, чтобы попытаться найти объекты (линии, прямоугольники, кривые и т. д.) и сопоставить их с фактическими векторными объектами в выходном векторном файле.

Первый подход довольно прост, если выходной векторный формат поддерживает встраивание битмапов, что имеет место в двух распространенных форматах AutoCAD DWG и DXF.

Второй подход называется векторизация или трассировка изображений, и его может быть сложно реализовать полностью автоматически.

Компания, в которой я работаю, предлагает SDK, который поддерживает растрацию DWG и других векторных файлов. Он также поддерживает встраивание растровых битмапов внутрь DXF и других векторных форматов (но не поддерживает создание файлов DWG).

Код на C++ для конвертации из DWG в JPEG выглядит так:

BITMAPHANDLE bitmapFromVector = { 0 };
// указываем размер растровизации
L_2DSetViewport(2000, 1600);
// устанавливаем режим растровизации
L_2DSetViewMode(L2D_USE_BEST);
// загружаем векторный файл как растровый битмап
L_INT nRet = L_LoadBitmap(dwgFileName, &bitmapFromVector, sizeof(BITMAPHANDLE), 24, ORDER_BGR, NULL, NULL);
if(SUCCESS == nRet)
{
   // сохраняем выходной файл как JPG
   nRet = L_SaveBitmap(jpegFileName, &bitmapFromVector, FILE_JPEG, 24, 2, NULL);
   L_FreeBitmap(&bitmapFromVector);
}

Если вы хотите попробовать, есть бесплатная версия для оценки, которая включает бесплатную техническую поддержку.

Ответ или решение

Да, существуют библиотеки для C++, .NET и Java, которые могут быть использованы для конвертации PDF и изображений (например, JPEG и BMP) в форматы AutoCAD DWG и обратно. Вот несколько основных решений для данной задачи:

  1. LEADTOOLS: Это SDK, который предоставляет обширные функции для работы с растровыми и векторными изображениями. LEADTOOLS поддерживает рендеринг DWG в JPEG, а также возможно встраивание растровых изображений в DXF и другие векторные форматы. Однако следует отметить, что LEADTOOLS не поддерживает создание файлов DWG.

    Пример кода на C++ для конвертации DWG в JPEG с использованием LEADTOOLS:

    BITMAPHANDLE bitmapFromVector = { 0 };
    // Установить размер растра
    L_2DSetViewport(2000, 1600);
    // Установить режим растрирования
    L_2DSetViewMode(L2D_USE_BEST);
    // Загрузить векторный файл как растровый битмап
    L_INT nRet = L_LoadBitmap(dwgFileName, &bitmapFromVector, sizeof(BITMAPHANDLE), 24, ORDER_BGR, NULL, NULL);
    if(SUCCESS == nRet) {
       // Сохранить результат как JPG
       nRet = L_SaveBitmap(jpegFileName, &bitmapFromVector, FILE_JPEG, 24, 2, NULL);
       L_FreeBitmap(&bitmapFromVector);
    }

    Вы можете попробовать библиотеку, скачав бесплатную версию LEADTOOLS, которая включает бесплатную техническую поддержку.

  2. Aspose.CAD: Это библиотека для .NET, которая поддерживает работу с файлами CAD. Она может конвертировать DWG в различные растровые форматы (PNG, JPEG) и обратно. Однако вам может понадобиться дополнительное программное обеспечение для извлечения объектов из растровых изображений и их преобразования в векторный формат.

  3. pdf2cad: Это программное обеспечение и API, которое позволяет конвертировать PDF-файлы в DWG и DXF. Хотя это не библиотека, которую вы можете интегрировать напрямую, это решение может быть полезно при работе с PDF.

  4. Autodesk AutoCAD I/O API: Если у вас есть доступ к Autodesk API, вы можете использовать его для конвертации DWG в другие форматы, включая PDF и изображения. Autodesk предоставляет инструменты, которые могут помочь с автоматизацией этого процесса.

Перевод из растровых изображений в векторные форматы, как вы упомянули, может быть выполнен двумя способами: либо путем встраивания растрового изображения в векторный файл, либо путем анализа содержимого растрового изображения для извлечения векторных объектов. Второй способ (векторизация или трассировка изображений) может быть сложным, и для него могут потребоваться специализированные алгоритмы и библиотеки, такие как Inkscape, которые также поддерживают трассировку растровых изображений в векторные.

Надеюсь, это поможет вам в выборе подходящей библиотеки для ваших нужд. Если у вас есть дополнительные вопросы, не стесняйтесь спрашивать!

Оцените материал
Добавить комментарий

Капча загружается...