簡體   English   中英

如何使用 Python.Net 在 Python 中導入.Net 類

[英]How to import .Net Classes in Python using Python.Net

我正在使用 Python.NET 為 iText.net ( https://github.com/itext/itext7-dotnet ) 創建包裝器。

The dll is named itext.kernel.dll and the python script is in the samne folder of all the itext dlls.

使用 Jetbrain dotPeek,我看到itext.kernel有各種命名空間; 命名空間iText.Kernel.Pdf是我需要的,特別是公共ZA2F2ED4F840AB1CBB4DC21A2

這就是我正在做的事情(來自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'的模塊”錯誤。

我不明白這是怎么回事,有人能指出我正確的方向嗎? 謝謝。

編輯:我可以很好地導入和使用 iTextSharp,似乎 iText7 有一些不同。

好吧,長話短說,我真的很想讓這個工作......並解決了我的問題!

我嘗試使用舊版本,發現 7.0.8 版本運行良好。

我使用 dotPeek 將它與 build 7.1.11(我遇到問題的那個)進行了比較,並注意到它有一些參考,即 BouncyCastle.Crypto、Common.Logging 和 Common.Logging.Core。

我確實將它們放在項目文件夾中,但仍然沒有骰子......直到我注意到我使用的是 BouncyCastle.Crypto 構建 1.8.6,而 itext.kernel 引用構建 1.8.5。 用那個版本替換解決了這個問題。

基本上,較新的 iText7 版本有 3 個引用的庫,它們必須存在於完全相同的版本中(至少要被 pythonnet 導入)。

我希望這可以幫助有類似問題的人。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM