PDFIum在本地工作正常,但在Azure Functions中无法正常工作

bttbmeg0  于 2023-04-12  发布在  其他
关注(0)|答案(2)|浏览(153)

我制作了Azure Function应用程序,它使用PDFium.WindowsPDFiumSharpV2。该函数在开发机器上本地运行良好,它可以将PDF转换为图像,但在Azure上作为函数(Windows)部署时,尝试转换失败,并显示以下消息:

[Error]   Unable to find an entry point named 'FPDF_LoadCustomDocument' in DLL 'pdfium_x86'.

DLL被设置为“如果更新则复制”,发布/部署是使用Visual Studio中的发布配置文件完成的。我已经尝试了Portable和Windows-x86作为目标运行时,没有区别。日志报告x64操作系统上的x86进程。
为什么它不能在Azure上工作,但在开发机器上工作得很好?

nhjlsmyf

nhjlsmyf1#

现在问题解决了,但我不知道为什么。下面是我以前和后来为“解决”问题所做的。
我做了初始版本的函数,它只接受文件,它检查是收到的文件PDF.然后我发布,只是为了验证其他应用程序连接到功能正确使用API密钥,并得到适当的响应时,PDF被发送,当你发送无效的文件等.
然后我添加了两个提到的Nuget包。当所有更改完成后,我们在本地进行了测试,它工作得很好-测试通过,一切都按预期工作,最后一步是发布函数。
当我们在Azure上发布和测试托管函数时,问题中描述的问题已经开始。发布的ZIP内容很好,所有必需的文件都在那里,但它只是从问题中抛出错误。
经过一些搜索并试图找出发生了什么,我决定删除Azure上的Azure函数和Visual Studio中的发布配置文件。
我做了相同的发布配置文件(Azure Functions Windows,便携式,AnyCPU -基本上是默认设置),发布了函数,它刚刚开始工作,没有任何问题。为什么?我不知道。

dgsult0t

dgsult0t2#

加上上面的答案@nighthawk
什么是错误的,为什么它不会在Azure上工作,但在开发机器上工作正常。

  • 我尝试了另一种方法来实现上述要求。下面是适用于我的代码。
var doc = new Document(@"C:/Tools/Sample.pdf");

string outputPath = Environment.GetFolderPath(Environment.SpecialFolder.Desktop) + "\\MyImages\\";  
for (int page = 0; page < doc.PageCount; page++)  
{  
var extractedPage = doc.ExtractPages(page, 1);  
extractedPage.Save(outputPath+$"Output_{page + 1}.png");  
}
  • 下面是我安装的代码包using Document = Aspose.Words.Document; x1c 0d1x

  • 上面的代码在local.

    中运行良好

  • 然后,我已经成功地将代码部署到函数应用程序中。

  • 从本地路径输入。

  • 我能够实现的要求,我可以看到sample.pdf文件转换成png/image。x1c4d 1x

相关问题