itext导出word表格,设置表格虚线边框
这个表格去掉了单元格之间的纵向分隔线第 第 第一 二 三列 列 列这个表格去掉了单元格之间的横向分隔线横 线竖 线都 没 了这个表格去掉了单元格之间的纵向分隔线和横向分隔线其实上面的三个表格都有三行三列,隐藏分隔线的诀窍在于rules,察看这三个表格的源代码,我们可以看到标签中都有rules。
它有三个参数(cols,rows,none),当rules=cols时,表格会隐藏纵向的分隔线,这样我们就只能看到表格的行;当rules=rows时,则 隐藏了横向的分隔线,这样我们只能看到表格的列;而当rules=none时,纵向分隔线和横向分隔线将全部隐藏。
java itext 创建pdf,直接返回输出流做成下载,怎么做
一、iText介绍 iText是着名的开放源码的站点sourceforge一个项目,是用于生成PDF文档的一个java类库。
通过iText不仅可以生成PDF或rtf的文档,而且可以将XML、Html文件转化为PDF文件。
iText的安装非常方便,在http://www.lowagie.com/iText/download.html - download 网站上下载iText.jar文件后,只需要在系统的CLASSPATH中加入iText.jar的路径,在程序中就可以使用iText类库了。
二、建立第一个PDF文档 用iText生成PDF文档需要5个步骤: ①建立com.lowagie.text.Document对象的实例。
Document document = new Document(); ②建立一个书写器(Writer)与document对象关联,通过书写器(Writer)可以将文档写入到磁盘中。
PDFWriter.getInstance(document, new FileOutputStream("Helloworld.PDF")); ③打开文档。
document.open(); ④向文档中添加内容。
document.add(new Paragraph("Hello World")); ⑤关闭文档。
document.close(); 通过上面的5个步骤,就能产生一个Helloworld.PDF的文件,文件内容为"Hello World"。
建立com.lowagie.text.Document对象的实例 com.lowagie.text.Document对象的构建函数有三个,分别是: public Document(); public Document(Rectangle pageSize); public Document(Rectangle pageSize, int marginLeft, int marginRight, int marginTop, int marginBottom); 构建函数的参数pageSize是文档页面的大小,对于第一个构建函数,页面的大小为A4,同Document(PageSize.A4)的效果一样;对于第三个构建函数,参数marginLeft、marginRight、marginTop、marginBottom分别为左、右、上、下的页边距。
通过参数pageSize可以设定页面大小、面背景色、以及页面横向/纵向等属性。
iText定义了A0-A10、AL、LETTER、 HALFLETTER、_11x17、LEDGER、NOTE、B0-B5、ARCH_A-ARCH_E、FLSA 和FLSE等纸张类型,也可以通过Rectangle pageSize = new Rectangle(144, 720);自定义纸张。
通过Rectangle方法rotate()可以将页面设置成横向。
书写器(Writer)对象 一旦文档(document)对象建立好之后,需要建立一个或多个书写器(Writer)对象与之关联。
通过书写器(Writer)对象可以将具体文档存盘成需要的格式,如com.lowagie.text.PDF.PDFWriter可以将文档存成PDF文件, com.lowagie.text.html.HtmlWriter可以将文档存成html文件。
设定文档属性 在文档打开之前,可以设定文档的标题、主题、作者、关键字、装订方式、创建者、生产者、创建日期等属性,调用的方法分别是: public boolean addTitle(String title) public boolean addSubject(String subject) public boolean addKeywords(String keywords) public boolean addAuthor(String author) public boolean addCreator(String creator) public boolean addProducer() public boolean addCreationDate() public boolean addHeader(String name, String content) 其中方法addHeader对于PDF文档无效,addHeader仅对html文档有效,用于添加文档的头信息。
当新的页面产生之前,可以设定页面的大小、书签、脚注(HeaderFooter)等信息,调用的方法是: public boolean setPageSize(Rectangle pageSize) public boolean add(Watermark watermark) public void removeWatermark() public void setHeader(HeaderFooter header) public void resetHeader() public void setFooter(HeaderFooter footer) public void resetFooter() public void resetPageCount() public void setPageCount(int pageN) 如果要设定第一页的页面属性,这些方法必须在文档打开之前调用。
对于PDF文档,iText还提供了文档的显示属性,通过调用书写器的setViewerPreferences方法可以控制文档打开时Acrobat Reader的显示属性,如是否单页显示、是否全屏显示、是否隐藏状态条等属性。
另外,iText也提供了对PDF文件的安全保护,通过书写器(Writer)的setEncryption方法,可以设定文档的用户口令、只读、可打印等属性。
添加文档内容 所有向文档添加的内容都是以对象为单位的,如Phrase、Paragraph、Table、Graphic对象等。
比较常用的是段落(Paragraph)对象,用于向文档中添加一段文字。
三、文本处理 iText中用文本块(Chunk)、短语(Phrase)和段落(paragraph)处理文本。
文本块(Chunk)是处理文本的最小单位,有一串带格式(包括字体、颜色、大小)的字符串组成。
如以下代码就是产生一个字体为HELVETICA、大小为10、带下划线的字符串: Chunk chunk1 = new Chunk("This text is underlined", FontFactory.getFont(FontFactory.HELVETICA, 12, Font.UNDERLINE)); 短语(Phrase)由一个或多个文本块(Chunk)组成,短语(Phrase)也可以设定字体,但对于其中以设定过字体的文本块 (Chunk)无效。
通过短语(Phrase)成员函数add可以将一个文本块(Chunk)加到短语(Phrase)中,如:phrase6.add(chunk); 段落(paragraph)由一个或多个文本块(Chunk)或短语(Phrase)组成,相当于WORD文档中的段落概念,同样可以设定段落的字体大小、颜色等属性。
另外也可以...
Java 如何合并word excel,图片等文件? 并且能够拟定具体位置.
展开全部 打开工具,然后点击打开更多文件,然后随便打开PDF文件中的一篇。
然后在文档下面添加页眉页脚,按照图片的操作就可以添加页眉页脚。
文本可以在左边,中间,右边添加,这里可以有些要求提示,下面是效果预览图。
自己根据自己需要去弄,设置下字体,弄好之后点击下面的确定。
...
(jsp)怎样实现把数据库的内容写入word文档?最好有个例子
在web-oa系统中,公文管理好象不可或缺,有时需要从数据库中查询一些数据以某种格式输出来,并以word文档的形式展现,有时许多word文档保存到数据库中的某个表的Blob字段里,服务器再把保存在Blob字段中的图片文件展现给用户。
通过网上查找发现很少有关于此类的文章,现在整理起来供大家参考。
1在client端直接生成word文档 在jsp页面上生成word文档非常简单,只需把contentType=”text/html”改为contentType="application/msword; charset=utf-8"即可,代码如下: 通过设置可以使原来页面的内容在word中表现出来。
如果需要把word文档下载下来,只需在jsp页面上面加上如下代码: 其中filename.doc中filename是要下载的word文档的文件名,可以通过来自行定制,如下 .doc"); %> 这样提供一个提示信息供用户选择如下图所示 小技巧:如果程序员需要在生成word文档的时候按照自己预先在word上设计好的格式,可以复制word格式然后粘贴到frontpage中,取html代码贴到jsp页面即可。
2 在客户端输出存在数据库中的word实体 这里只讨论在client输出oracle中BLOB字段中的word文档实体。
其中调用了类getBlobBean,该类提供了从oracle中取出blob功能,代码如下: package yourpackage; import javax.servlet.*; import javax.servlet.http.*; import java.io.*; import java.util.*; import oracle.sql.*; import beans.yourbeanpackage. getBlobBean; /** * Title: * Description: * Copyright: Copyright (c) 2004 * Company: * @author not attributable * @version 1.0 */ public class GetBlobServlet1 extends HttpServlet { //设置输出内容类型,这个设置很重要,否则客户端浏览器不能识别输出内容,导致弹出下载的对话框。
private static final String CONTENT_TYPE = "application/msword;charset=utf-8"; //Initialize global variables public void init() throws ServletException { } //Process the HTTP Get request public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType(CONTENT_TYPE); perform(request,response); } public void perform(HttpServletRequest request, HttpServletResponse response){ try{ //该类功能是从oracle哭中取出blob实体 getBlobBean getBlob=new getBlobBean(); OutputStream sos = response.getOutputStream(); getBlob.connFunction(); oracle.sql.BLOB blob=getBlob.getBlob("cehui"); //输出word文档 if(blob!=null){ InputStream pi = blob.getBinaryStream(); int blobsize =(int)blob.length(); byte[] blobbytes = new byte[blobsize]; int bytesRead = 0; while ((bytesRead = pi.read(blobbytes)) != -1) { sos.write(blobbytes, 0, bytesRead); } pi.close(); sos.flush(); sos.close(); } getBlob.dropConnFunction(); }catch(Exception e){ System.out.println(e.toString()); } } //Clean up resources public void destroy() { } } 3在client端直接生成EXCEL文档 生成 生成例子excel 。
用WORD排版面,倒出HTML 把代码拷贝到网页里,然后这个JSP页面打印你就随心所欲的控制了。
4在client端直接生成PDF文档 需要下载JAR包:以下代码在JDK1.4 RESIN2.16 下测试通过 ITEXT包 http://mesh.dl.sourceforge.net/sourceforge/itext/itext-1.3.5.jar 字体包 http://itext.sourceforge.net/downloads/iTextAsian.jar JSP生成到客户IE端直接打开 ie_PDF.jsp ------------------------------- 在服务器端生成不下载。
server_PDF.jsp <% String filename = "D:\\test\\111111.pdf" ; Document document = new Document(PageSize.A4); ServletOutputStream out1 = response.getOutputStream(); try{ PdfWriter writer = PdfWriter.getInstance(document, new FileOutputStream(filename) ); document.open(); document.add(new Paragraph("Hello World中文支持...
如何将已生成的pdf文件通过servlet显示到页面
你只要将文件写到servlet 的输出流中,就可以利用 servlet 在浏览器中打开一个文件。
首先从获得 servlet 的输出流开始: ServletOutputStream out = res.getOutputStream(); 互联网上使用 MIME (multipurpos Internet mail extension 多目的互联网邮件扩展协议)来传送混合格式、多媒体和二进制数据文件。
如果要在 servlet 的 response 对象中打开某个文档,就必须设置该文档的 MIME 类型。
向Web客户端发送PDF文档 (一)MIME类型 Web 浏览器使用 MIME 类型来识别非 HTML 文档,并决定如何显示该文档内的数据。
将插件 (plug-in) 与 MIME 类型结合使用,则当 Web 浏览器下载 MIME 类型指示的文档时,就能够启动相应插件处理此文档。
某些 MIME 类型还可以与外部程序结合使用,浏览器下载文档后会启动相应的外部程序。
MIME 类型非常有用。
它们允许 Web 浏览器处理不同格式的文档,却不需要事先嵌入相关知识。
Java Servlets 可以使用 MIME 类型来向浏览器传送非 HTML 文件,比如 Adobe PDF 和 Micorsoft Word。
使用正确的 MIME 类型能够保证这些非 HTML 文件被正确的插件或外部程序显示。
PDF 文件的 MIME 类型是 "application/pdf"。
要用servlet 来打开一个 PDF 文档,需要将 response 对象中 header 的 content 类型设置成 "application/pdf": // PDF 文件的 MIME 类型 res.setContentType( "application/pdf" ); //也可以通过下面的方式来设置 response.setHeader("Content-type", "application/pdf");(二)Content disposition HTTP response header中的content-disposition 允许 servlet 指定文档表示的信息。
使用这种header ,你就可以将文档指定成单独打开(而不是在浏览器中打开),还可以根据用户的操作来显示。
如果用户要保存文档,你还可以为该文档建议一个文件名。
这个建议名称会出现在 Save As 对话框的“文件名”栏中。
如果没有指定,则对话框中就会出现 servlet 的名字。
在 servlet 中,你需要将 header 设置成下面这样: res.setHeader("Content-disposition", "attachment; filename=" + "Example.pdf" ); // attachment -因为不希望在浏览器中直接打开它,而是利用Adobe Acrobat。
// 可以通过设置default file name来确定保存文当时的建议名称。
//response.setHeader("Content-Disposition", "inline; filename=report.pdf"); (三)封装非 HTML 文档 完成上述工作后,剩下的就非常简单了。
你需要根据待传送文件的名字,创建一个 java.net.URL 对象。
交给 URL 构造器的字符串必须是指向该文件的一个有效 URL 地址。
在这里,我要打开本地的PDF文档: String fileURL = "http://localhost/aboutadobe/careeropp/pdfs/tables.pdf; URL 字符串也可以类似于 http://www.gr.com/pub/somefile.doc 或 http://www.gr.com/pub/somefile.xls。
但必须确保待传送文件类型与先前在 HTTP response 对象中设置的 MIME 类型一致。
(四)其他 开始阅读传送的文档之前,首先要从 URL 对象中获得输入流 InputStream,用 BufferedInputStream 将 InputStream 封装起来。
BufferedInputStreambis = newBufferedInputStream(url.openStream()); 一旦你完成上述操作,就只要简单地将 InputStream 中的字节,写入到 servlet 的输出流 OutputStream 中: BufferedOutputStreambos = new BufferedOutputStream(out); byte[] buff = new byte[2048]; intbytesRead; // 一个简单的读写循环 while(-1 != (bytesRead = bis.read(buff, 0, buff.length))) { bos.write(buff, 0, bytesRead); } 在最后的代码块中,关闭这些流 ,如:bos.close(); PDF文档在服务器端的生成 利用iText040工具包可以很方便的输出一个十分漂亮的PDF文档。
1.Document的创建 Document document=new Document(p0, p1, p2, p3, p4) 其中,p0为页面的大小,如 PageSize.A4; p1?p4分别描述上下左右页边空白。
2. 构造复写器 PdfWriter.getInstance(document, new FileOutputStream("tables.pdf")) 执行程序后,将在当前目录下生成一个名为tables.pdf的文件。
接着打开Document:document.open() 3. 根据需要定义一个Table //一个拥有十列的Table Table datatable = new Table(10); //定义Cell与Cell之间的距离为零 datatable.setCellpadding(0); //定义Cell的间隔 datatable.setCellspacing(3); //使Table没有边框 datatable.setBorder(Rectangle.NO_BORDER); //定义每一列的宽度 intheaderwidths[] = {10, 30, 15, 15, 5, 5, 5, 5, 5, 5}; datatable.setWidths(headerwidths); datatable.setWidth(100); 4.字体的定义: BaseFont bf = BaseFont.createFont(String name, String encoding, boolean embedded) “name”为字体名,“encoding”为编码名称。
5. Cell的定义 Cell cell = new Cell(new Phrase("String string",f)); String为Cell中要显示的内容。
另外有很多方法来控制Cell,其中比较常用的几个方法如下: cell.setBorder(int value) 根据经验,value值对应的边框形状见下图: 图例 Value 整数值 Rectangle.ALIGN_BOTTOM 6 Rectangle.ALIGN_BASELINE 7 Rectangle.ALIGN_CENTER 1 Rectangle.ALIGN_JUSTIFIED 3 Rectangle.ALIGN_...
转载请注明出处51数据库 » itext word 打印