2017-06-13 125 views
0

我正在使用GroupDocs查看器拍攝PDF併爲其創建HTML頁面。我將HTML存儲在SQL2012數據庫的nvarchar(MAX)字段中。今天我在一些測試中瞭解到,我們在文檔中沒有正確渲染某些特殊字符(連字)。存儲的Ligature HTML不會呈現

問號突出顯示,使他們很容易找到。

這些連字(FL,網絡連接,FF)缺少的某些原因。我檢查了我的數據庫,他們似乎正確地存儲在那裏。

我檢查了我用來加載頁面的JsonResult服務器方法,並且我得到了一些混合結果,試圖確定我的pageHtml字符串是否具有char。

public async Task<JsonResult> LoadDocument(int contentID, int page) 
{ 
    try 
    { 
     var documentPageData = await APIAccess.Get<DocumentPageUserData>(DocumentPageData.GetDocumentPageRoute, contentID, CurrentUser.UserID, page); 

     JsonResult result = new JsonResult() 
     { 
      ContentEncoding = Encoding.Default, 
      ContentType = "application/json", 
      Data = new 
      { 
       pageHTML = documentPageData.DocumentPage.PageHtml //.Replace("?", "fl").Replace("?", "fi").Replace("?", "ff")  //Don't like this idea 
      }, 
      JsonRequestBehavior = JsonRequestBehavior.AllowGet, 
      MaxJsonLength = int.MaxValue 
     }; 

     return result; 
    } 
    catch (Exception ex) 
    { 
     return Json(string.Format("There was an error loading the page.\r\n\r\nDetails:\r\n{0}", ex.Message), 
      JsonRequestBehavior.AllowGet); 
    } 
} 

當我將鼠標移到DocumentPage.Html上並要求將其呈現爲HTML時,它看起來很棒。然而文本渲染有一個<span>?</span>。不知道這是因爲文本渲染沒有字體或者是否存在其他問題。

在我存儲在會話存儲的HTML文本,直到頁面被請求的客戶端,然後我使其成爲像這樣一個div。

var externalHtml = sessionStorage.getItem(currentPage); 
$('.viewer').text(''); 
$('.viewer').append(externalHtml); 

我已經試過檢查網絡流量和客戶端HTML,但它看起來像它?所以我不確定我在丟失我的角色。有任何想法嗎?

+0

它看起來像您的IDE內預覽使用不同的字體比你的輸出(serif與sans-serif,分別)。輸出應該使用什麼字體?它是否可以在您的PC上使用或包含在CSS中? –

+0

好抓住。我不確定Group Docs Viewer是在從pdf創建html時嵌入字體的。我的PDF是sans-serif,但我無法確定字體是否與我錯誤渲染的字體完全匹配。問題是我無法選擇特定的字體並將其包含在內,因爲我需要用戶在PDF中使用的字體。 – JonD

+0

檢查該區域的網絡選項卡,並且跨度看起來像\ u003cspan \ u003e?\ u003c/span \ u003e似乎暗示在嘗試呈現它之前它是一個問號。也許服務器需要字體? – JonD

回答

1

JsonResult未被正確編碼。我將ContentEncoding = Encoding.Default更改爲ContentEncoding = Encoding.UTF8。之後,它完美呈現。嘆息...在這工作了2.5天。

+0

很高興你明白了:) –