gpt4 book ai didi

java - 使用 pdf 模块在 playframework 中生成 pdf 报告

转载 作者:行者123 更新时间:2023-12-01 15:41:47 26 4
gpt4 key购买 nike

我在 playframework 应用程序中生成报告 (pdf) 时遇到问题。我安装了 pdf 0.7 模块。

我需要在网页中向用户显示产品列表、其价格和销售总额。如果用户愿意,他应该能够生成 pdf 报告我想在网页上为用户提供一个链接,单击该链接将打开一个包含格式化数据的 pdf 文档。用户可以将其保存在任何所需的位置。

我向模板发送了一个包含名称 Product 实例及其数量的 HashMap。根据此信息,我可以计算单个价格、总价等并呈现为表格。现在,必须将其放入 pdf 中。为此,我调用一个 Controller 方法(例如 createReport(...))并传递相同的 HashMap。 Controller 方法,我必须以某种方式格式化信息并使用 renderPDF() 进行渲染。

所以,我来回发送 HashMap,我想知道这是否是正确的方法..

请指教。

Crtlr.java代码片段:

public static void showListings(){
HashMap<Product,Integer> map = createProductQtyMap();
render(map);
}

showListings 模板片段:

<table>
#{list items:map.keySet() , as:'product'}
<tr>
<td>${product.getName()} </td>
<td>${map.get(product)} </td>
<td>${product.price} </td>
<td>${product.price * map.get(product)} </td>
</tr>
#{/list}
</table>
...
<a href="@{Ctrlr.createReport(map)}">create report</a>

Ctrlr.java

public static void createReport(HashMap<Product,Integer> map){
StringBuffer html=new StringBuffer("<html><body>");
//iterate thru map and create table rows as done in template
html.append("</body></html>");

String title= "my report";
play.modules.pdf.PDF.renderPDF(html.toString(),title);

}

在createReport模板中

...
<div id="report">
${html.raw()}
</div>

最佳答案

除非我误解了您的要求,否则这不是正确的方法。我相信您应该执行以下操作。

public static void createReport() {
String title = "my report";
HashMap<Product,Integer> map = createProductQtyMap();
play.modules.pdf.PDF.renderPDF(map,title);
}

在 createReport 模板中,您只需像任何其他 HTML View 一样进行渲染,因此您可以从 showListings 中复制并粘贴代码。如果您想简单地重用相同的 View ,请确保您的链接、图像、CSS 等设置为绝对路径,并确保 CSS 不是仅从 SCREEN 设置。

关于java - 使用 pdf 模块在 playframework 中生成 pdf 报告,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7929860/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com