Как импортировать. Net Классы в Python с использованием Python. Net - PullRequest
0 голосов
/ 13 июля 2020

Я использую Python. NET для создания оболочки для iText. net (https://github.com/itext/itext7-dotnet).

DLL с именем itext.kernel.dll, а сценарий python находится в папке samne всех библиотек itext.

В Jetbrain dotPeek я вижу, что itext.kernel имеет различные пространства имен; пространство имен iText.Kernel.Pdf - это то, что мне нужно, в частности publi c class PdfReader .

Вот что я делаю (из документов on https://pythonnet.github.io/):

import clr
clr.AddReference('itext.kernel')
sys.path.append(os.getcwd())  # the script is currently in the dll folder
from iText.Kernel.Pdf import PdfReader

Но это вызывает ошибку «ModuleNotFoundError: Нет модуля с именем« iText »».

Я не понимаю, в чем дело, может кто-нибудь указать мне правильное направление? Спасибо.

edit: Я могу импортировать и использовать iTextSharp нормально, кажется, в iText7 есть что-то другое.

1 Ответ

1 голос
/ 16 июля 2020

Короче говоря, я действительно хотел, чтобы это сработало ... и решил мою проблему!

Я пробовал использовать более старые сборки и обнаружил, что сборка 7.0.8 работает нормально.

Я сравнил его со сборкой 7.1.11 (с которой у меня возникли проблемы) с помощью dotPeek и заметил, что на него есть некоторые ссылки, а именно BouncyCastle.Crypto, Common.Logging и Common.Logging.Core.

Я положил их в папку проекта, но все еще без кубиков ... пока я не заметил, что использую BouncyCastle.Crypto build 1.8.6, в то время как itext.kernel ссылается на сборку 1.8.5! Замена этой версией решила проблему.

В основном, в новых сборках iText7 есть 3 библиотеки, на которые есть ссылки, которые должны присутствовать в одной и той же версии (по крайней мере, для импортирования с помощью pytho nnet).

Надеюсь, это поможет кому-то, у кого есть проблемы, похожие на мою.

...