0

如何更改 DataExport for PDF 中的列大小

我已经使用以下代码创建了 DataTable

 <p:dataTable id="tb1" var="user" value="#{userManagedBean.searchUsersResults}"
        selection="#{userManagedBean.selectedUser}" selectionMode="single"
        dynamic="true"
        onRowSelectUpdate="userUpdateForm"
        onRowUnselectUpdate="userUpdateForm"
        rowSelectListener="#{userManagedBean.onUserSelect}"
        rowUnselectListener="#{userManagedBean.onUserUnselect}"
        paginator="true" rows="5" style="width: 700" >
        <p:column sortBy="#{user.userId}" filterBy="#{user.userId}" >
            <f:facet name="header">
            <h:outputText value="Id" />
            </f:facet>
            <h:outputText value="#{user.userId}" />
        </p:column>
        <p:column sortBy="#{user.username}" filterBy="#{user.username}" >
            <f:facet name="header">
            <h:outputText value="Name" />
            </f:facet>
            <h:outputText value="#{user.username}" />
        </p:column>
        <p:column sortBy="#{user.emailId}" filterBy="#{user.emailId}">
            <f:facet name="header">
            <h:outputText value="Email" />
            </f:facet>
            <h:outputText value="#{user.emailId}" />
        </p:column>
        <p:column parser="date" sortBy="#{user.dob}" filterBy="#{user.dob}">
            <f:facet name="header">
            <h:outputText value="DOB" />
            </f:facet>
            <h:outputText value="#{user.dob}" >
                <f:convertDateTime pattern="MM/dd/yyyy" />
            </h:outputText>
       </p:column>



    </p:dataTable>

用于导出 pdf

    <h:commandLink>  
        <p:graphicImage value="/images/pdf.png" />  
        <p:dataExporter type="pdf" target="j_idt6:tb1" fileName="cars"/>  
    </h:commandLink> 

在 pdf 中,它显示所有具有相同宽度的列,但我需要按照我的定义。

4

2 回答 2

1

首先,您必须在生成 pdf 后调用 pdf.setWidths(new float[]{1,1,1,2) 在导出方法中为 Pdfs 设置自定义 PdfExporter,这将为每个前 3 列和 60% 到最后一列

于 2017-07-21T18:24:56.810 回答
0

您可以使用标签preProcessor中的postProcessor属性来自p:dataExporter定义您的文档。

PrimeFaces 展示中,您可以查看示例。

于 2012-08-09T07:01:21.187 回答