如何在java中点击包含所选数据的链接生成PDF?

问题描述 投票:0回答:1

我有一个表单,在页面上显示10个ID。基于id,我可以获得用户名,角色,配置文件等。现在,如果我选择5个ID然后单击名为PRINT的标签,那么它应该下载一个PDF,其中将显示这些带有名称的5个ID。但是,在我的情况下,它不打印任何东西或方法没有获得动作和ID。 Action或lblpdfgenerator类没有问题。问题在于功能:

这是我的JSP:

<s:if test="hasActionMessages()">
    <div class="alert alert-success">
        <i class="fa fa-check-square"></i>
        <s:actionmessage />             
        <s:if test="Count > 0">
            <a href="javascript:void();" id='addressLabel' class="printLbl"  onclick="PrintLabel()"
                    style="text-decoration: underline; font-weight: bolder; margin-left: 20px; color: blue;">Print
                    Label                                   
                    </a>                                        
        </s:if>                     

   <s:hidden id="docId" name="docId" value="%{docList}"></s:hidden>  
</div>

<div id="pdf-modal" class="modal fade" tabindex="-1" role="dialog" aria-labelledby="pdfModal" aria-hidden="true">
        <div class="modal-dialog modal-lg">
            <div class="modal-content">
                <div class="modal-header">
                    <button type="button" class="close" data-dismiss="modal"
                        aria-hidden="true">Close</button>
                    <h4 class="modal-title" id="myModalLabel">Print Label</h4>
                </div>
                <div class="modal-body"  id="iframed"></div>
                <div class="modal-footer">
                 <button type="button" class="btn btn-default"
                  data-dismiss="modal">Close</button>
               </div>
            </div>
        </div>
    </div>  

function PrintLabel(){
        docId= $("#docId").val();
        /*  $.get("printlabelgenerate", {DocList : docId},  function(data) {
     $("#iframed").empty();
       $("#pdf-modal").modal('show');
      }); */
       $("#iframed").empty();
       $("#pdf-modal").modal('show');
       $("#iframed").append('<iframe src="#" width="100%" height="600px" frameborder="1" scrolling="auto" id="pdf_framesrno"></iframe>');
       $("#pdf_framesrno").attr("src","printlabelgenerate?docId=" +  docId);
       return false;
       } 

printlabelgenerate是我的行动。

动作类。

public String printLabel() throws Exception {
        lbList = new ArrayList<LabelPrint>();
        logger.info("Reached inside printLabel() method"+DocList);
        String[] total= DocList.split(",");
        for (String docId : total) {
        lbPrint = userService.getPrintLabel(docId); 
                ByteArrayOutputStream bs = LblPDFGenerator.createPDF(lbPrint,docId);
                myStream== = new ByteArrayInputStream(bs.toByteArray());
                if (myStream== null) {
                    this.addActionMessage("Not Generated");
                    return INPUT;
                }
                return SUCCESS;
            }

如果我像这样调用它,我的动作因此方法被调用。但它没有下载任何东西。

function PrintLabel(){
        docId= $("#docId").val();
         $.get("printlabelgenerate", {DocList : docId},  function(data) {
     $("#iframed").empty();
       $("#pdf-modal").modal('show');
      }); 
       $("#iframed").empty();
       $("#pdf-modal").modal('show');
       $("#iframed").append('<iframe src="#" width="100%" height="600px" frameborder="1" scrolling="auto" id="pdf_framesrno"></iframe>');
       $("#pdf_framesrno").attr("src","printlabelgenerate?docId=" +  docId);
       return false;
       } 

但是,如果只是这样打电话(在上面评论):

$("#iframed").append('<iframe src="#" width="100%" height="600px" frameborder="1" scrolling="auto" id="pdf_framesrno"></iframe>');
       $("#pdf_framesrno").attr("src","printlabelgenerate?docId=" +  docId);
       return false;
       } 

这没有进入我的print方法,因为它没有得到任何id。如何下载PDF?我究竟做错了什么?

java spring jsp itext
1个回答
0
投票

您是否尝试过使用Primefaces Extensions Document Viewer库,有一个很好的简单示例,可以创建具有下载功能的PDF Viewer等等。

例:

<pe:documentViewer value="#{yourViewBean.content}" download="YourPdfFile.pdf"/>
© www.soinside.com 2019 - 2024. All rights reserved.