﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>语源科技BlogJava-charlielogic</title><link>http://www.blogjava.net/charlielogic/</link><description>charlielogic</description><language>zh-cn</language><lastBuildDate>Sun, 12 Apr 2026 06:05:09 GMT</lastBuildDate><pubDate>Sun, 12 Apr 2026 06:05:09 GMT</pubDate><ttl>60</ttl><item><title>StringTokenizer</title><link>http://www.blogjava.net/charlielogic/archive/2007/12/03/164888.html</link><dc:creator>charlie</dc:creator><author>charlie</author><pubDate>Mon, 03 Dec 2007 07:35:00 GMT</pubDate><guid>http://www.blogjava.net/charlielogic/archive/2007/12/03/164888.html</guid><wfw:comment>http://www.blogjava.net/charlielogic/comments/164888.html</wfw:comment><comments>http://www.blogjava.net/charlielogic/archive/2007/12/03/164888.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/charlielogic/comments/commentRss/164888.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/charlielogic/services/trackbacks/164888.html</trackback:ping><description><![CDATA[<p>import java.util.StringTokenizer;<br />
public class JusTest {<br />
&nbsp; public static void main(String[] main)<br />
&nbsp; {</p>
<p>&nbsp;String key = "a_charlie_logic";<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp; StringTokenizer st = new StringTokenizer(key, "_");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp; String str1=st.nextToken();&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp; System.out.println(str1);<br />
&nbsp;&nbsp;&nbsp; System.out.println(st.countTokens());<br />
&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp; String str2=st.nextToken();<br />
&nbsp;&nbsp;&nbsp; System.out.println(str2);<br />
&nbsp;&nbsp;&nbsp; System.out.println(st.countTokens());<br />
&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp; String str3=st.nextToken();&nbsp; <br />
&nbsp;&nbsp;&nbsp; System.out.println(str3);<br />
&nbsp;&nbsp;&nbsp; System.out.println(st.countTokens());<br />
&nbsp;&nbsp;&nbsp; <br />
&nbsp;<br />
&nbsp;<br />
&nbsp;<br />
&nbsp;<br />
&nbsp;}<br />
}</p>
<img src ="http://www.blogjava.net/charlielogic/aggbug/164888.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/charlielogic/" target="_blank">charlie</a> 2007-12-03 15:35 <a href="http://www.blogjava.net/charlielogic/archive/2007/12/03/164888.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>在java 中用 DynamicPDF 能支持中文吗? 如何做 </title><link>http://www.blogjava.net/charlielogic/archive/2007/11/28/163754.html</link><dc:creator>charlie</dc:creator><author>charlie</author><pubDate>Wed, 28 Nov 2007 09:28:00 GMT</pubDate><guid>http://www.blogjava.net/charlielogic/archive/2007/11/28/163754.html</guid><wfw:comment>http://www.blogjava.net/charlielogic/comments/163754.html</wfw:comment><comments>http://www.blogjava.net/charlielogic/archive/2007/11/28/163754.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/charlielogic/comments/commentRss/163754.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/charlielogic/services/trackbacks/163754.html</trackback:ping><description><![CDATA[<div title="Print Page Break" style="font-size: 1px; page-break-before: always; vertical-align: middle; height: 1px; background-color: #c0c0c0">&nbsp; </div>
<h2><a id="viewpost1_TitleUrl" href="http://www.blogjava.net/charlielogic/articles/163751.html">在java 中用 DynamicPDF 能支持中文吗? 如何做</a> </h2>
<div>2007年11月28日<br />
<br />
<div class="p90">
<div class="f14 B wr">在java 中用 DynamicPDF 能支持中文吗?</cq></div>
<div class="wr">&nbsp;</div>
<div class="wr f14"><cd>最近再用DynamicPDF 组件输出pdf格式的报表.但是中文编码后就被过滤了.谁遇到过这个问题并且解决的请回答. <br />
<br />
不懂的请不好回答.谢谢</cd></div>
<div class="wr f14"><span id="suplycontent"><strong>问题补充：</strong>过滤的意思是中文直接不显示了 <br />
<br />
设置了 <br />
response.setContentType("application/pdf;charset=gb2312"); <br />
<br />
中文处理成这样 <br />
String test = bean.getField(j).toString(); <br />
<br />
if(test==null)test=""; <br />
<br />
String str = new String(test.getBytes("ISO-8859-1"), <br />
"gb2312"); <br />
<br />
Cell cell = cellList.add(str);</span></div>
</div>
</div>
<img src ="http://www.blogjava.net/charlielogic/aggbug/163754.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/charlielogic/" target="_blank">charlie</a> 2007-11-28 17:28 <a href="http://www.blogjava.net/charlielogic/archive/2007/11/28/163754.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>一起来导出pdf</title><link>http://www.blogjava.net/charlielogic/archive/2007/11/28/163645.html</link><dc:creator>charlie</dc:creator><author>charlie</author><pubDate>Wed, 28 Nov 2007 03:19:00 GMT</pubDate><guid>http://www.blogjava.net/charlielogic/archive/2007/11/28/163645.html</guid><wfw:comment>http://www.blogjava.net/charlielogic/comments/163645.html</wfw:comment><comments>http://www.blogjava.net/charlielogic/archive/2007/11/28/163645.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/charlielogic/comments/commentRss/163645.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/charlielogic/services/trackbacks/163645.html</trackback:ping><description><![CDATA[<p><font size="3">first of all 准备: --------------------------</font></p>
<p>1.能运行J2EE的开发环境</p>
<p>2. 库文件 DynamicPDF.jar</p>
<p>3.工具(电脑,人脑)</p>
<p><font size="3">second开始:------------------------------</font></p>
<p>一.JSP页面</p>
<p>&nbsp;</p>
<p>1.写一个简单的JS 函数 <font color="#339966">clickButton</font></p>
<p><font color="#339966"><font color="#808000">function clickButton(button){<br />
document.InvoiceDisplayForm.&lt;%=ac.getProperty("butOption")%&gt;.value = button;<br />
document.InvoiceDisplayForm.submit();<br />
}</font> </font></p>
<p>&nbsp;</p>
<p>2.加一个隐含变量</p>
<p><font color="#ff9900">&lt;input type="hidden" name="&lt;%=ac.getProperty("butOption")%&gt;" value=""&gt;</font></p>
<p>3.合适的位置加上这个就ok啦</p>
<p><font color="#339966">&lt;a href="javascript:clickButton('export2Pdf')"&gt;</font></p>
<p><font color="#0000ff">&lt;img align="absmiddle" src="/internal/image/gif/pdficon.gif" width="18" height="18" border="0"&gt;</font></p>
<p><font color="#800080">(这是图片连接,可以换成文字&nbsp;&nbsp; <font color="#800000">[导出为pdf]</font>&nbsp;&nbsp; )</font></p>
<p><font color="#339966">&lt;/a&gt;</font></p>
<p>&nbsp;</p>
<p>二.worker部分 ( 定义类时加上属性 private AppConfig ac;)</p>
<p>1. 导入包</p>
<p>&nbsp;&nbsp; // packages for pdf<br />
import com.l5m.internal.bean.*;<br />
import com.l5m.internal.util.*;<br />
import com.cete.dynamicpdf.PageSize;<br />
import com.cete.dynamicpdf.pageelements.Label;<br />
import com.cete.dynamicpdf.pageelements.CellList;<br />
import com.cete.dynamicpdf.Align;<br />
import com.cete.dynamicpdf.TextAlign;<br />
import java.io.FileNotFoundException;<br />
import com.cete.dynamicpdf.pageelements.RowList;<br />
import com.cete.dynamicpdf.PageOrientation;<br />
import com.cete.dynamicpdf.pageelements.Cell;<br />
import com.cete.dynamicpdf.pageelements.ColumnList;<br />
import com.cete.dynamicpdf.Page;<br />
import com.cete.dynamicpdf.pageelements.Image;<br />
import com.cete.dynamicpdf.Template;<br />
import com.cete.dynamicpdf.RgbColor;<br />
import java.text.SimpleDateFormat;<br />
import com.cete.dynamicpdf.pageelements.PageNumberingLabel;<br />
import com.cete.dynamicpdf.pageelements.Table;<br />
import com.cete.dynamicpdf.pageelements.Row;<br />
import com.cete.dynamicpdf.Document;<br />
import com.cete.dynamicpdf.pageelements.CellAlign;<br />
import com.cete.dynamicpdf.pageelements.CellVAlign;</p>
<p>&nbsp;</p>
<p>2.JSP里面鼠标点击处理函数</p>
<p>public void processDisplayMode(HttpServletRequest request,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; HttpSession session,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; DbHandler dh) throws<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SQLException, ClassNotFoundException {</p>
<p>AppConfig ac = AppConfig.getInstance();</p>
<p>String butClicked = request.getParameter(ac.getProperty("butOption")) != null ?<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; request.getParameter(ac.getProperty("butOption")) : "";</p>
<p>if (butClicked.equals("export2Pdf")){<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; String filePath = getAppHomeDir() + ac.getProperty("curvePath");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; String fileName = this.getUserId() + System.currentTimeMillis() + ".pdf";<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; this.generatePDF(session, fileName, dh);<br />
&nbsp;&nbsp;&nbsp; }</p>
<p>}</p>
<p>&nbsp;</p>
<p>3.pdf具体的处理方法 generatePDF()</p>
<p>private void generatePDF(<br />
&nbsp;&nbsp;&nbsp; HttpSession session, String fileName, DbHandler dh)<br />
&nbsp;&nbsp;&nbsp; throws SQLException, ClassNotFoundException{</p>
<p>&nbsp;&nbsp;&nbsp; try{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; HttpServletResponse response = getResponse();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; response.setContentType("application/pdf");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; response.setHeader("Content-Disposition", "attachment; filename=" + fileName);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Document document = new Document();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; document.addLicense(GeneralConstants.PDF_LICENSE_KEY);</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int pageWidth = this.getPDFPageWidth(session);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Page page = this.getPDFPageInstance(pageWidth);</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; HashMap navBarAccessMap = (HashMap)session.getAttribute(<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; UserCompanyWorker.NAV_ACCESS_BEAN);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; String programName = "L5M Internal" + "\n";<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; programName += this.getPDFNavBarTitle(navBarAccessMap, CATEGORY_KEY) + " - ";<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; programName += this.getPDFNavBarTitle(navBarAccessMap, PROGRAM_KEY);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; String userName = DataUtil.getUserFullName(dh, getUserBean().getUserId());<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; document.setAuthor(userName);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; document.setTitle(programName);</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Template template = new Template();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; this.setupPDFDocumentTemplate(template, page);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; document.setTemplate(template);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; this.setupPDFHeader(session, page, programName, userName);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; boolean hasSetupFooter = false;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Table table = this.getPDFTable(session, page);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; page.getElements().add(table);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; document.getPages().add(page);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Table tableOF = table.getOverflowRows();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; while (tableOF != null){<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Page pageOF = this.getPDFPageInstance(pageWidth);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; pageOF.getElements().add(tableOF);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; float offsetY = tableOF.getVisibleHeight() + 65; // last table +<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // table start (used<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // for footer)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; document.getPages().add(pageOF);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; tableOF = tableOF.getOverflowRows();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (tableOF == null){<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; this.setupPDFFooter(session, pageOF, offsetY);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; hasSetupFooter = true;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (!hasSetupFooter){<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; float offsetY = table.getVisibleHeight() + 65; // last table + table<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // start<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; this.setupPDFFooter(session, page, offsetY);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; document.draw(response.getOutputStream());<br />
&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp; catch (Exception e){<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; e.printStackTrace();<br />
&nbsp;&nbsp;&nbsp; }<br />
}</p>
<p>private String getPDFNavBarTitle(HashMap navBarAccessMap, String code){<br />
&nbsp;&nbsp;&nbsp; String title = "No Title";<br />
&nbsp;&nbsp;&nbsp; if (navBarAccessMap.containsKey(code)){<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; NavigationItemBean itemBean = (NavigationItemBean)navBarAccessMap.get(code);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (itemBean.getDisplayName() != null) title = itemBean.getDisplayName();<br />
&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp; return title;<br />
}</p>
<p>// normal ~50; large ~150<br />
private int getPDFPageWidth(HttpSession session){<br />
&nbsp;&nbsp;&nbsp; int pageWidth = 0;<br />
&nbsp;&nbsp;&nbsp; DataTable dataTable = (DataTable)session.getAttribute("dataTable");<br />
&nbsp;&nbsp;&nbsp; if (dataTable == null) return 0;</p>
<p>&nbsp;&nbsp;&nbsp; DataNode[][] headerNodes = dataTable.getHeaderNodes();</p>
<p>&nbsp;&nbsp;&nbsp; pageWidth += 150;<br />
&nbsp;&nbsp;&nbsp; pageWidth += 20;<br />
&nbsp;&nbsp;&nbsp; pageWidth += 50;</p>
<p>&nbsp;&nbsp;&nbsp; int levelCount = headerNodes.length;<br />
&nbsp;&nbsp;&nbsp; int lastLevelIndex = levelCount - 1;<br />
&nbsp;&nbsp;&nbsp; for (int i = 0; i &lt; headerNodes[lastLevelIndex].length; i++){<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; pageWidth += 50;<br />
&nbsp;&nbsp;&nbsp; }</p>
<p>&nbsp;&nbsp;&nbsp; return pageWidth + 100;<br />
}</p>
<p>private Page getPDFPageInstance(int pageWidth){<br />
&nbsp;&nbsp;&nbsp; Page page = new Page(PageSize.LETTER, PageOrientation.LANDSCAPE);<br />
&nbsp;&nbsp;&nbsp; if (pageWidth &gt; page.getDimensions().getWidth()){<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; page.getDimensions().setWidth(pageWidth);<br />
&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp; return page;<br />
}</p>
<p>private void setupPDFDocumentTemplate(Template template, Page page)<br />
&nbsp;&nbsp;&nbsp; throws FileNotFoundException{<br />
&nbsp;&nbsp;&nbsp; float x, y, w, h;</p>
<p>&nbsp;&nbsp;&nbsp; String token = "%%CP(1)%% of %%TP(1)%%";<br />
&nbsp;&nbsp;&nbsp; x = page.getDimensions().body.getWidth() - 100;<br />
&nbsp;&nbsp;&nbsp; y = page.getDimensions().body.getHeight() - 25;<br />
&nbsp;&nbsp;&nbsp; w = 100;<br />
&nbsp;&nbsp;&nbsp; h = 25;<br />
&nbsp;&nbsp;&nbsp; PageNumberingLabel labelPN = new PageNumberingLabel(<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; token, x, y, w, h,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; com.cete.dynamicpdf.Font.getHelvetica(), 12, TextAlign.RIGHT);<br />
&nbsp;&nbsp;&nbsp; template.getElements().add(labelPN);<br />
}</p>
<p>private void setupPDFHeader(<br />
&nbsp;&nbsp;&nbsp; HttpSession session, Page page, String programName, String userName)<br />
&nbsp;&nbsp;&nbsp; throws FileNotFoundException{</p>
<p>&nbsp;&nbsp;&nbsp; Label labelProgram = new Label(<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; programName, 0, 0, page.getDimensions().body.getWidth() / 2, 100,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; com.cete.dynamicpdf.Font.getHelveticaBold(), 12, TextAlign.LEFT);</p>
<p>&nbsp;&nbsp;&nbsp; String imgPath = getAppHomeDir() + "/image/";<br />
&nbsp;&nbsp;&nbsp; Image imageLogo = new Image(<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; imgPath + "Inter-ViewButton_01.PNG",<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; page.getDimensions().body.getWidth(), 0);<br />
&nbsp;&nbsp;&nbsp; imageLogo.setAlign(Align.RIGHT);</p>
<p>&nbsp;&nbsp;&nbsp; Calendar cal = Calendar.getInstance();<br />
&nbsp;&nbsp;&nbsp; java.util.Date date = cal.getTime();<br />
&nbsp;&nbsp;&nbsp; SimpleDateFormat sdf = new SimpleDateFormat("M/d/yyyy");</p>
<p>&nbsp;&nbsp;&nbsp; String strRunningInfo = this.getRunningTimeInfo(session);</p>
<p>&nbsp;&nbsp;&nbsp; String strUserDate = " " + userName + "\n " + sdf.format(date) + "\t\t\t" + strRunningInfo;<br />
&nbsp;&nbsp;&nbsp; Label labelUserDate = new Label(<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; strUserDate, 0, 28, page.getDimensions().body.getWidth(), 100,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; com.cete.dynamicpdf.Font.getHelvetica(), 10, TextAlign.LEFT);</p>
<p>&nbsp;&nbsp;&nbsp; page.getElements().add(labelProgram);<br />
&nbsp;&nbsp;&nbsp; page.getElements().add(imageLogo);<br />
&nbsp;&nbsp;&nbsp; page.getElements().add(labelUserDate);<br />
}</p>
<p>private void setupPDFFooter(HttpSession session, Page page, float offsetY){</p>
<p>&nbsp;&nbsp;&nbsp; String strDB = "DB Provider: Fifth";<br />
&nbsp;&nbsp;&nbsp; Label labelDB = new Label(<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; strDB, 0, offsetY, 400, 100,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; com.cete.dynamicpdf.Font.getHelvetica(), 10, TextAlign.LEFT);</p>
<p>&nbsp;&nbsp;&nbsp; List selRecordType = (List)session.getAttribute("selRecordType");<br />
&nbsp;&nbsp;&nbsp; String strRecordType = "Record Types: ";<br />
&nbsp;&nbsp;&nbsp; for (int i = 0; i &lt; PBRRawCountWorker.RECORD_TYPE.length; i++){<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (selRecordType.contains(i + "")){<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; strRecordType += PBRRawCountWorker.RECORD_TYPE[i] + " ";<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp; }</p>
<p>&nbsp;&nbsp;&nbsp; Label labelRecordType = new Label(<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; strRecordType, 0, offsetY + 10, 400, 100,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; com.cete.dynamicpdf.Font.getHelvetica(), 10, TextAlign.LEFT);</p>
<p>&nbsp;&nbsp;&nbsp; page.getElements().add(labelDB);<br />
&nbsp;&nbsp;&nbsp; page.getElements().add(labelRecordType);<br />
}</p>
<p>private Table getPDFTable(HttpSession session, Page page){<br />
&nbsp;&nbsp;&nbsp; Table table = new Table(<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0, 55, page.getDimensions().body.getWidth(),<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; page.getDimensions().body.getHeight() - 80,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; com.cete.dynamicpdf.Font.getHelvetica(), 12);<br />
&nbsp;&nbsp;&nbsp; table.setBorderWidth(1);<br />
&nbsp;&nbsp;&nbsp; table.setRepeatColumnHeaderCount(4);</p>
<p>&nbsp;&nbsp;&nbsp; this.setupPDFTableColumns(session, table);<br />
&nbsp;&nbsp;&nbsp; this.setupPDFTableHeader(session, table);<br />
&nbsp;&nbsp;&nbsp; this.setupPDFTableBody(session, table);<br />
&nbsp;&nbsp;&nbsp; return table;<br />
}</p>
<p>private void setupPDFTableColumns(HttpSession session, Table table){<br />
&nbsp;&nbsp;&nbsp; DataTable dataTable = (DataTable)session.getAttribute("dataTable");<br />
&nbsp;&nbsp;&nbsp; if (dataTable == null) return;</p>
<p>&nbsp;&nbsp;&nbsp; DataNode[][] headerNodes = dataTable.getHeaderNodes();</p>
<p>&nbsp;&nbsp;&nbsp; ColumnList colList = table.getColumns();<br />
&nbsp;&nbsp;&nbsp; colList.add(150);<br />
&nbsp;&nbsp;&nbsp; colList.add(60);<br />
&nbsp;&nbsp;&nbsp; colList.add(50);</p>
<p>&nbsp;&nbsp;&nbsp; int levelCount = headerNodes.length;<br />
&nbsp;&nbsp;&nbsp; int lastLevelIndex = levelCount - 1;<br />
&nbsp;&nbsp;&nbsp; for (int i = 0; i &lt; headerNodes[lastLevelIndex].length; i++){<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; colList.add(50);<br />
&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp; colList.add(50);<br />
}</p>
<p>private void setupPDFTableHeader(HttpSession session, Table table){<br />
&nbsp;&nbsp;&nbsp; DataTable dataTable = (DataTable)session.getAttribute("dataTable");<br />
&nbsp;&nbsp;&nbsp; if (dataTable == null) return;<br />
&nbsp;&nbsp;&nbsp; DataNode[][] headerNodes = dataTable.getHeaderNodes();</p>
<p>&nbsp;&nbsp;&nbsp; RowList rowList = table.getRows();<br />
&nbsp;&nbsp;&nbsp; Row row1 = rowList.add(com.cete.dynamicpdf.Font.getHelveticaBold(), PDF_FONT_SIZE);</p>
<p>&nbsp;&nbsp;&nbsp; CellList cellList1 = row1.getCellList();<br />
&nbsp;&nbsp;&nbsp; cellList1.add("").setRowSpan(headerNodes.length);<br />
&nbsp;&nbsp;&nbsp; cellList1.add("").setRowSpan(headerNodes.length);<br />
&nbsp;&nbsp;&nbsp; cellList1.add("Average").setRowSpan(headerNodes.length);<br />
&nbsp;&nbsp;&nbsp; for (int i = 0; i &lt; headerNodes[0].length; i++){<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; String header = headerNodes[0][i].getDisplayKey();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (header.indexOf("/") != -1){<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; header = header.substring(header.indexOf("/") + 1);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int columnSpan = headerNodes[0][i].getColspan();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; cellList1.add(header).setColumnSpan(columnSpan);<br />
&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp; cellList1.add("Total").setRowSpan(headerNodes.length);</p>
<p>&nbsp;&nbsp;&nbsp; for (int i = 0; i &lt; cellList1.getCount(); i++){<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Cell cell = cellList1.getCell(i);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; cell.setAlign(CellAlign.CENTER);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; cell.setVAlign(CellVAlign.CENTER);<br />
&nbsp;&nbsp;&nbsp; }</p>
<p>&nbsp;&nbsp;&nbsp; for (int i = 1; i &lt; headerNodes.length; i++){<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Row row2 = rowList.add(com.cete.dynamicpdf.Font.getHelveticaBold(), PDF_FONT_SIZE);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; CellList cellList2 = row2.getCellList();</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for(int j = 0; j &lt; headerNodes[i].length; j++){<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; String header = headerNodes[i][j].getDisplayKey();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (header.indexOf("/") != -1){<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; header = header.substring(header.indexOf("/") + 1);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int columnSpan = headerNodes[i][j].getColspan();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; cellList2.add(header).setColumnSpan(columnSpan);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for (int j = 0; j &lt; cellList2.getCount(); j++){<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Cell cell = cellList2.getCell(j);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; cell.setAlign(CellAlign.CENTER);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; cell.setVAlign(CellVAlign.CENTER);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp; }<br />
}</p>
<p>private void setupPDFTableBody(HttpSession session, Table table){<br />
&nbsp;&nbsp;&nbsp; final String[] WEEKDAYS = {"M", "T", "W", "T", "F", "S", "S"};<br />
&nbsp;&nbsp;&nbsp; DataTable dataTable = (DataTable)session.getAttribute("dataTable");<br />
&nbsp;&nbsp;&nbsp; if (dataTable == null) return;<br />
&nbsp;&nbsp;&nbsp; Map averageMap = (Map)session.getAttribute("averageMap");<br />
&nbsp;&nbsp;&nbsp; if (averageMap == null) averageMap = new HashMap();</p>
<p>&nbsp;&nbsp;&nbsp; boolean isOdd = false;<br />
&nbsp;&nbsp;&nbsp; RowList rowList = table.getRows();</p>
<p>&nbsp;&nbsp;&nbsp; String selHightlightText = (String)session.getAttribute("selHightlightText");<br />
&nbsp;&nbsp;&nbsp; DataNode[] yNodes = dataTable.getYNodes();<br />
&nbsp;&nbsp;&nbsp; double[][] xTotals = dataTable.getXTotals();<br />
&nbsp;&nbsp;&nbsp; double[][] yTotals = dataTable.getYTotals();<br />
&nbsp;&nbsp;&nbsp; double[][][] valueArrays = dataTable.getValueArrays();</p>
<p>&nbsp;&nbsp;&nbsp; for (int i = 0; i &lt; yNodes.length; i++){<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Row row = rowList.add(com.cete.dynamicpdf.Font.getHelveticaBold(), PDF_FONT_SIZE);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; CellList cellList = row.getCellList();</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; RgbColor rowBackground = null;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if ((i % WEEKDAYS.length) == 0) isOdd = !isOdd;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (isOdd) rowBackground = new RgbColor(245, 245, 220);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else rowBackground = new RgbColor(255, 255, 255);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; row.setBackgroundcolor(rowBackground);</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; String displayKey = yNodes[i].getDisplayKey();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if ((i % WEEKDAYS.length) == 0){<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; String rowHeader = displayKey.substring(0, displayKey.lastIndexOf("_"));<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Cell cell = cellList.add(rowHeader);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; cell.setRowSpan(WEEKDAYS.length);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; cell.setFontSize(10);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int indexWD = Integer.parseInt(yNodes[i].getDisplayKey().substring(<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; yNodes[i].getDisplayKey().indexOf("_") + 1)) - 2;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; String weekday = WEEKDAYS[indexWD];<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; cellList.add(weekday).setFontSize(10);</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; double average = Double.parseDouble((String)averageMap.get(displayKey));<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; String strAVG = Helper.formatNumeric(average, 0);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Cell cellAVG = cellList.add(strAVG);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; cellAVG.setFont(com.cete.dynamicpdf.Font.getHelvetica());<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; cellAVG.setFontSize(10);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for(int k = 0; k &lt; valueArrays[i].length; k++){<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; RgbColor foreground = new RgbColor(0, 0, 0); // black<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; RgbColor background = rowBackground;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; double value = valueArrays[i][k][0];</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if ((valueArrays[i][k] == null || value == 0)){<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; background = new RgbColor(255, 255, 0); // yellow<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; double countPercent = ((value - average) / average) * 100;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (countPercent &lt; 0)countPercent = -(countPercent);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (countPercent &gt; (Double.parseDouble(selHightlightText))){<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; background = new RgbColor(255, 0, 255); // magenta<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; String strValue = (value &gt; 0) ? Helper.formatNumeric(value, 0) : "";<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Cell cell = cellList.add(strValue);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; cell.setBackgroundColor(background);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; cell.setTextColor(foreground);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; cell.setFont(com.cete.dynamicpdf.Font.getHelvetica());<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; cell.setFontSize(10);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; RgbColor foreground = new RgbColor(0, 0, 0); // black<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; RgbColor background = rowBackground;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (yTotals[i]==null||yTotals[i][0] == 0){<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; background = new RgbColor(255, 255, 0); // yellow<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; double total = yTotals[i][0];<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; String strTotal = Helper.formatNumeric(total, 0);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Cell cellTotal = cellList.add(strTotal);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; cellTotal.setBackgroundColor(background);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; cellTotal.setTextColor(foreground);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; cellTotal.setFont(com.cete.dynamicpdf.Font.getHelvetica());<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; cellTotal.setFontSize(10);</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for (int k = 0; k &lt; cellList.getCount(); k++){<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Cell cell = cellList.getCell(k);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; cell.setAlign(CellAlign.CENTER);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; cell.setVAlign(CellVAlign.CENTER);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp; }</p>
<p>&nbsp;&nbsp;&nbsp; Row row = rowList.add(com.cete.dynamicpdf.Font.getHelveticaBold(), PDF_FONT_SIZE);<br />
&nbsp;&nbsp;&nbsp; CellList cellList = row.getCellList();<br />
&nbsp;&nbsp;&nbsp; Cell cellTotalLabel = cellList.add("Total");<br />
&nbsp;&nbsp;&nbsp; cellTotalLabel.setColumnSpan(3);<br />
&nbsp;&nbsp;&nbsp; cellTotalLabel.setAlign(CellAlign.LEFT);</p>
<p>&nbsp;&nbsp;&nbsp; for (int x = 0; x &lt; xTotals.length; x++){<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; RgbColor foreground = new RgbColor(0, 0, 0); // black<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; RgbColor background = new RgbColor(255, 255, 255); // white<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if ((xTotals[x] == null) || (xTotals[x][0] == 0)){<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; background = new RgbColor(255, 255, 0); // yellow<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; double total = xTotals[x][0];<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; String strTotal = (xTotals[x][0] &gt; 0) ? Helper.formatNumeric(total, 0) : "";</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Cell cellTotal = cellList.add(strTotal);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; cellTotal.setBackgroundColor(background);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; cellTotal.setTextColor(foreground);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; cellTotal.setFontSize(10);<br />
&nbsp;&nbsp;&nbsp; }</p>
<p>&nbsp;&nbsp;&nbsp; for (int k = 0; k &lt; cellList.getCount(); k++){<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Cell cell = cellList.getCell(k);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; cell.setAlign(CellAlign.CENTER);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; cell.setVAlign(CellVAlign.CENTER);<br />
&nbsp;&nbsp;&nbsp; }</p>
<p>}</p>
<p><br />
private String getRunningTimeInfo(HttpSession session){<br />
&nbsp;&nbsp;&nbsp;&nbsp; Long longStart = (Long)session.getAttribute(CountInfoUtil.RUNNING_START_TIME);<br />
&nbsp;&nbsp;&nbsp;&nbsp; long valueStart = (longStart != null) ? longStart.longValue() : 0;<br />
&nbsp;&nbsp;&nbsp;&nbsp; Long longEnd = (Long)session.getAttribute(CountInfoUtil.RUNNING_END_TIME);<br />
&nbsp;&nbsp;&nbsp;&nbsp; long valueEnd = (longEnd != null) ? longEnd.longValue() : 0;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp; Calendar cal = Calendar.getInstance();<br />
&nbsp;&nbsp;&nbsp;&nbsp; cal.setTimeInMillis(valueStart);<br />
&nbsp;&nbsp;&nbsp;&nbsp; SimpleDateFormat formatter2 = new SimpleDateFormat("HH:mm:ss a");<br />
&nbsp;&nbsp;&nbsp;&nbsp; long timeDiff = (valueEnd - valueStart) / 1000;<br />
&nbsp;&nbsp;&nbsp;&nbsp; long hour = timeDiff / 3600;<br />
&nbsp;&nbsp;&nbsp;&nbsp; long minute = timeDiff % 3600 / 60;<br />
&nbsp;&nbsp;&nbsp;&nbsp; long second = timeDiff % 60;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp; StringBuffer sb = new StringBuffer();<br />
&nbsp;&nbsp;&nbsp;&nbsp; sb.append("Running Starts at ").append(formatter2.format(cal.getTime()));<br />
&nbsp;&nbsp;&nbsp;&nbsp; sb.append(" Duration: ");<br />
&nbsp;&nbsp;&nbsp;&nbsp; sb.append(hour).append("h:");<br />
&nbsp;&nbsp;&nbsp;&nbsp; sb.append(minute).append("m:");<br />
&nbsp;&nbsp;&nbsp;&nbsp; sb.append(second).append("s");<br />
&nbsp;&nbsp;&nbsp;&nbsp; return sb.toString();<br />
&nbsp;&nbsp; }</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p><font style="background-color: #000000" color="#99ccff" size="4">当然了,最终你要导出的具体内容就修改上面的函数就ok了.我也是刚接触这个pdf组件.</font></p>
<img src ="http://www.blogjava.net/charlielogic/aggbug/163645.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/charlielogic/" target="_blank">charlie</a> 2007-11-28 11:19 <a href="http://www.blogjava.net/charlielogic/archive/2007/11/28/163645.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>null和字符串的恩怨</title><link>http://www.blogjava.net/charlielogic/archive/2007/11/26/163169.html</link><dc:creator>charlie</dc:creator><author>charlie</author><pubDate>Mon, 26 Nov 2007 07:21:00 GMT</pubDate><guid>http://www.blogjava.net/charlielogic/archive/2007/11/26/163169.html</guid><wfw:comment>http://www.blogjava.net/charlielogic/comments/163169.html</wfw:comment><comments>http://www.blogjava.net/charlielogic/archive/2007/11/26/163169.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/charlielogic/comments/commentRss/163169.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/charlielogic/services/trackbacks/163169.html</trackback:ping><description><![CDATA[<p><br />
import java.util.ArrayList;<br />
import java.util.HashMap;<br />
import java.util.Scanner;<br />
&nbsp;<br />
public class JusTest {<br />
&nbsp; public static void main(String[] main)<br />
&nbsp; {</p>
<p>&nbsp;&nbsp;<br />
&nbsp;&nbsp;System.out.println("test 1 ..........start");</p>
<p>&nbsp;&nbsp;String str1=null;<br />
&nbsp;&nbsp;<br />
&nbsp;&nbsp;String str2="";<br />
&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp; String str = str1+str2;<br />
&nbsp;<br />
&nbsp;<br />
&nbsp;&nbsp;&nbsp; System.out.println(str.equals(""));<br />
&nbsp;&nbsp;&nbsp; System.out.println(str==null);<br />
&nbsp;&nbsp;&nbsp; System.out.println(str.equals("null"));<br />
&nbsp;<br />
&nbsp;<br />
&nbsp;&nbsp;&nbsp; System.out.println("test 1 ..........end ");<br />
&nbsp;&nbsp;&nbsp; <br />
&nbsp;<br />
&nbsp;&nbsp;&nbsp; System.out.println("结论: 以上操作将空指针转化为字符串null");</p>
<p>&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp; <br />
&nbsp;<br />
&nbsp;<br />
&nbsp;<br />
&nbsp;<br />
&nbsp;<br />
&nbsp;<br />
&nbsp;<br />
&nbsp;<br />
&nbsp;}<br />
}</p>
<img src ="http://www.blogjava.net/charlielogic/aggbug/163169.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/charlielogic/" target="_blank">charlie</a> 2007-11-26 15:21 <a href="http://www.blogjava.net/charlielogic/archive/2007/11/26/163169.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[学习]操作符“==”与对象的equal()方法 和 instanceof 操作符</title><link>http://www.blogjava.net/charlielogic/archive/2007/11/15/160726.html</link><dc:creator>charlie</dc:creator><author>charlie</author><pubDate>Thu, 15 Nov 2007 04:20:00 GMT</pubDate><guid>http://www.blogjava.net/charlielogic/archive/2007/11/15/160726.html</guid><wfw:comment>http://www.blogjava.net/charlielogic/comments/160726.html</wfw:comment><comments>http://www.blogjava.net/charlielogic/archive/2007/11/15/160726.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/charlielogic/comments/commentRss/160726.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/charlielogic/services/trackbacks/160726.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 1、操作符&#8220;==&#8221;用来比较两个操作元是否相等，这两个操作元既可以是基本类型，也可以是引用类型。代码01：/**&nbsp;*&nbsp;Demo01.java&nbsp;*&nbsp;*&nbsp;Provider:&nbsp;CoderDream's&nbsp;Studio&nbsp;*&nbsp;*&nbsp;History&nbsp...&nbsp;&nbsp;<a href='http://www.blogjava.net/charlielogic/archive/2007/11/15/160726.html'>阅读全文</a><img src ="http://www.blogjava.net/charlielogic/aggbug/160726.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/charlielogic/" target="_blank">charlie</a> 2007-11-15 12:20 <a href="http://www.blogjava.net/charlielogic/archive/2007/11/15/160726.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>I am here</title><link>http://www.blogjava.net/charlielogic/archive/2007/11/15/160672.html</link><dc:creator>charlie</dc:creator><author>charlie</author><pubDate>Thu, 15 Nov 2007 00:40:00 GMT</pubDate><guid>http://www.blogjava.net/charlielogic/archive/2007/11/15/160672.html</guid><wfw:comment>http://www.blogjava.net/charlielogic/comments/160672.html</wfw:comment><comments>http://www.blogjava.net/charlielogic/archive/2007/11/15/160672.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/charlielogic/comments/commentRss/160672.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/charlielogic/services/trackbacks/160672.html</trackback:ping><description><![CDATA[今天开始，正式在这里写博客。 
<img src ="http://www.blogjava.net/charlielogic/aggbug/160672.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/charlielogic/" target="_blank">charlie</a> 2007-11-15 08:40 <a href="http://www.blogjava.net/charlielogic/archive/2007/11/15/160672.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>