使用iText和htmlWorker的希腊字符和图像

时间:2012-05-20 16:40:31

标签: java playframework itext

我在Web应用程序中有以下代码用于PDF导出,该应用程序使用2x2表格单元格创建PDF。

public static void myexport2() throws IOException{
    try {
        com.itextpdf.text.Document document = new com.itextpdf.text.Document(PageSize.A4);
        PdfWriter pdfWriter = PdfWriter.getInstance(document, new FileOutputStream("C://Users/gkarapatis/Desktop/testpdf.pdf"));
        document.open();
        document.addAuthor("Author of the Doc");
        document.addCreator("Creator of the Doc");
        document.addSubject("Subject of the Doc");
        document.addCreationDate();
        document.addTitle("This is the title");
        HTMLWorker htmlWorker = new HTMLWorker(document);
        String str="<table height=300, border=\"1\"><tr><td></td><td></td></tr><tr><td>1</td><td></td></tr></table>"     

        htmlWorker.parse(new StringReader(str));
        document.close();
    } catch(DocumentException e) {
        e.printStackTrace();
    } catch (FileNotFoundException e) {
        e.printStackTrace();
    } catch (UnsupportedEncodingException e) {
        e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
    }
}

当我向HTML单元格添加希腊字符时,它不会出现在导出的PDF文件中。我应该怎么做才能将Unicode添加到我的导出中。 这是HTMLWorker的问题吗?

当我尝试将图像添加到添加

的单元格时
img src=\"file://C:/Webapp/dsp/public/images/dsp1.jpg\" width=\"80\" height=\"81\" alt=\"\" border=\"0\"

它抛出了一个例外。 我正在使用play框架,它抛出的异常是“InvocationTargetException occured:null”

1 个答案:

答案 0 :(得分:0)

到目前为止,您使用PdfPTable更好地创建表。创建表格更简单,就像逐个单元格添加一样(每个单元格都是PdfPCell)。现在关于你的两个问题

  1. 使用特定的字体来显示希腊字符。当你使用Arialuni.ttf将它作为unicode嵌入时更好。然后如果你找到了特定的字体使用。
  2. 添加图像到单元格也很简单只需使用PdfPCell的添加方法。创建字体用于实现,你必须使用BaseFont类创建字体。(只需谷歌搜索每个部分,以便更好地理解。)导出的pdf不显示那些希腊字符因为它找不到代码点(Unicode)所代表的字形。
  3. 如果您可以附加预期输出的图像,我们可以提供一些见解。