java – 使用itext将文本文件转换为pdf时设置编码

前端之家收集整理的这篇文章主要介绍了java – 使用itext将文本文件转换为pdf时设置编码前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

我正在努力让itext正确输出我的UTF-8编码文本,实际上输入文件包含像°和拉丁字符(é,è,à…)这样的符号.

但我没有找到解决方案这是我正在使用的代码

  1. BufferedReader input = null;
  2. Document output = null;
  3. System.out.println("Convert text file to pdf");
  4. System.out.println("input : " + args[0]);
  5. System.out.println("output : " + args[1]);
  6. try {
  7. // text file to convert to pdf as args[0]
  8. input =
  9. new BufferedReader (new FileReader(args[0]));
  10. // letter 8.5x11
  11. // see com.lowagie.text.PageSize for a complete list of page-size constants.
  12. output = new Document(PageSize.LETTER,40,40);
  13. // pdf file as args[1]
  14. PdfWriter.getInstance(output,new FileOutputStream (args[1]));
  15. output.open();
  16. output.addAuthor("RealHowTo");
  17. output.addSubject(args[0]);
  18. output.addTitle(args[0]);
  19. BaseFont courier = BaseFont.createFont(BaseFont.COURIER,BaseFont.CP1252,BaseFont.EMBEDDED);
  20. Font font = new Font(courier,12,Font.NORMAL);
  21. Chunk chunk = new Chunk("",font);
  22. output.add(chunk);
  23. String line = "";
  24. while(null != (line = input.readLine())) {
  25. System.out.println(line);
  26. Paragraph p = new Paragraph(line);
  27. p.setAlignment(Element.ALIGN_JUSTIFIED);
  28. output.add(p);
  29. }
  30. System.out.println("Done.");
  31. output.close();
  32. input.close();
  33. System.exit(0);
  34. }
  35. catch (Exception e) {
  36. e.printStackTrace();
  37. System.exit(1);
  38. }
  39. }

任何想法将不胜感激.

最佳答案
当我查看你的代码时,我看到很多奇怪的东西.

>您说您需要UTF-8,但是使用BaseFont.CP1252而不是BaseFont.IDENTITY_H(这是使用Unicode时需要的“编码”)创建BaseFont对象.
>您使用标准的Type 1字体Courier,这是一种不知道如何渲染é,à…以及从未嵌入的字体的字体.如上所述,在这种情况下,BaseFont.EMBEDDED参数将被忽略!
>您不要将此字体与具有实际内容的对象一起使用.将实际内容放入使用默认字体“Helvetica”创建的段落中,该字体不知道如何渲染é,à…

解决此问题,您需要使用适当的字体创建段落.这不是标准的1型字体,而是像courier.ttf.您还需要使用适当的编码:BaseFont.IDENTITY_H.

猜你在找的Java相关文章