0

我正在使用 GroupDocs Viewer 获取 PDF 并为其创建 HTML 页面。我将 HTML 存储在我的 SQL2012 数据库中的 nvarchar(MAX) 字段中。我今天刚刚在一些测试中了解到,我们在文档中有一些特殊字符(连字)无法正确呈现。

问号突出显示只是为了使它们易于查找。

由于某种原因,这些连字(f,fi,ff)丢失了。我检查了我的数据库,它们似乎正确地存储在那里。

我检查了我用来加载页面的 JsonResult 服务器方法,我得到了一些混合结果,试图确定我的 pageHtml 字符串是否具有字符。

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>。不确定这是否只是因为 Text Render 没有字体或者是否还有其他问题。

在客户端,我将 html 文本存储在会话存储中,直到页面被请求,然后我将其呈现为像这样的 div。

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

我试过检查网络流量和客户端 html,但它看起来好像有?所以我不确定我在哪里失去了我的角色。有任何想法吗?

4

1 回答 1

1

JsonResult 未正确编码。我ContentEncoding = Encoding.Default 改为ContentEncoding = Encoding.UTF8. 之后它完美呈现。叹息...已经为此工作了 2.5 天。

于 2017-06-14T13:49:14.013 回答