【问题标题】:Printing web page programmatically in Java在 Java 中以编程方式打印网页
【发布时间】:2008-10-14 09:56:44
【问题描述】:

我有一个基于 J2EE 的 Web 应用程序。

在其中一页中有一个标有“打印”的按钮。

我的问题是这样的:

用户输入工具名称,例如: 工具名称1 工具名称2 工具名3

然后点击“打印”。

预期的操作是从 db 中检索 3 个工具的工具详细信息,然后每页打印一个工具。 (即单击此按钮时,应在后台数据库检索中进行一些处理,然后将详细信息发送到打印机...)

请建议如何最好地完成打印网页的任务。

希望问题很清楚。

提前谢谢...:)

【问题讨论】:

    标签: jakarta-ee printing-web-page web-based


    【解决方案1】:

    您可以让按钮调用一些 Javascript:

    <script>
        function printPage() {
            window.print();  
        }
    </script>
    

    你可以这样称呼它:

    <form>
    <input TYPE="button" onClick="printPage()">
    </form>
    

    或直接为:

    <input TYPE="button" onClick="window.print()">
    

    如果您需要将输出格式化到多个页面上,您可以使用 page-break-before CSS 属性。例如:

    <style>
        div.tool {
            page-break-before: always
        }
    </style>
    
    <div class="tool" id="tool1">
    ...
    </div>
    <div class="tool" id="tool2">
    ...
    </div>
    

    您可以按照 Guido García 的建议将其放入“打印”特定样式表中。

    【讨论】:

    • 对不起,我想我没有把问题说清楚....在将详细信息发送到打印机之前,我需要在后台进行一些处理...该页面实际上有一些工具名称,其详细信息存储在数据库中。我需要获取详细信息并在页面中打印每个工具的详细信息
    • 我假设您不是在询问如何从数据库中检索数据。您是在问如何在不同的页面上获取每组结果?
    【解决方案2】:

    在客户端,您只需致电window.print();

    其他提示:

    • 您可以使用打印机友好的 CSS 来自定义您的页面演示:
    <link rel="stylesheet" type="text/css" media="print" href="print.css" />
    
    • 您可以使用生成 PDF 版本页面的服务器端组件。在许多情况下,深入控制最终演示文稿很有趣。

    【讨论】:

    • 谢谢。我已经修改了问题,使问题更加清晰。
    【解决方案3】:

    打印按钮应将表单提交到您准备要打印的输出(工具详细信息等)的服务器。这会像往常一样使用您的 JSP 页面或其他方式呈现。

    要完成这项工作,请在结果页面上调用window.print(),并在页面加载(或文档就绪事件)时触发它。

    编辑:嗯。我应该看看日期。哦,好吧,建议成立。

    【讨论】:

      【解决方案4】:

      我猜是在客户端?如果是这样,那么除了 JavaScript 之外,没有什么是关于 Java 的。只需调用 window.print() 方法,它就会提示一个打印对话框窗口。

      【讨论】:

      • 很抱歉,我没有把问题说清楚......已经为问题添加了更多信息......
      【解决方案5】:

      如果您要打印的页面需要额外的逻辑,您可以执行以下任一操作:

      • 在您的常规页面中包含计算数据,但将其隐藏 (style="visibility:hidden") 然后使用 print.css (media=print) 使其可见,如Guido 所述,因此仅在以下情况下显示你打印。
      • 创建一个新页面,您可以从包含计算数据的常规页面链接到该页面

      两者各有优势。

      我还建议您不要只依赖 Javascript。由于您没有运行 JS,因此无法打印打印按钮时可能会相当混乱。 我建议您创建一个常规的 html 链接,该链接指向要打印的页面,用户可以在其中使用浏览器的打印按钮。 使用 javascript 隐藏此链接并将其替换为 javascript 相关按钮。 这将确保该按钮仅在启用 javascript 时显示。

      【讨论】:

      • 谢谢 Boris 我的问题是这样的:用户输入工具名称,例如:ToolName1 ToolName2 ToolName3 然后点击“打印”。预期的操作是从 db 中检索 3 个工具的工具详细信息,然后每页打印一个工具。希望我把问题说清楚了。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-09-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多