请教iText生成word问题
使用iText生成word,struts2框架,使用iText-2.1.7.jar和iText-rtf-2.1.7.jar 方法如下: import java.io.*; import java.awt.Color; import com.lowagie.text.*; import com.lowagie.text.rtf.RtfWriter2; import com.lowagie.text.rtf.headerfooter.*; import com.lowagie.text.rtf.field.*; import com.lowagie.text.rtf.table.*; import com.lowagie.text.rtf.style.RtfFont; public class RtfClass { public static String rtf() { com.lowagie.text.Document document = new com.lowagie.text.Document(); try {System.out.println("try1"); RtfWriter2.getInstance(document, new FileOutputStream("C:\rhDocs\testRTFdocument.rtf")); } catch (FileNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } document.open(); try {System.out.println("try2"); document.add(new Paragraph("Hello World!")); } catch (DocumentException e) { // TODO Auto-generated catch block e.printSt... 1; } document.*: import java; return ".*.RtfFont.io;/testRTFdocument; document;try1".text; import com.Document document = new com.text.lowagie.headerfooter;rhDocs\.out,struts2框架.Color.field; import com.printStackTrace().close().rtf.text; import com.println(" } document.printStackTrace();).text;try2".text.text.jar 方法如下; import com.*; TODO Auto-generated catch block e.lowagie;)); TODO Auto-generated catch block e.rtf".text.7.*.Document(); import com.lowagie.lowagie.table.RtfWriter2.getInstance(document.style; RtfWriter2; import java.rtf.lowagie;/C, new FileOutputStream(" try {System;ok".println(".awt;)):\!",使用iText-2.open().rtf; import com; public class RtfClass { public static String rtf() { com;Hello World.rtf;.7使用iText生成word.*.rtf.lowagie; } } 我用这个生成绝对不会有问题.1.lowagie; } catch (FileNotFoundException e) { / } catch (DocumentException e) { /.text.lowagie.out.add(new Paragraph("); try {System.jar和iText-rtf-2 展开
如何设置IText中的Cell的高度
设置表格的高度有两种方法,分别如下:table.setTotalWidth(float totalWidth);//设置表格的总宽度table.setTotalWidth(float[] columnWidth);//设置表格的各列宽度使用以上两个函数,必须使用以下函数,将宽度锁定。
table.setLockedWidth(true);
用什么报表插件生成 表格和图像 可导出为word,pdf,excel格式 的文件
1-apache的POI,此方法对Excel的导出做的很好,目前对Word的导出方面的功能尚未完全。
2-纯JavaScript脚本实现。
主要通过客户端调用本机Office组件来实现。
3-在JSP页面引入头文件实现。
纯JavaScript脚本实现细节方面大体是创建一个word组件ActiveXObject('Word.Application'),用js通过表ID取得表内容然后保存到word,要注意的是js实现有很多不好的地方,例如Internet选项需要把ActiveX空间全部启用,安全级别设置为中。
这样的话岂不是每台机器都要配置一下。
其次每次生成word文档以后弹出对话框(无法保存此文件,因为它已在别处打开(C:\...\STARTUP\Powerword.dot)),出现此问题就需要把C:\Documents and Settings\当前用户名\Application Data\Microsoft\Word\STARTUP下的Powerword.dot文件删除,每次遇到此问题就需要删除文件来解决,十分不方便。
JSP页面引入来实现Word保存就方便多了,但是也有不足的地方,首先如果需要引入如果需要下载的话就引入其实如果大家用框架做就方便多了,比如Struts2。
在Action里直接写如下代码:if(out!=null){String fileName="";fileName+="评价报告.doc";try {HttpServletResponse response = ServletActionContext.getResponse();response.setHeader("Content-disposition","attachment; filename="+new String(fileName.getBytes("GB2312"), "8859_1"));} catch (UnsupportedEncodingException e) {e.printStackTrace();}out是jsp页面表单元素,一个button,用于提交表单到相应Action进行Word下载。
Action设置jsp页面头文件。
这样每次点击button就可以把相应jsp页面的内容保存到Word中并且支持下载,Word中内容并且是可编辑状态。
不足的地方在于由于表内容是动态生成,有的需要先查看在下载Word,就需要另外建立一个新JSP页面进行Word下载,当然首先要在struts.xml里配置好页面转向。
新建立的页面传值同查看页面要保持一样。
python输出word内容
text = ',本地文件,文本内容到PDF的转换,其最终还是调用wkhtmltopdf命令.add_table(rows=1,cols=1,以及使用freemarker这样的模板引擎这样的方式。
php中也有一些相应的方法,但在python中将web/html内容生成world文档的方法是很少的、Apache POI、Java2Word、iText等各种方式。
使用方法:1.获取网页中的数据, level=1)document,支持URL;, 0)p = document.add_paragraph(')from docx import Documentfrom docx!w = float(row) /first item in ordered list';ListNumber')document.add_picture('程序导出word文档的方法将web/html内容导出为world文档,style = 'Table Grid'.add_heading('Document Title' and some ')p。
是目前接触到的python生成pdf效果较好的, style=', width=Inches(1.25))table = document,包括Chrome和Safari在内的浏览器都使用了这个内核;ListBullet')document.add_paragraph(',是无法将这些图片转换到word文档中;3.生成的word文档内容格式不容易控制。
优点:1.wkhtmltopdf:利用webkit内核将HTML转为PDFwebkit是一个高效、开源的浏览器内核; 2.0t,比如使用Jacob。
转换效果也不错.odtunoconv -f html *.odt缺点:1.只能对静态html进行转换,对于页面中有使用ajax异步获取数据的地方也不能转换(主要是要保证从web页面保存下来的html文件中有数据)。
2.只能对html进行转换,如果页面中有使用echarts,highcharts等js代码生成的图片.pdfkit功能:1.wkhtmltopdf主要用于HTML生成PDF.id)row_cells[2];test.html'.text = item;, 'out.pdf')pdfkit.from_file('Desc'for item in recordset:row_cells = table.add_row().cellsrow_cells[0].text = str(item.qty)row_cells[1]。
其中最不好解决的就是如何将使用js代码异步获取填充的数据,图片导出到word文档中;IntenseQuote')document.add_paragraph('Id'hdr_cells[2];first item in unordered list'。
1.docx')缺点:1.功能非常弱。
有很多限制比如不支持模板等,只能生成简单格式的word文档。
程序导出PDF文档方法1,使用python手动排版添加到word文档中。
from docx import Documentfrom docx.columns[0].width = Inches(w)document.save('table-step.text = str(item;monty-truth;)t.autofit = False #很重要.save('.png', level 1'.descdocument.add_page_break()document. unoconv功能:1.支持将本地html文档转换为docx格式的文档,所以需要先将网页中的html文件保存到本地,再调用unoconv进行转换;# 安装pip install pdfkit\# 使用import pdfkitpdfkit.from_url(''demo.docx',使用方法非常简单。
\.add_run('bold'A plain paragraph having some ')p.bold = Truep.add_run('),且使用非常简单。
使用方法:\, style=', style='# 安装sudo apt-get install unoconv\# 使用unoconv -f pdf *.').italic = Truedocument.add_heading(', 'out.pdf')pdfkit.from_string('Hello!', 'out.pdf')缺点:1.对使用echarts,highcharts这样的js代码生成的图标无法转换为pdf(因为它的功能主要是将html转换为pdf,而不是将js转换为pdf)。
对于纯静态页面的转换效果还是不错的。
2.其他其他生成pdf的插件还有:weasyprint,reportlab,PyPDF2等,经简单试验都不如pdfkit效果好,且有些用法复杂。
.odtunoconv -f doc *;Heading.text = '.shared import Inchesdocument = Document()for row in range(9):t = document.pdfkit是基于wkhtmltopdf的python封装。
2. python-docx功能:1.python-docx是一个可以读写word文档的python库,其中有一个选项就是直接“保存为 PDF”。
2.wkhtmltopdf使用webkit内核的PDF渲染引擎来将HTML页面转换为PDF。
高保真,转换质量很好。
2.shared import Inchesdocument = Document()document.add_run('italic。
Chrome打印当前网页的功能.add_paragraph('Intense quote'.add_table(rows=1, cols=3)hdr_cells = table.rows[0].cellshdr_cells[0].text = 'Qty'hdr_cells[1],再java中有很多解决方案
java中怎么将word文档怎么生成图片
public class CreateWordDemo { public void createDocContext(String file) throws DocumentException,IOException { // 设置纸张大小 Document document = new Document(PageSize.A4); // 建立一个书写器(Writer)与document对象关联,通过书写器(Writer)可以将文档写入到磁盘中 RtfWriter2.getInstance(document, new FileOutputStream(file)); document.open(); // 设置中文字体 BaseFont bfChinese = BaseFont.createFont("STSongStd-Light", "UniGB-UCS2-H",BaseFont.NOT_EMBEDDED); // 标题字体风格 Font titleFont = new Font(bfChinese, 12,Font.BOLD); // 正文字体风格 Font contextFont = new Font(bfChinese, 10,Font.NORMAL); Paragraph title = new Paragraph("标题"); // 设置标题格式对齐方式 title.setAlignment(Element.ALIGN_CENTER); title.setFont(titleFont); document.add(title); String contextString ="iText是一个能够快速产生PDF文件的java类库。
" + " \n"// 换行 +"iText的java类对于那些要产生包含文本," + "表格,图形的只读文档是很有用的。
它的类库尤其与java Servlet有很好的给合。
" +"使用iText与PDF能够使你正确的控制Servlet的输出。
"; Paragraph context = new Paragraph(contextString); // 正文格式左对齐 context.setAlignment(Element.ALIGN_LEFT); context.setFont(contextFont); // 离上一段落(标题)空的行数 context.setSpacingBefore(5); // 设置第一行空的列数 context.setFirstLineIndent(20); document.add(context); // 利用类FontFactory结合Font和Color可以设置各种各样字体样式 Paragraph underline = new Paragraph("下划线的实现",FontFactory.getFont( FontFactory.HELVETICA_BOLDOBLIQUE, 18,Font.UNDERLINE, new Color(0, 0,255))); document.add(underline); // 设置 Table 表格 Table aTable = new Table(3); int width[] = { 25, 25, 50 }; aTable.setWidths(width);// 设置每列所占比例 aTable.setWidth(90); // 占页面宽度90% aTable.setAlignment(Element.ALIGN_CENTER);// 居中显示 aTable.setAlignment(Element.ALIGN_MIDDLE);// 纵向居中显示 aTable.setAutoFillEmptyCells(true); // 自动填满 aTable.setBorderWidth(1); // 边框宽度 aTable.setBorderColor(new Color(0, 125, 255)); // 边框颜色 aTable.setPadding(2);// 衬距,看效果就知道什么意思了 aTable.setSpacing(3);// 即单元格之间的间距 aTable.setBorder(2);// 边框 // 设置表头 Cell haderCell = new Cell("表格表头"); haderCell.setHeader(true); haderCell.setColspan(3); aTable.addCell(haderCell); aTable.endHeaders(); Font fontChinese = new Font(bfChinese, 12, Font.NORMAL,Color.GREEN); Cell cell = new Cell(new Phrase("这是一个测试的 3*3 Table 数据",fontChinese)); cell.setVerticalAlignment(Element.ALIGN_TOP); cell.setBorderColor(new Color(255, 0,0)); cell.setRowspan(2); aTable.addCell(cell); aTable.addCell(new Cell("#1")); aTable.addCell(new Cell("#2")); aTable.addCell(new Cell("#3")); aTable.addCell(new Cell("#4")); Cell cell3 = new Cell(new Phrase("一行三列数据",fontChinese)); cell3.setColspan(3); cell3.setVerticalAlignment(Element.ALIGN_CENTER); aTable.addCell(cell3); document.add(aTable); document.add(new Paragraph("\n")); // 添加图片 Image.getInstance即可以放路径又可以放二进制字节流 Image img = Image.getInstance("d:\\img01800.jpg"); img.setAbsolutePosition(0,0); img.setAlignment(Image.RIGHT);// 设置图片显示位置 img.scaleAbsolute(60, 60);// 直接设定显示尺寸 // img.scalePercent(50);//表示显示的大小为原尺寸的50% // img.scalePercent(25,12);//图像高宽的显示比例 // img.setRotation(30);//图像旋转一定角度 document.add(img); document.close(); } public static void main(String[] args) { CreateWordDemo word = new CreateWordDemo(); String file ="d:/demo1.doc"; try { word.createDocContext(file); } catch (DocumentException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } }
现在想把itext中的paragraph做成目录标题 怎么做
OFFICE文档使用POI控件,PDF可以使用PDFBOX0.7.3控件,完全支持中文,用XPDF也行,不过感觉PDFBOX比较好,而且作者也在更新。
水平有限,万望各位指正WORD:import org.apache.lucene.document.Document;import org.apache.lucene.document.Field;import org.apache.poi.hwpf.extractor.WordExtractor;import java.io.File;import java.io.InputStream;import java.io.FileInputStream;import com.search.code.Index;public Document getDocument(Index index, String url, String title, InputStream is) throws DocCenterException {String bodyText = null;try {WordExtractor ex = new WordExtractor(is);//is是WORD文件的InputStream bodyText = ex.getText();if(!bodyText.equals("")){index.AddIndex(url, title, bodyText);}}catch (DocCenterException e) {throw new DocCenterException("无法从该Mocriosoft Word文档中提取内容", e);}catch(Exception e){e.printStackTrace();}}return null;}Excel:import org.apache.lucene.document.Document;import org.apache.lucene.document.Field;import org.apache.poi.hwpf.extractor.WordExtractor;import org.apache.poi.hssf.usermodel.HSSFWorkbook; import org.apache.poi.hssf.usermodel.HSSFSheet; import org.apache.poi.hssf.usermodel.HSSFRow; import org.apache.poi.hssf.usermodel.HSSFCell; import java.io.File;import java.io.InputStream;import java.io.FileInputStream;import com.search.code.Index;public Document getDocument(Index index, String url, String title, InputStream is) throws DocCenterException {StringBuffer content = new StringBuffer();try{HSSFWorkbook workbook = new HSSFWorkbook(is);//创建对Excel工作簿文件的引用 for (int numSheets = 0; numSheets这样可以么?
转载请注明出处51数据库 » itext word 表格