Я создаю простой процесс с использованием TIBCO BusinessWork и пытаюсь преобразовать HTML-файл в файл PDF.Преобразование HTML в PDF с использованием проекта Apop FOP в TIBCO BW
Я скачал и добавил Apache FOP в качестве псевдонима библиотеки для моего проекта, и написал следующий код:
package ProcessDefinition;
import java.util.*;
import java.io.*;
import org.apache.fop.apps.FopFactory;
import org.apache.fop.apps.Fop;
import org.apache.fop.apps.MimeConstants;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.stream.StreamSource;
import javax.xml.transform.sax.SAXResult;
public class ProcessDefinitionJavaCode{
/****** START SET/GET METHOD, DO NOT MODIFY *****/
protected String htmlBinary = "";
protected String outputPath = "";
public String gethtmlBinary() {
return htmlBinary;
}
public void sethtmlBinary(String val) {
htmlBinary = val;
}
public String getoutputPath() {
return outputPath;
}
public void setoutputPath(String val) {
outputPath = val;
}
/****** END SET/GET METHOD, DO NOT MODIFY *****/
public ProcessDefinitionJavaCode() {
}
public void invoke() throws Exception {
/* Available Variables: DO NOT MODIFY
In : String htmlBinary
In : String outputPath
* Available Variables: DO NOT MODIFY *****/
FopFactory fopFactory = FopFactory.newInstance();
// Step 2: Set up output stream.
// Note: Using BufferedOutputStream for performance reasons (helpful with FileOutputStreams).
OutputStream out = new BufferedOutputStream(new FileOutputStream(new File(outputPath)));
try {
// Step 3: Construct fop with desired output format
Fop fop = fopFactory.newFop(MimeConstants.MIME_PDF, out);
// Step 4: Setup JAXP using identity transformer
TransformerFactory factory = TransformerFactory.newInstance();
Transformer transformer = factory.newTransformer(); // identity transformer
// Step 5: Setup input and output for XSLT transformation
// Setup input stream
StreamSource src = new StreamSource(new File(htmlPath));
// Resulting SAX events (the generated FO) must be piped through to FOP
SAXResult res = new SAXResult(fop.getDefaultHandler());
// Step 6: Start XSLT transformation and FOP processing
transformer.transform(src, res);
} finally {
//Clean-up
out.close();
}}
}
К сожалению, я получаю следующее исключение:
BW-JAVA-100001 Job-24000 Error in [Process Definition.process/Java Code]
While executing [invoke] encountered [java.lang.ExceptionInInitializerError] : [null at org.apache.fop.events.DefaultEventBroadcaster.loadModel(DefaultEventBroadcaster.java:88)]
Я убедился, что добавил все соответствующие псевдонимы, и я не могу понять, чего мне здесь не хватает.
Кроме того, цель PDF создается с помощью следующего содержания:
%PDF-1.4
%клмн
Я пытаюсь преобразовать следующий HTML:
<html>
<body>
<h1>My First Heading</h1>
<p>My first paragraph.</p>
</body>
</html>
Вы имели в виду DefaultEventBroadcaster.java строку 88? –
Просмотрев эту ссылку: http://grepcode.com/file/repo1.maven.org/maven2/org.apache.xmlgraphics/fop/1.1/org/apache/fop/events/DefaultEventBroadcaster.java I ' ve заметил, что строка: return EventModelParser.parse (новый StreamSource (in)); – ohadinho
Я прикрепил простой html, который я пытаюсь преобразовать – ohadinho