2016-09-08 5 views
-3

Ich habe einen Code geschrieben, der einfache PDF-Dokumente generiert. Aber ich konnte Unicode-Zeichen nicht in pdf darstellen. Irgendwelche Vorschläge würden geschätzt werden.Problem in Bezug auf Unicode in pdf

+0

Ich würde vorschlagen, dass Sie einige spezifischere Informationen zur Verfügung stellen. Wie können wir sagen, was Sie falsch machen, wenn Sie nur sagen, dass Sie einen Code geschrieben haben, der einfache PDF-Dokumente generiert? Alles was zu sagen ist, dass du es falsch gemacht hast. – mkl

+0

Welche Bibliothek verwenden Sie zum Erstellen von PDF (iText oder ein anderes Tool)? Welche Programmiersprache verwenden Sie (Java, C#, ...)? Es ist schwer zu glauben, dass Sie eine spezifische Antwort auf solch eine unvollständige Frage erwarten würden. –

Antwort

0

Angenommen, dass Sie die folgenden String s in Unicode haben:

public static final String CZECH = 
     "Podivn\u00fd p\u0159\u00edpad Dr. Jekylla a pana Hyda"; 
public static final String RUSSIAN = 
     "\u0421\u0442\u0440\u0430\u043d\u043d\u0430\u044f " 
     + "\u0438\u0441\u0442\u043e\u0440\u0438\u044f " 
     + "\u0434\u043e\u043a\u0442\u043e\u0440\u0430 " 
     + "\u0414\u0436\u0435\u043a\u0438\u043b\u0430 \u0438 " 
     + "\u043c\u0438\u0441\u0442\u0435\u0440\u0430 " 
     + "\u0425\u0430\u0439\u0434\u0430"; 
public static final String KOREAN = 
     "\ud558\uc774\ub4dc, \uc9c0\ud0ac, \ub098"; 

Dann müssen Sie Font-Programme finden, die nur diese Zeichen zu machen. Zum Beispiel:

public static final String FONT = "src/main/resources/fonts/FreeSans.ttf"; 
public static final String HCRBATANG = "src/main/resources/fonts/HANBatang.ttf"; 

FreeSans ist eine freie Schriftart, die normalerweise mit Linux geliefert wird; Es unterstützt viele Sprachen, aber nicht alle. Zum Beispiel: Koreanisch wird nicht unterstützt, daher verwenden wir auch HAN Batang.

Wir verwenden diese Programme Schriftart PdfFont Objekte zu erstellen, und wir verwenden diese Objekte in Paragraph Objekte:

PdfFont freeUnicode = 
    PdfFontFactory.createFont(FONT, PdfEncodings.IDENTITY_H, true); 
document.add(new Paragraph().setFont(freeUnicode) 
    .add(CZECH).add(" by Robert Louis Stevenson")); 
document.add(new Paragraph().setFont(freeUnicode) 
    .add(RUSSIAN).add(" by Robert Louis Stevenson")); 
PdfFont fontUnicode = 
    PdfFontFactory.createFont(HCRBATANG, PdfEncodings.IDENTITY_H, true); 
document.add(new Paragraph().setFont(fontUnicode) 
    .add(KOREAN).add(" by Robert Louis Stevenson")); 

Das Ergebnis wird in der folgenden Abbildung gezeigt:

enter image description here

Wie Sie können sehen, Unicode ist sehr einfach, wenn Sie iText 7 verwenden. Dieses Beispiel ist chapter 1 des Tutorials entnommen.

Wenn dies nicht die Informationen sind, nach denen Sie gesucht haben, beheben Sie Ihre Frage und erklären Sie, welches Tool Sie anstelle von iText und welcher Programmiersprache verwendet haben.