web-dev-qa-db-fra.com

Comment ajouter de nouvelles polices à Itext en utilisant java

quand je veux utiliser une police, c'est iText, je fais ce qui suit:

protected final static Font FONT_SIZE_11_BOLD = new Font(Font.HELVETICA, 11f, Font.BOLD);

et puis je peux l'utiliser où je veux, comme suit:

monthSize11 = new Chunk(month, FONT_SIZE_11_BOLD);

Je souhaite utiliser Arial au lieu de HELVETICA, mais Arial n’est pas directement disponible .. Je veux dire, je ne peux pas faire 

new Font(Font.ARIAL, 11f, Font.BOLD);

car Arial n’est pas défini dans la classe Font, mais le fichier Arial.ttf se trouve sur mon système sous C:\WINDOWS\Fonts . La question est de savoir comment je peux lier le fichier Arial.ttf à iText et comment l’utiliser. il.

Merci beaucoup d'avance.

EDIT: Je voudrais utiliser des polices propres. Je veux dire, j'ai un fichier appelé "myCompany.ttf" où les propres polices ont été définies et à certains endroits que je dois utiliser. Le problème ne concerne pas seulement Arial. 

16
Luixv
BaseFont base = BaseFont.createFont("c:/windows/fonts/arial.ttf", BaseFont.WINANSI);
Font font = new Font(base, 11f, Font.BOLD);
....

Lire plus ici .

23
dacwe

Chargez-le depuis le JAR en utilisant une barre oblique; sinon, utilisez le chemin absolu de votre police (C:\...\fonts\Sansation_Regular.ttf). Par exemple:

Font font = FontFactory.getFont("/fonts/Sansation_Regular.ttf",
    BaseFont.IDENTITY_H, BaseFont.EMBEDDED, 0.8f, Font.NORMAL, BaseColor.BLACK);
BaseFont baseFont = font.getBaseFont();
  • Le chemin relatif de la police est le suivant: 'src/main/resources/fonts'
  • Utiliser Itext 5.4.5
  • Exemple de code
22
4F2E4A2E

Utilisez BaseFont.createFont pour créer un nouvel objet Font.

Vous pouvez passer n'importe quelle police Type1 ou TTF. Vous devrez simplement vous assurer que votre fichier de polices est distribué avec. Refer API BaseFont

3
Ankit Gupta

Créer des polices personnalisées avec itext est simple

J'avais écrit le code pour le même ci-dessous

Aidera certainement quelqu'un

public class CustomFontStyle {
    public static void main(String[] args) {

        // creation of the document with a certain size and certain margins
        // may want to use PageSize.LETTER instead
        Document document = new Document(PageSize.A4, 50, 50, 50, 50);
        try {
            // creation of the different writers
            PdfWriter writer = PdfWriter.getInstance(document, new FileOutputStream("CustomFontsStyle.pdf"));
            final String NEWLINE = "\n";
            document.open();
            Phrase phrase = new Phrase();

            BaseFont baseFont3 = BaseFont.createFont("Xenotron.ttf", BaseFont.WINANSI, BaseFont.NOT_EMBEDDED);
            Font font2 = new Font(baseFont3, 12);

            document.add(new Paragraph("Custom Xenotron Font: ", font2));

            phrase.add(NEWLINE);

            document.add(phrase);

            document.close();

        }
        catch (Exception ex) {
            System.err.println(ex.getMessage());
        }
    }

}
0
Mohit Singh