Использование типов Qt с ctypes и python

#python #c #wrapper #ctypes #wkhtmltopdf

#питон #c #обертка #типы ctypes #wkhtmltopdf

Вопрос:

Я хочу создать своего рода оболочку Python для wkhtmltopdf, созданную из источников C / C .

Для этого я ожидал использовать ctypes, но wkhtmltopdf использует различные структуры, которые содержат определенные типы, такие как QPrinter и многие другие.

Кто-нибудь знает, как использовать нестандартные поля ctypes с Python и модулем ctypes?

Я также ищу информацию об использовании Python-ctypes с исходным кодом c (библиотека dll), если кто-то знает об этом больше, чем я, мне будет интересно узнать об этих вещах 🙂

Большое спасибо !

Ответ №1:

Я бы рекомендовал вам использовать оболочку типа py-wkhtmltox вместо того, чтобы пытаться использовать C API для libwkhtmltox через ctypes.

Комментарии:

1. спасибо, я попытался установить его под управлением python 2.5, и он сказал мне перекомпилировать с помощью Mingw32, я постараюсь это сделать. Я сделал что-то, что работает, я называю wkhtmltopdf.exe с аргументами и методами в класс с помощью модуля «subprocess». Но я бы предпочел обертку 🙂

2. py-wkhtmltox — это оболочка; вы не смогли заставить его скомпилировать? Я бы рекомендовал вам использовать Python 2.7 и инструкции для Windows (которые я проверил).

3. Было ли это быстро во время ваших тестов? Для рендеринга PDF-файла мне требуется 6 или 7 секунд, с процессором intel i5 я создал файл .exe, который помещает интерфейс .pyd и информацию о яйце в python 2.7 (как в инструкции). Я нахожу это ненормально медленным , у вас есть идея ? Это длится 600 мс, когда я вызываю wkhtmltopdf.exe непосредственно

4. Я нашел причину, wkhtmltox работает очень медленно с градиентом css, связанным с рендерингом с высоким разрешением (как в настройках по умолчанию), я получил лучшие результаты, чем при вызовах .exe (~ 20%), просто для информации 🙂 Хорошего дня

5. И мне удалось скомпилировать .pyd для python 2.5, поэтому мне не нужно переносить свое приложение на python 2.7 только для этого модуля 🙂 мне пришлось переделать libpython25.a с определениями типов