java - 如何在jsf中将pdf文件中表格标题的标题字体样式设置为粗体

标签 java jsf itext

我使用 PdfPTable 将表数据转换为 pdf 文件,使用 com.itextpdf.text.pdf.PdfPTable。正在显示表格,但表格数据和标题的样式相同。为了有所不同,我必须将标题字体样式设置为粗体。有人可以帮我解决这个问题吗?我已在此处附上我的代码。

提前致谢。

import java.awt.Color;
import java.util.ArrayList;
import java.util.List;

import javax.faces.model.ListDataModel;

import com.mypackage.core.filter.domainobject.FilterResultDO;
import com.itextpdf.text.Font;
import com.itextpdf.text.FontFactory;
import com.itextpdf.text.Phrase;
import com.itextpdf.text.pdf.PdfPTable;

public class PDFGenerator {


 //This method will generate PDF for Filter Result Screen (only DataTable level)
  @SuppressWarnings("unchecked")

 public static PdfPTable generatePDF(PdfPTable table,List<FilterResultDO> filterResultDOList ,List<ColumnHeader> filterResultHeaderList )
 {
  //Initialize the table with number of columns required for the Datatable header
  int numberOfFilterLabelCols = filterResultHeaderList.size();

  //PDF Table Frame
  table =  new PdfPTable(numberOfFilterLabelCols);



     //Getting Filter Detail Table Heading
     for(int i = 0 ; i < numberOfFilterLabelCols; i++)
     {
       ColumnHeader commandHeaderObj =  filterResultHeaderList.get(i);

       table.addCell(commandHeaderObj.getLabel());


     }

     //Getting Filter Detail Data (Rows X Cols)
  FilterResultDO filterResultDOObj = filterResultDOList.get(0);



  List <List> filterResultDataList = filterResultDOObj.getFilterResultLst();
  int numberOfFilterDataRows = filterResultDataList.size();


    //each row iteration
    for(int row = 0; row < numberOfFilterDataRows; row++)
    { 
     List filterResultCols = filterResultDataList.get(row);
     int numberOfFilterDataCols = filterResultCols.size();

     //columns iteration of each row 
     for(int col = 0; col < numberOfFilterDataCols ; col++)
     { 
      String filterColumnsValues = (String) filterResultCols.get(col);

      table.addCell(filterColumnsValues);
     }
    }

  return table;
 }//generatePDF




}

最佳答案

我认为 commandHeaderObj.getLabel() 方法返回一个字符串。 您只需定义一种字体(在方法中,或作为实例属性或静态最终类属性......)

Font tableHeader = 
   FontFactory.getFont(FontFactory.HELVETICA, 10, Font.BOLD);

然后将其应用到单元格

for(int i = 0 ; i < numberOfFilterLabelCols; i++)
 {
   ColumnHeader commandHeaderObj =  filterResultHeaderList.get(i);
   Paragraph header = new Paragraph();
   header.setFont(tableHeader);
   header.add(commandHeaderObj.getLabel());
   table.addCell(header);
 }

希望这有帮助

纪尧姆

关于java - 如何在jsf中将pdf文件中表格标题的标题字体样式设置为粗体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2620942/

相关文章:

java - Android:Widget子类中的Fragmentmanager

java - JSF/Seam - 提交新组件实例?

jsf - 使用JSF时是否强制初始化 "sub-objects"?

pdf - 如何在 iText 中获取 AcroField 修订的名称?

java - itext setRotateContent 标志用法不清楚

java - 在现有 pdf 的 itext 中附加数据

java - 如何修复 java.lang.UnsupportedClassVersionError : Unsupported major. 次要版本

java - 为什么会出现这个异常呢? Lucene异常

java - ThreadLocal<AtomicInteger> 可能有用吗?

java - 寻找类似于 ui :repeat to use in a JSP 的东西