itext中文本的绝对位置放置

text中表格可以使用 table.writeSelectedRows(0, -1, x, y, writer.getDirectContent()); 来实现绝对位置放置。那文本段落呢… 当我们不需要itext对每个单词、句子、段落实现自动格式的时候,或是想使用特殊布局,就可以使用PdfContentByte来实现绝对位置放置。 PdfContentByte的初始化: PdfWriter writer = PdfWriter.getInstance(document, new FileOutputStream("test.pdf")); PdfContentByte cb = writer.DirectContent; 将文本写入ContentByte中时,必须使用方法beginText()和endText(),同时也必须设置字体和尺寸。有两种方法来写入和放置文本。 方法一: BaseFont bf = BaseFont.createFont(BaseFont.HELVETICA, BaseFont.CP1252, BaseFont.NOT_EMBEDDED); cb.beginText(); cb.setFontAndSize(bf, 12); cb.showTextAligned(PdfContentByte.ALIGN_CENTER, text + "This text is centered", 250, 700, 0); cb.endText(); 方法二: BaseFont bf = BaseFont.createFont(BaseFont.HELVETICA, BaseFont.CP1252, BaseFont.NOT_EMBEDDED); cb.beginText(); cb.setFontAndSize(bf, 12); cb.setTextMatrix(100, 400); cb.showText("Text at position 100,400."); cb.endText();

May 12, 2011

用apache的ant解压zip文件(中文文件或文件夹解决方法)

昨天在研究用apache的ant包来解压zip文件,把经验写下来与大家分享。 写贴上代码 package upzip; import java.io.File; import java.io.FileOutputStream; import java.io.InputStream; import org.apache.tools.zip.*; import java.util.Enumeration; /** * 压缩解压ZIP文件 * @author Administrator * */ public class AntZip { private ZipFile zipFile; private static int bufSize; //size of bytes private byte[] buf; private int readedBytes; /** * * @param bufSize 缓存大小 */ public AntZip(int bufSize){ this.bufSize = bufSize; this.buf = new byte[this.bufSize]; } public AntZip(){ this(1024); } /** * 生存目录 * @param directory 解压文件存放目录 * @param subDirectory 子目录(没有时可传入空字符串) */ private void createDirectory(String directory, String subDirectory) { String dir[]; File fl = new File(directory); try { if(subDirectory == "" && fl....

March 4, 2011

ClientAbortException: java.net.SocketException:”异常的问题

前几天,在做图片以stream形式输出到页面上展现的时候,后台一直报异常,且页面上图片无法正常现实。异常内容为: ClientAbortException: java.net.SocketException: Software caused connection abort: socket write error at org.apache.catalina.connector.OutputBuffer.realWriteBytes(OutputBuffer.java:358) at org.apache.tomcat.util.buf.ByteChunk.flushBuffer(ByteChunk.java:434) at org.apache.catalina.connector.OutputBuffer.doFlush(OutputBuffer.java:309) at org.apache.catalina.connector.OutputBuffer.flush(OutputBuffer.java:288) at org.apache.catalina.connector.CoyoteOutputStream.flush(CoyoteOutputStream.java:98) at javax.imageio.stream.FileCacheImageOutputStream.close(FileCacheImageOutputStream.java:213) ...... 在网上找了好久,发现是个普遍问题,但原因各异,有人总结为: 1:服务器的并发连接数超过了其承载量,服务器会将其中一些连接Down掉; 2:客户关掉了浏览器,而服务器还在给客户端发送数据; 3:浏览器端按了Stop; 4:服务器给客户端响应结果给防火墙拦截了。 这些原因太过笼统,细查错误很难。 偶然在一个英文网页上看到了条有关这个异常的,本人英语水平差,只能说个大意: 这个已知异常出现在IE浏览器显示tif格式的图片的时候。 亲自试验了下,的确在chrome和火狐上显示时,后台不会报次错误,不过图片显示有点异样。因为图片是存于数据库的BLOB类型的字段中,所以一直没注意图片的格式,后来才发现,原来图片是gif格式,而我使用ImageIO.write(img, “jpeg”, response.getOutputStream());输出成jpg格式的图片,以致导致IE浏览器对图片解析有问题。在此将jpeg改成gif后不再出现异常。 忙乎了一天多,结果问题出在这里。 其问题导致的原因可能是:IE浏览器在解析错误图片格式或不支持的图片格式时,可能向服务器发送了多次请求或是直接关闭了连接,从而导致了tomcat报次异常。

December 8, 2010