简体   繁体   中英

iText doesn't like my special characters

I'm trying to generate a pdf file using iText.
The file gets produced just fine, but I can seem to use special characters like german ä, ö, ...
The sentence I want to be written is (for example)

■ ...ä...ö...

but the output is

■...ä...ö...

(I had to kind of blur the sentences, but I guess you see what I'm talking about...)

Somehow this black block-thing and all "Umlaute" can't be generated ...
The font used is the following:

private static Font smallBold = new Font(Font.FontFamily.TIMES_ROMAN, 12,
  Font.BOLD);

So there should be no problem about the font not having these characters...
I'm using IntelliJ Idea to develop, the encoding of the .java file is set to UTF-8, so there should be no problem too...

I'm kind of lost here; does anyone know what i may do to get it working?

Thanks in advance and greetz gilaras

---------------UPDATE---------------

So here's (part of) the code:

@Controller
public class Generator {
  ...
  Font font = new Font(Font.FontFamily.TIMES_ROMAN, 9f, Font.BOLD);
  ...

  Paragraph intro = new Paragraph("Ich interessiere mich für ...!", font_12_bold);

  Paragraph wantContact = new Paragraph("■ Ich hätte gerne ... ", font); 

  ...

  Phrase south = new Phrase("■ Süden    □ Ost-West  ...");

  ...


  @RequestMapping(value = "/generatePdf", method = RequestMethod.POST)
  @ResponseBody
  public String generatePdf(HttpServletRequest request) throws IOException, DocumentException, com.lowagie.text.DocumentException {
    Document document = new Document();
    PdfWriter.getInstance(document, new FileOutputStream(FILE));
    addMetaData(document);
    document.open();
    addContent(document, request);
    document.add(new Paragraph("äöü"));
    document.close();
    return "";
  }

  private void addContent(Document document, HttpServletRequest request)
      throws DocumentException {
    Paragraph preface = new Paragraph();
    preface.setAlignment(Element.ALIGN_JUSTIFIED);
    addEmptyLine(preface, 1);
    preface.add(new Paragraph("Rückantwort", catFont));
    addEmptyLine(preface, 2);
    preface.add(intro);
    addEmptyLine(preface, 1);

    if (request.getParameter("dec1").equals("wantContact")) {
      preface.add(wantContact);
    } else {
      ...
    }
    document.add(preface);
  }

  private static void addEmptyLine(Paragraph paragraph, int number) {
    for (int i = 0; i < number; i++) {
      paragraph.add(new Paragraph(" "));
    }
  }

  private static void addMetaData(Document document) {
    document.addTitle("...");
    document.addSubject("...");
    document.addKeywords("...");
    document.addAuthor("...");
    document.addCreator("...");
  }

}

I had to take some things out, but I kept some Umlaut-character and other special characters, so that you can see, where the problem occurs ... :-)

You might want to try and embed the font using this technique:

BaseFont times = BaseFont.createFont(BaseFont.TIMES_ROMAN, BaseFont.IDENTITY_H, BaseFont.EMBEDDED);
Font font = new Font(times, 12, Font.BOLD);

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM