我有hangfire(hangfire.io),它是开源作业调度程序,运行使用iText7生成pdf的作业。当我将作业作为单元测试运行时,它可以工作。当我通过hangfire运行它时,由于某种依赖性问题而出错。我没有使用任何加密,只有最基本的iText7功能。
MemoryStream newSourceMS = new MemoryStream();
PdfWriter writer = new PdfWriter(newSourceMS);
writer.SetCloseStream(false);
PdfDocument pdfDocument = new PdfDocument(writer); //ERROR HERE
错误消息是:“'iText.IO.Util.EncodingUtil'的类型初始值设定项引发了异常。”
堆栈跟踪
at iText.Kernel.Pdf.PdfEncryption.GenerateNewDocumentId()
at iText.Kernel.Pdf.PdfDocument.Open(PdfVersion newPdfVersion)
at iText.Kernel.Pdf.PdfDocument..ctor(PdfWriter writer, DocumentProperties properties)
at iText.Kernel.Pdf.PdfDocument..ctor(PdfWriter writer)
我有itext.forms.dll,itext.html2pdf.dll,itext.io.dll,itext.kernel.dll,itext.layout.dll,itext.styledxmlparser.dll,itext.svg.dll和BouncyCastle.Crypto。 BIN中的dll用于Hangfire。
缺少某些其他依赖项,我不知道是什么。
任何想法都将不胜感激。
通过添加System.Security.Crptography.Encoding,它得到了进一步的发展。可能是答案。
与编写器初始化PDFDocument时遇到类似的问题。
PdfWriter writer = new PdfWriter(outStream);
PdfDocument pdf = new PdfDocument(writer);
尝试按照建议的方式添加Cryptography.Encoding程序包,但它不起作用。