【问题标题】:How to get this file prompted to the user?如何让这个文件提示给用户?
【发布时间】:2011-04-28 06:56:23
【问题描述】:

您好,我正在从事一个 MVC3 Razor 项目,我已经在这个问题上卡住了几个小时...

我正在尝试获取一个 html 到 pdf 转换器来向用户提供文档...

我想要的是以下..

一个页面被渲染和显示。在页面底部应该有一个小图标显示类似下载为 pdf 的内容。这就是我的问题所在..

我想要的所有数据都是在 $("#content").html(); 中动态创建的

所以我尝试的是一个 jquery/ajax 函数,将 $("#content").html(); 作为参数传递给创建 pdf 的函数(有效,但我不知道如何将创建的文件提示给用户?)

其他解决方案是@(Html.ActionLink()),但我不知道如何在该链接中传递数据($("#content").html())

当尝试使用转换器来访问 url 的功能是死路一条,因为它有自己的会话并被重定向到登录页面..

如有任何帮助,我们将不胜感激!

【问题讨论】:

    标签: c# jquery ajax asp.net-mvc-3 pdf-conversion


    【解决方案1】:

    我不熟悉 JavaScript,但是如果您首先通过调用 Web 服务方法将 PDF 保存在临时文件中,然后在完成后您可以使用 JavaScript 导航到生成的 PDF 将返回为的 URL内容。

    【讨论】:

    • 想到了这个,但把它作为最后的选择,因为我宁愿不在服务器上存储文件。
    【解决方案2】:

    由于XmlHTTPRequest 对象无法处理除htmltextjsonjsonpxml 之外的数据类型,因此您需要重定向到 pdf 位置。

    我不确定您在 Ajax 请求中到底在做什么,但是一旦完成,您就可以将窗口(Form-Action)重定向到创建的 PDF 的位置。这实际上不会重定向浏览器,而只会提示保存文件。

    【讨论】:

    • $("#getPDF").click(function () { var data = $(".page").html(); $.ajax({ type: "POST", url: '@Url.Action("getPDF", "Core")', data: "data=" + data, async: false, success: function (data) { } }); });
    • 我的主要希望是能够将文件放在响应标头中并提供服务。但这只能通过actionlink获得,然后我不知道如何传递数据。
    • 你可以试试window.open('Controller/Action/')。这将在该窗口/选项卡中加载提示或加载 pdf。只是一个建议.. 如果这对您的方案有帮助。
    【解决方案3】:

    为什么只创建一个函数,将创建的 PDF(在 ajax 请求期间)作为文件结果返回,然后在 ajax 请求成功完成后将窗口的位置设置为指向此操作?

    编辑:这意味着您不会将 PDF 保存在任何地方。因此,解决方法是使用此jquery download plugin 或动态附加 iframe,然后通过它发布数据。希望这可以帮助。

    【讨论】:

    • 嗯听起来很合理,但我该怎么做呢?我的意思是我使用 jquery 来传递数据,文件是在函数中创建的,但随后卡在那里(我希望不必在本地保存文件)。
    【解决方案4】:

    想出了一个解决方法,我所做的是为我的 HtmlHelper 编写一个扩展,并使用它来将我的控件呈现为 html 字符串而不是视图。因此,我可以使用 actionlink 来渲染此页面并以这种方式获取所有 html 数据。

    http://msug.vn.ua/Posts/Details/3301

    感谢您的帮助!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-12-31
      • 1970-01-01
      • 2017-06-02
      • 2016-05-19
      • 2021-12-15
      • 2012-01-17
      • 1970-01-01
      相关资源
      最近更新 更多