2016-12-09 75 views
1

在本地运行此工程在ASP.NET MVC应用程序,但不PDFsharp生成Azure的空白页,但在Azure上部署时,本地工作

Document doc = new Document(); 
Section section = doc.AddSection(); 
section.AddParagraph("Some text to go into a PDF");   
PdfDocumentRenderer pdfRenderer = new PdfDocumentRenderer(false, PdfFontEmbedding.Always); 
pdfRenderer.Document = doc; 
pdfRenderer.RenderDocument(); 
System.IO.MemoryStream stream = new System.IO.MemoryStream(); 
pdfRenderer.PdfDocument.Save(stream, false); 
Byte[] documentBytes = stream.ToArray(); 

return File(documentBytes, "application/pdf"); 

在本地,我得到一个不错的PDF。在Azure上,我得到一个空白的PDF。我没有看到任何抛出的异常或其他错误消息。我发现了一些SO答案,说明PDFsharp的GDI版本不适用于Azure,所以我使用WPF版本 - 相同的结果。

我发现这太问题,但我不清楚如何将它应用到一个MVC应用程序:Why is MigraDoc generating a blank pdf in my asp.net application?

很抱歉,如果这是一个明显的问题,我只是卡住了!

+1

当你说这是部署到Azure中,我假设这是Azure应用程序服务(Web应用程序),如果是的话,你在哪个层上运行?您可能需要使用Basic或更高版本才能使用此工作 –

+0

是否与订阅相关的层?现在我正在使用免费试用订阅...是我的全部问题在这里? –

+1

与订阅无关。您可以在您的网络应用程序计划中检查您的层。由于受沙箱限制,这只适用于Basic及以上版本,即**如果可以使用**,因为GDI的使用受到限制,只有少数库可以正常使用这些限制。 –

回答

1

这可能是一个字体问题,如果一个完整的PDF到达客户端(我在评论中询问构造但尚未得到答案)。

PDFsharp必须有权访问TTF文件以提取信息。是在%windir%\ fonts文件夹中使用的字体,并且您的进程是否有权读取它们?

Azure是IFontResolver的候选人,因为缺少许多字体,通常不会授予权限。

使用IFontResolver可以使PDFsharp直接访问TTF文件(如字节[])。

你可以用我的类EZFontResolver用于这一目的:
http://developer.th-soft.com/developer/2015/12/11/ezfontresolver-a-generic-font-resolver-for-pdfsharp-and-migradoc/

我也有一个示例,演示如何实现自己的IFontResolver:
http://developer.th-soft.com/developer/2015/09/21/using-private-fonts-with-pdfsharp-1-50-beta-2-or-migradoc/

+0

我在问题*中说*我得到一个完整但空白的PDF。感谢这个信息,我会试试看。 –

+1

@RobertM。你在问题中写了_blank PDF_。既然你链接到另一个问题,显然这个问题与不使用_Flush_或_Seek_有关,我想确保问题与创建的PDF文件的不完整传输无关。 –

+0

当你使用你的EZFontResolver类时,你把字体文件放在哪里?如果它放在VS解决方案中的文件夹中,当我发布时它会添加到路径中吗? 此外,我现在没有收到任何类型的错误消息或异常,并且字体文件夹中有字体... –

-2

很可能是因为Azure处理内存流的方式不同。我建议在写入之前寻求流的开始(stream.Seek(0, SeekOrigin.Begin)),并使用过载File(Stream, string)MemoryStream继承Stream,以便您可以直接传递它)。

让我知道这是否有帮助。

+0

啊,我明白了。也许我应该想出如何将PDF保存到数据库并将其作为文件提供,但是我会先尝试您的建议。 –

+0

我尝试了你的建议。它仍然以一个空白的PDF回来。 –

+0

尝试先保存PDF。显然,这不是一个主意的解决方案,但它应该可以帮助您找出发生问题的位置。也许你的服务器安装了不同版本的库(PDFSharp)。 – Extragorey

相关问题