posts - 8,  comments - 1,  trackbacks - 0

          我的評論

          re: Swing不丑系列:JComboBox[未登錄] Charlie 2011-03-24 23:09  
          支持樓主
          re: 程序員小史記011[未登錄] charlie 2008-10-15 08:17  
          @青鳥
          dennis
          呵,僅僅是個公司化名,made in Singapore~~

          -------------------- 是NCS嗎?
          re: 破解 Geneious Pro 3.0.6[未登錄] charlie 2008-10-11 18:19  
          我也要一份啊!非常感謝哈!!
          Email:charlie.paradise@163.com
          re: null和字符串的恩怨 charlie 2007-11-28 15:19  
          //method for pdf

          private void generatePDF(
          HttpSession session, String fileName, DbHandler dh)
          throws SQLException, ClassNotFoundException{

          //得到pdf文件名


          try{
          //設置響應
          HttpServletResponse response = getResponse();
          response.setContentType("application/pdf");
          response.setHeader("Content-Disposition", "attachment; filename=" + fileName);

          //新建pdf文檔 ,添加許可
          Document document = new Document();
          document.addLicense(GeneralConstants.PDF_LICENSE_KEY);

          //調用方法得到頁面寬度
          int pageWidth = this.getPDFPageWidth(session);
          //調用方法得到頁面實例
          Page page = this.getPDFPageInstance(pageWidth);


          //設置相關作者 標題等信息
          HashMap navBarAccessMap = (HashMap)session.getAttribute(UserCompanyWorker.NAV_ACCESS_BEAN);
          String programName = "L5M Internal" + "\n";
          programName += this.getPDFNavBarTitle(navBarAccessMap, CATEGORY_KEY) + " - ";
          programName += this.getPDFNavBarTitle(navBarAccessMap, PROGRAM_KEY);
          String userName = DataUtil.getUserFullName(dh, getUserBean().getUserId());
          document.setAuthor(userName);
          document.setTitle(programName);


          //新建模板
          Template template = new Template();
          this.setupPDFDocumentTemplate(template, page);
          document.setTemplate(template);

          this.setupPDFHeader(session, page, programName, userName);

          //是否設置了頁腳 Footer
          boolean hasSetupFooter = false;



          Table table = this.getPDFTable(session, page);
          page.getElements().add(table);
          document.getPages().add(page);
          Table tableOF = table.getOverflowRows();
          while (tableOF != null){
          Page pageOF = this.getPDFPageInstance(pageWidth);
          pageOF.getElements().add(tableOF);
          float offsetY = tableOF.getVisibleHeight() + 65; // last table +
          // table start (used
          // for footer)
          document.getPages().add(pageOF);
          tableOF = tableOF.getOverflowRows();
          if (tableOF == null){
          this.setupPDFFooter(session, pageOF, offsetY);
          hasSetupFooter = true;
          }
          }

          if (!hasSetupFooter){
          float offsetY = table.getVisibleHeight() + 65; // last table + table
          // start
          this.setupPDFFooter(session, page, offsetY);
          }
          document.draw(response.getOutputStream());
          }
          catch (Exception e){
          e.printStackTrace();
          }
          }

          ///ok bar title
          private String getPDFNavBarTitle(HashMap navBarAccessMap, String code){
          String title = "No Title";
          if (navBarAccessMap.containsKey(code)){
          NavigationItemBean itemBean = (NavigationItemBean)navBarAccessMap.get(code);
          if (itemBean.getDisplayName() != null) title = itemBean.getDisplayName();
          }
          return title;
          }


          // ok 返回頁面寬度
          // normal ~50; large ~150
          private int getPDFPageWidth(HttpSession session){
          int pageWidth = 0;
          DataTable dataTable = (DataTable)session.getAttribute("dataTable");
          if (dataTable == null) return 0;

          DataNode[][] headerNodes = dataTable.getHeaderNodes();

          pageWidth += 150;
          pageWidth += 20;
          pageWidth += 50;

          int levelCount = headerNodes.length;
          int lastLevelIndex = levelCount - 1;
          for (int i = 0; i < headerNodes[lastLevelIndex].length; i++){
          pageWidth += 50;
          }

          return pageWidth + 100;
          }

          // ok 返回page
          private Page getPDFPageInstance(int pageWidth){
          Page page = new Page(PageSize.LETTER, PageOrientation.LANDSCAPE);
          if (pageWidth > page.getDimensions().getWidth()){
          page.getDimensions().setWidth(pageWidth);
          }
          return page;
          }
          ///ok 新建模板
          private void setupPDFDocumentTemplate(Template template, Page page)
          throws FileNotFoundException{
          float x, y, w, h;

          String token = "%%CP(1)%% of %%TP(1)%%";
          x = page.getDimensions().body.getWidth() - 100;
          y = page.getDimensions().body.getHeight() - 25;
          w = 100;
          h = 25;
          PageNumberingLabel labelPN = new PageNumberingLabel(
          token, x, y, w, h,
          com.cete.dynamicpdf.Font.getHelvetica(), 12, TextAlign.RIGHT);
          template.getElements().add(labelPN);
          }


          ///ok 設置pdf 頭
          private void setupPDFHeader(HttpSession session, Page page, String programName, String userName)
          throws FileNotFoundException{

          Label labelProgram = new Label(
          programName, 0, 0, page.getDimensions().body.getWidth() / 2, 100,
          com.cete.dynamicpdf.Font.getHelveticaBold(), 12, TextAlign.LEFT);

          String imgPath = getAppHomeDir() + "/image/";
          Image imageLogo = new Image(
          imgPath + "Inter-ViewButton_01.PNG",
          page.getDimensions().body.getWidth(), 0);
          imageLogo.setAlign(Align.RIGHT);

          Calendar cal = Calendar.getInstance();
          java.util.Date date = cal.getTime();
          SimpleDateFormat sdf = new SimpleDateFormat("M/d/yyyy");

          String strRunningInfo = this.getRunningTimeInfo(session);

          String strUserDate = " " + userName + "\n " + sdf.format(date) + "\t\t\t" + strRunningInfo;
          Label labelUserDate = new Label(
          strUserDate, 0, 28, page.getDimensions().body.getWidth(), 100,
          com.cete.dynamicpdf.Font.getHelvetica(), 10, TextAlign.LEFT);

          page.getElements().add(labelProgram);
          page.getElements().add(imageLogo);
          page.getElements().add(labelUserDate);
          }


          // ok 設置頁腳
          private void setupPDFFooter(HttpSession session, Page page, float offsetY){

          String strDB = "DB Provider: DB106 Equipment";
          Label labelDB = new Label(
          strDB, 0, offsetY, 400, 100,
          com.cete.dynamicpdf.Font.getHelvetica(), 10, TextAlign.LEFT);


          page.getElements().add(labelDB);

          }

          private Table getPDFTable(HttpSession session, Page page){
          Table table = new Table(
          0, 55, page.getDimensions().body.getWidth(),
          page.getDimensions().body.getHeight() - 80,
          com.cete.dynamicpdf.Font.getHelvetica(), 12);
          table.setBorderWidth(1);
          table.setRepeatColumnHeaderCount(4);

          this.setupPDFTableColumns(session, table);
          this.setupPDFTableHeader(session, table);
          this.setupPDFTableBody(session, table);
          return table;
          }

          private void setupPDFTableColumns(HttpSession session, Table table){
          boolean[] isDisplayingHeader = (boolean[])session.getAttribute("invoiceHeaderColumnControl");
          if (isDisplayingHeader == null) return;

          ColumnList colList = table.getColumns();
          for (int i = 0; i < isDisplayingHeader.length; i++){
          if (isDisplayingHeader[i]){
          if (i == 2) colList.add(80);
          else if (i == 4) colList.add(65);
          else if (i == 14) colList.add(65);
          else if (i == 15) colList.add(65);
          else colList.add(65);
          }
          }
          }

          private void setupPDFTableHeader(HttpSession session, Table table){
          boolean[] isDisplayingHeader = (boolean[])session.getAttribute("invoiceHeaderColumnControl");

          RowList rowList = table.getRows();
          Row row1 = rowList.add(com.cete.dynamicpdf.Font.getHelveticaBold(), PDF_FONT_SIZE);
          CellList cellList1 = row1.getCellList();

          for(int i=0; i<INVOICE_HEADER_COLUMNS.length; i++){
          if (isDisplayingHeader[i]) cellList1.add(INVOICE_HEADER_COLUMNS[i]);
          }

          for (int i = 0; i < cellList1.getCount(); i++){
          Cell cell = cellList1.getCell(i);
          cell.setAlign(CellAlign.CENTER);
          cell.setVAlign(CellVAlign.CENTER);
          }
          }

          private void setupPDFTableBody(HttpSession session, Table table){
          boolean[] isDisplayingHeader = (boolean[])session.getAttribute("invoiceHeaderColumnControl");
          List resultList = (List)session.getAttribute("displayList");
          if (isDisplayingHeader == null) return;
          if (resultList == null) return;

          RowList rowList = table.getRows();
          for (int i = 0; i < resultList.size(); i++){
          DataGroupBean bean = (DataGroupBean)resultList.get(i);

          Row row = rowList.add(com.cete.dynamicpdf.Font.getHelvetica(), PDF_FONT_SIZE);
          CellList cellList = row.getCellList();
          RgbColor rowBackground = null;
          if ((i % 2) == 0) rowBackground = new RgbColor(245, 245, 220);
          else rowBackground = new RgbColor(255, 255, 255);
          row.setBackgroundcolor(rowBackground);

          for (int j = 0; j < bean.getNumFields(); j++){
          if (isDisplayingHeader[j]){
          Object obj = bean.getField(j);
          String strValue = (obj != null) ? (bean.getField(j)).toString() : "";
          Cell cell = cellList.add(strValue);
          cell.setFontSize(PDF_FONT_SIZE);
          }
          }

          for (int k = 0; k < cellList.getCount(); k++){
          Cell cell = cellList.getCell(k);
          cell.setAlign(CellAlign.CENTER);
          cell.setVAlign(CellVAlign.CENTER);
          }
          }
          }

          private String getRunningTimeInfo(HttpSession session){
          Long longStart = (Long)session.getAttribute(CountInfoUtil.RUNNING_START_TIME);
          long valueStart = (longStart != null) ? longStart.longValue() : 0;
          Long longEnd = (Long)session.getAttribute(CountInfoUtil.RUNNING_END_TIME);
          long valueEnd = (longEnd != null) ? longEnd.longValue() : 0;

          Calendar cal = Calendar.getInstance();
          cal.setTimeInMillis(valueStart);
          SimpleDateFormat formatter2 = new SimpleDateFormat("HH:mm:ss a");
          long timeDiff = (valueEnd - valueStart) / 1000;
          long hour = timeDiff / 3600;
          long minute = timeDiff % 3600 / 60;
          long second = timeDiff % 60;

          StringBuffer sb = new StringBuffer();
          sb.append("Running Starts at ").append(formatter2.format(cal.getTime()));
          sb.append(" Duration: ");
          sb.append(hour).append("h:");
          sb.append(minute).append("m:");
          sb.append(second).append("s");
          return sb.toString();
          }

          }// class
          re: Chain of responsibility charlie 2007-11-22 11:03  
          今年的軟考,軟件設計師java大題就是這個
          請給我發一份,zqweb@tom.com,謝謝!
          re: 一個OpenSource的評價圖 Charlie 2006-11-25 09:52  
          謝謝您的圖,頂一下。。。
          re: 給每一個女孩兒(轉) charlie 2005-11-29 21:02  
          一些發自內心的話語,值得深思
          <2025年5月>
          27282930123
          45678910
          11121314151617
          18192021222324
          25262728293031
          1234567

          常用鏈接

          留言簿(1)

          隨筆檔案

          文章檔案

          搜索

          •  

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 枣阳市| 巴东县| 轮台县| 中宁县| 额济纳旗| 项城市| 垦利县| 西丰县| 克山县| 龙川县| 奉化市| 武义县| 尼木县| 读书| 四会市| 成安县| 兴文县| 长白| 确山县| 镇安县| 阳泉市| 建阳市| 商水县| 盐山县| 长兴县| 栖霞市| 孝昌县| 盐源县| 资兴市| 万盛区| 永胜县| 中江县| 双柏县| 长宁县| 英德市| 苍山县| 宁武县| 山阳县| 扶沟县| 隆尧县| 平舆县|