2016-12-09 51 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

相關問題