转pdf时,有2种解决方法
1 itext ,这个我就不说了 ,代码很多,我想你也实践过。
2 通过openoffice转换为pdf 。这个比较繁琐,要安装一系列的组件,网络上也有类似的文章,前段时间我开发仿百度文库的功能,就是将普通的办公文档在网页显示,办公文档-openoffice(pdf)-swftools(swf)-flexpaper,就是这样的流程,如果需要,我将所用到的组件发你,代码就不能给你了(嘿嘿)。操作excel 或word 还是比较容易的,将生成好的excel或word转换为pdf非常容易,基本上是原样输出
组件列表
如何用纯java代码实现word转pdf
两种方案:
方案一、一部到位的第三方工具,应该有,一般都是收费的,看你找不找得到。
方案二、两不到位,需要了解word与excel的内部格式,实现难度比较大
1.word解析工具(将word解析到内存,apache poi可以做到);
2.pdf导出工具(将内存中数据导出成pdf,这个具体工具没使用过,自己找找看)
java导出word表格
首先我用的技术是 poi
这是代码,一个工具类得调用
public class WordUtil {
/**
* 基于模板文件导出 word 文档,此方法主要是用来处理文档中需要替换的文本内容,对图片和表格无效
*
* @param templatePath
* 模板文件的路径,要求路径中要包含全名,并且模板文件只能是 07 及以上格式,即 docx 的文件
* @param destFilePath
* 导出文件的存放路径,包含文件名,例如,E:/test/小区公告.docx
* @param data
* 用来替换文档中预定义的字符串,要求预定义的字符串与 data 中的 key 值要相同
*/
public static void exportWordByTemplate(String templatePath,
String destFilePath, Map<String, String> data) {
FileOutputStream out = null;
XWPFDocument doc = null;
try {
doc = new XWPFDocument(POIXMLDocument.openPackage(templatePath));
List<XWPFRun> listRun;
List<XWPFParagraph> listParagraphs = doc.getParagraphs();
for (int i = 0; i < listParagraphs.size(); i++) {
listRun = listParagraphs.get(i).getRuns();
for (int j = 0; j < listRun.size(); j++) {
if (data.get(listRun.get(j).getText(0)) != null) {
String val = data.get(listRun.get(j).getText(0));
listRun.get(j).setText(val, 0);
}
}
}
File destFile = new File(destFilePath);
if (!destFile.getParentFile().exists()) {
destFile.getParentFile().mkdirs();
}
out = new FileOutputStream(destFilePath);
doc.write(out);
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
if (out != null)
out.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
/**
* 基于模板文件导出 word 文档,该方法支持03格式,但是此方法只能保留文档内容,不能保留文档中的样式和图片,建议将模板使用 07 的格式保存
*
* @param templatePath
* 模板文件的路径
* @param destFilePath
* 导出文件的存放路径,包含文件名,例如,E:/test/小区公告.doc
* @param data
* 用来替换文档中预定义的字符串,要求预定义的字符串与 data 中的 key 值要相同
*/
public static void export03WordByTemplate(String templatePath,
String destFilePath, Map<String, String> data) {
try {
WordExtractor doc = new WordExtractor(new FileInputStream(
templatePath));
String content = doc.getText();
for (String key : data.keySet()) {
content = content.replaceAll(key, data.get(key));
}
byte b[] = content.getBytes();
ByteArrayInputStream bais = new ByteArrayInputStream(b);
POIFSFileSystem fs = new POIFSFileSystem();
DirectoryEntry directory = fs.getRoot();
directory.createDocument("WordDocument", bais);
FileOutputStream ostream = new FileOutputStream(destFilePath);
fs.writeFilesystem(ostream);
bais.close();
ostream.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
public static void main(String[] args) throws Exception {
Map<String, String> maps = new HashMap<String, String>();
maps.put("appellation", "万达公寓业主:");
maps.put(
"main_body",
"输出的内容");
maps.put("date", "2013年1月23日");
exportWordByTemplate("E:/sss 2.docx", "E:/test/test.doc", maps);
}
}
"E:/sss 2.docx 模板存放的地址。
E:/test/test.doc 新生成的地址。
阿帕奇的这个支持导PDF格式的吗
怎么用java导出word文档
java导出word大致有6种解决方案:
1:Jacob是Java-COM Bridge的缩写,它在Java与微软的COM组件之间构建一座桥梁。使用Jacob自带的DLL动态链接库,并通过JNI的方式实现了在Java平台上对COM程序的调用。DLL动态链接库的生成需要windows平台的支持。该方案只能在windows平台实现,是其局限性。
2:Apache POI包括一系列的API,它们可以操作基于MicroSoft OLE 2 Compound Document Format的各种格式文件,可以通过这些API在Java中读写Excel、Word等文件。他的excel处理很强大,对于word还局限于读取,目前只能实现一些简单文件的操作,不能设置样式。
3:Java2word是一个在java程序中调用 MS Office Word 文档的组件(类库)。该组件提供了一组简单的接口,以便java程序调用他的服务操作Word 文档。 这些服务包括: 打开文档、新建文档、查找文字、替换文字,插入文字、插入图片、插入表格,在书签处插入文字、插入图片、插入表格等。填充数据到表格中读取表格数据 ,1.1版增强的功能: 指定文本样式,指定表格样式。如此,则可动态排版word文档。是一种不错的解决方案。
4:iText是著名的开放源码的站点sourceforge一个项目,是用于生成PDF文档的一个java类库。通过iText不仅可以生成PDF或rtf的文档,而且可以将XML、Html文件转化为PDF文件。功能强大。
5:JSP输出样式,该方案实现简单,但是处理样式有点缺陷,简单的导出可以使用。
6:用XML做就很简单了。Word从2003开始支持XML格式,大致的思路是先用office2003或者2007编辑好word的样式,然后另存为xml,将xml翻译为FreeMarker模板,最后用java来解析FreeMarker模板并输出Doc。经测试这样方式生成的word文档完全符合office标准,样式、内容控制非常便利,打印也不会变形,生成的文档和office中编辑文档完全一样。
java导出word文档后,怎么在客户端提供下载。。。
服务器端生成然后将文件通过网络传递给客户端。
如果要制造客户端生成的假象就在传递完后服务器删除word文件。
服务器生成Word文件——>客户端与服务器建立通讯——>服务器发送文件给客户端
有关Java导出pdf的功能
转pdf时,有2种解决方法
1 itext ,这个我就不说了 ,代码很多,我想你也实践过。
2 通过openoffice转换为pdf 。这个比较繁琐,要安装一系列的组件,网络上也有类似的文章,前段时间我开发仿百度文库的功能,就是将普通的办公文档在网页显示,办公文档-openoffice(pdf)-swftools(swf)-flexpaper,就是这样的流程,如果需要,我将所用到的组件发你,代码就不能给你了(嘿嘿)。操作excel 或word 还是比较容易的,将生成好的excel或word转换为pdf非常容易,基本上是原样输出
组件列表
java poi导出word 可以设置格式吗
读取word 2003及word 2007需要的jar包
读取 2003 版本(.doc)的word文件相对来说比较简单,只需要 poi-3.5-beta6-.jar 和 poi-scratchpad-3.5-beta6-.jar 两个 jar 包即可, 而 2007 版本(.docx)就麻烦多,我说的这个麻烦不是我们写代码的时候麻烦,是要导入的 jar 包比较的多,有如下 7 个之多:
1. openxml4j-bin-beta.jar
2. poi-3.5-beta6-.jar
3. poi-ooxml-3.5-beta6-.jar
4 .dom4j-1.6.1.jar
5. geronimo-stax-api_1.0_spec-1.0.jar
6. ooxml-schemas-1.0.jar
7. xmlbeans-2.3.0.jar
其中 4-7 是 poi-ooxml-3.5-beta6-.jar 所依赖的 jar 包(在 poi-bin-3.5-beta6-.tar.gz 中的 ooxml-lib 目录下可以找到)。
2.换行符号
硬换行:文件中换行,如果是键盘中使用了"enter"的换行。
软换行:文件中一行的字符数容量有限,当字符数量超过一定值时,会自动切到下行显示。
对程序来说,硬换行才是可以识别的、确定的换行,软换行与字体大小、缩进有关。
3.读取的注意事项
值得注意的是: POI 在读取不会读取 word 文件中的图片信息; 还有就是对于 2007 版的 word(.docx), 如果 word 文件中有表格,所有表格中的数据都会在读取出来的字符串的最后。
4.读取word文本内容代码
1 import java.io.File;
2 import java.io.FileInputStream;
3 import java.io.InputStream;
4
5 import org.apache.poi.POIXMLDocument;
6 import org.apache.poi.POIXMLTextExtractor;
7 import org.apache.poi.hwpf.extractor.WordExtractor;
8 import org.apache.poi.openxml4j.opc.OPCPackage;
9 import org.apache.poi.xwpf.extractor.XWPFWordExtractor;
10
11 public class Test {
12 public static void main(String[] args) {
13 try {
14 InputStream is = new FileInputStream(new File("2003.doc"));
15 WordExtractor ex = new WordExtractor(is);
16 String text2003 = ex.getText();
17 System.out.println(text2003);
18
19 OPCPackage opcPackage = POIXMLDocument.openPackage("2007.docx");
20 POIXMLTextExtractor extractor = new XWPFWordExtractor(opcPackage);
21 String text2007 = extractor.getText();
22 System.out.println(text2007);
23
24 } catch (Exception e) {
25 e.printStackTrace();
26 }
27 }
28 }
JAVA 导出WORD的问题
你好,关于你这个,显示回车"字符"的问题,其实你是不必在意的。
如果你想不要该“字符”显示出来,是要在你的word上面,手动去设置的。
也就是说,如果你要把它不显示出来,只要:
点击菜单栏中的“视图”,选择“显示段落标记”即可。
这跟你的java程序无关
亲 问题主要不是回车段落符显不显示的问题,是 那个问号的问题
因为不知道你想要什么样的效果。你可以弄个你想得到的效果图出来吗?
转载请注明出处51数据库 » javaword导出pdf Java导出PDF的功能怎么实现
文化人40210584



