[英]Converting html file to pdf using iText in JApplet
我正在為一個項目使用 iText。 我的程序應該從瀏覽器內部運行,我需要它將 html 文件轉換為 pdf 文件。 當我從 NetBeans 運行該程序時,一切正常。 我在我的 jar 上簽名並在瀏覽器中運行 Applet 然后我得到這個錯誤:
Errorjava.security.AccessControlException: access denied ("java.lang.RuntimePermission" "getenv.windir")
為了這篇文章的目的,我制作了一個簡單的 JApplet 代碼,它有同樣的問題:
public class RunApplet extends JApplet {
@Override
public void init() {
this.add(new JLabel("This is a labe"));
File f = new File("C:/ReportGen/data.html");
File pdf = new File("C:/ReportGen/data.pdf");
try {
pdf.createNewFile();
Document pdfDocument = new Document();
PdfWriter writer = PdfWriter.getInstance(pdfDocument, new FileOutputStream(pdf));
pdfDocument.open();
XMLWorkerHelper worker = XMLWorkerHelper.getInstance();
FontFactoryImp imp = new FontFactoryImp();
imp.getFont("Arial");
FontFactory.setFontImp(imp);
worker.parseXHtml(writer, pdfDocument, new FileInputStream(f));
pdfDocument.close();
writer.close();
this.add(new JLabel(f.getAbsolutePath()));
} catch (Exception ex) {
this.add(new JTextField("Error"+ex));
}
}
}
html 文件已創建並且很好,但是當我創建 pdf 文件時出現異常並且 pdf 文件實際上已創建,但已損壞並且我無法打開它。 在此先感謝您的時間。
首先,我在你的問題中看到了這個錯誤:
Errorjava.security.AccessControlException: access denied ("java.lang.RuntimePermission" "getenv.windir")
您需要簽署您的小程序才能訪問您的文件系統。 也請參閱此鏈接和此鏈接。
其次,我嘗試了以下代碼:
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import com.itextpdf.text.Document;
import com.itextpdf.text.pdf.PdfWriter;
import com.itextpdf.tool.xml.XMLWorkerHelper;
public class main {
public static void main(String[] args) {
File f = new File("C:/tmp/data.htm");
File pdf = new File("C:/tmp/data.pdf");
Document pdfDocument = null;
PdfWriter pdfWriter = null;
try {
pdfDocument = new Document();
pdfWriter = PdfWriter.getInstance(pdfDocument, new FileOutputStream(pdf));
pdfDocument.open();
XMLWorkerHelper.getInstance().parseXHtml(pdfWriter, pdfDocument,
new FileInputStream(f));
pdfDocument.close();
} catch (Exception ex) {
ex.printStackTrace();
}
}
}
如果文件 data.htm(原始數據)是 htmlx,則工作正常。 但是如果 data.htm 不是 xml,我會得到這個錯誤:
com.itextpdf.tool.xml.exceptions.RuntimeWorkerException: Invalid nested tag head found, expected closing tag meta.
at com.itextpdf.tool.xml.XMLWorker.endElement(XMLWorker.java:134)
at com.itextpdf.tool.xml.parser.XMLParser.endElement(XMLParser.java:395)
at com.itextpdf.tool.xml.parser.state.ClosingTagState.process(ClosingTagState.java:70)
at com.itextpdf.tool.xml.parser.XMLParser.parseWithReader(XMLParser.java:235)
at com.itextpdf.tool.xml.parser.XMLParser.parse(XMLParser.java:213)
at com.itextpdf.tool.xml.parser.XMLParser.parse(XMLParser.java:174)
at com.itextpdf.tool.xml.XMLWorkerHelper.parseXHtml(XMLWorkerHelper.java:220)
at com.itextpdf.tool.xml.XMLWorkerHelper.parseXHtml(XMLWorkerHelper.java:185)
at main.main(main.java:44)
你能用你的數據和這個例子試試嗎? 不同之處在於我的示例不是小程序,而是獨立的 Java。
問候
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.