我在两个不同的环境(Azure和本地计算机)中设置了一个.NET函数。
使用相同的输入参数执行它会得到不同的结果。它在本地计算机上成功,但遇到错误(OverflowException。阵列尺寸超出了azure工作站上支持的范围)。
是环境还是不正确的代码是更可能的原因?如果是前者,那么应该注意哪些环境设置?
使用Syncfusion 21.2.3将docx转换为pdf的代码
[Function("ConvertDocxToPdf")]
public HttpResponseData ConvertDocxToPdf([HttpTrigger(AuthorizationLevel.Anonymous, "get", "post")] HttpRequestData req)
{
//Gets the input Word document as stream from request
Stream stream = req.Body;
//Loads an existing Word document
WordDocument document = new WordDocument(stream);
document.Background.Type = BackgroundType.NoBackground;
document.ChartToImageConverter = new Syncfusion.OfficeChartToImageConverter.ChartToImageConverter();
document.AcceptChanges();
//Creates an instance of the DocToPDFConverter
DocToPDFConverter converter = new DocToPDFConverter();
converter.Settings = new DocToPDFConverterSettings()
{
EmbedFonts = true,
RecreateNestedMetafile = true
};
//Converts Word document into PDF document
PdfDocument pdfDocument = converter.ConvertToPDF(document);
//Releases the resources occupied by DocToPDFConverter instance
converter.Dispose();
//Closes the Word document
document.Close();
MemoryStream memoryStream = new MemoryStream();
//Saves the PDF file
pdfDocument.Save(memoryStream);
//Closes the PDF document
pdfDocument.Close();
//Reset the memory stream position
memoryStream.Position = 0;
//Create the response to return
HttpResponseData response = HttpResponseData.CreateResponse(req);
response.Body = memoryStream;
return response;
}
1条答案
按热度按时间hkmswyz61#
是的,错误是由环境差异引起的。
错误消息显示数组维度超出了支持的范围,这可能是由大型文档引起的。
通过将输入文档分割成更小的块并单独处理它们也可以解决这个问题。
能够成功转换本地和Azure。
我用了同步融合NuGets
有关详细信息,请参阅Syncfusion Blog和MSDoc.