也许只要大神几分钟时间,多谢
自己在做一个Html转换为Pdf格式的java实现的程序。不料却老报错,执行不了,希望得到大家的帮助,不尽感谢啊啊啊啊~错误如图。代码如下。(运行环境:Netbeans 6.8,WinXp)
import java.io.FileInputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.io.OutputStream;
import java.io.ByteArrayOutputStream;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.dom.DOMResult;
import javax.xml.transform.dom.DOMSource;
import org.w3c.tidy.Tidy;
import org.w3c.dom.Document;
import org.apache.fop.apps.Driver;
import org.apache.fop.tools.DocumentInputSource;
import org.apache.avalon.framework.logger.ConsoleLogger;
import org.apache.avalon.framework.logger.Logger;
/*
* Class that converts HTML to PDF using
* the DOM interfaces of JTidy, Xalan, and FOP.
*
* @author N. Afshartous
*
*/
public class Html2Pdf {
public static void main(String[] args) {
// open file
if (args.length!= 2) {
System.out.println("Usage: Html2Pdf htmlFile styleSheet");
System.exit(1);
}
FileInputStream input = null;
String htmlFileName = args[0];
try {
input = new FileInputStream(htmlFileName);
}
catch (java.io.FileNotFoundException e) {
System.out.println("File not found: " + htmlFileName);
}
Tidy tidy = new Tidy();
Document xmlDoc = tidy.parseDOM(input, null);
Document foDoc = xml2FO(xmlDoc, args[1]);
String pdfFileName = htmlFileName.substring(0, htmlFileName.indexOf(".")) + ".pdf";
try {
OutputStream pdf = new FileOutputStream(new File(pdfFileName));
pdf.write(fo2PDF(foDoc));
}
catch (java.io.FileNotFoundException e) {
System.out.println("Error creating PDF: " + pdfFileName);
}
catch (java.io.IOException e) {
System.out.println("Error writing PDF: " + pdfFileName);
}
}
/*
* Applies stylesheet to input.
*
* @param xml The xml input Document
*
* @param stylesheet Name of the stylesheet
*
* @return Document Result of the transform
*/
private static Document xml2FO(Document xml, String styleSheet) {
DOMSource xmlDomSource = new DOMSource(xml);
DOMResult domResult = new DOMResult();
Transformer transformer = getTransformer(styleSheet);
if (transformer == null) {
System.out.println("Error creating transformer for " + styleSheet);
System.exit(1);
}
try {
transformer.transform(xmlDomSource, domResult);
}
catch (javax.xml.transform.TransformerException e) {
return null;
}
return (Document) domResult.getNode();
}
/*
* Apply FOP to XSL-FO input
*
* @param foDocument The XSL-FO input
*
* @return byte[] PDF result
*/
private static byte[] fo2PDF(Document foDocument) {
DocumentInputSource fopInputSource = new DocumentInputSource(foDocument);
try {
ByteArrayOutputStream out = new ByteArrayOutputStream();
Logger log = new ConsoleLogger(ConsoleLogger.LEVEL_WARN);
Driver driver = new Driver(fopInputSource, out);
driver.setLogger(log);
driver.setRenderer(Driver.RENDER_PDF);
driver.run();
return out.toByteArray();
} catch (Exception ex) {
return null;
}
}
/*
* Create and return a Transformer for the specified stylesheet.
*
* Based on the DOM2DOM.java example in the Xalan distribution.
*/
private static Transformer getTransformer(String styleSheet) {
try {
TransformerFactory tFactory = TransformerFactory.newInstance();
DocumentBuilderFactory dFactory = DocumentBuilderFactory.newInstance();
dFactory.setNamespaceAware(true);
DocumentBuilder dBuilder = dFactory.newDocumentBuilder();
Document xslDoc = dBuilder.parse(styleSheet);
DOMSource xslDomSource = new DOMSource(xslDoc);
return tFactory.newTransformer(xslDomSource);
}
catch (javax.xml.transform.TransformerException e) {
e.printStackTrace();
return null;
}
catch (java.io.IOException e) {
e.printStackTrace();
return null;
}
catch (javax.xml.parsers.ParserConfigurationException e) {
e.printStackTrace();
return null;
}
catch (org.xml.sax.SAXException e) {
e.printStackTrace();
return null;
}
}
}
- 时间格式化 几分钟前 几小时前 几天前
- iOS 时间戳转换为几分钟前等
- js图片闪动特效可以控制间隔时间如几分钟闪动一下
- 获取几天几小时几分钟之前的时间
- php中拿过来的time时间戳改为刚刚 几分钟前 几天前
- iOS实现时间显示几分钟前,几小时前以及刚刚的方法示例
- Android 将时间转化成几分钟前、几天前等字样的工具类
- Android编程实现将时间转化成几分钟前、几天前等形式的工具类
- 关于js如何将毫秒类型的时间转化成几小时几分钟前或者是日期(yyyy-DD-MM)
- 计算几天前,几小时前,几分钟前,几周前,几个月前,几年前的时间
- 打造“免杀”的恶意程序需要多久?用这个工具,只要几分钟
- #Java大神一个实例让你几分钟学会ArrayList
- DateUtil,时间常用操作(大神勿喷)
- 老猪带你玩转自定义控件三——sai大神带我实现ios 8 时间滚轮控件
- Collection -> .Net集合类型大全,只要灵活运用可以节省很多开发时间和提高程序运行效率
- 码农与大神也许只是一步之遥
- 时间戳 得到(几分钟前,今天HH:mm, 昨天HH:mm,MM-dd HH:mm , yyyy-MM-dd HH:mm)
- 将时间显示为刚刚、几分钟前、几小时前
- 使用C#把发表的时间改为几个月,几天前,几小时前,几分钟前,或几秒前
- SQL语句:两个时间区间段,只要有交集,就能筛选出来