खोज…


टिप्पणियों

IText के पहले संस्करणों में केवल एक फ़ॉन्ट वर्ग था: Font

इस फ़ॉन्ट के साथ, आप पाँच फ़ॉन्ट परिवारों से चौदह फोंट के लिए एक Font ऑब्जेक्ट बना सकते हैं: हेल्वेटिका (नियमित, बोल्ड, तिरछा, बोल्ड-तिरछा), टाइम्स रोमन (नियमित, बोल्ड, इटैलिक, बोल्ड-इटैलिक), कूरियर (नियमित, बोल्ड) , तिरछा, बोल्ड-तिरछा), प्रतीक और जैफ डिंगबैट्स।

इस तरह के एक Font ऑब्जेक्ट बनाया गया था:

Font font = new Font(FontFamily.TIMES_ROMAN);

उदाहरण के लिए, आपको फ़ॉन्ट का आकार भी परिभाषित करना होगा:

Font font14pt = new Font(FontFamily.TIMES_ROMAN, 14);

डिफ़ॉल्ट फ़ॉन्ट Helvetica था; डिफ़ॉल्ट फ़ॉन्ट आकार 12।

iText विकसित और अधिक फोंट समर्थित थे। इन फोंटों से आंतरिक रूप से निपटने के लिए BaseFont क्लास का उपयोग किया गया था। एक BaseFont वर्ग इस तरह बनाया गया था:

BaseFont bf_russian = BaseFont.createFont(
    "resources/fonts/FreeSans.ttf",
    "CP1251",
    BaseFont.EMBEDDED);

पहला पैरामीटर एक फ़ॉन्ट प्रोग्राम का पथ है, उदाहरण के लिए एक TTF फ़ाइल, दूसरा पैरामीटर एन्कोडिंग है, उदाहरण के लिए Cyrillic वर्णों के लिए CP1251, तीसरा पैरामीटर इंगित करता है कि क्या फ़ॉन्ट के सबसेट को एम्बेड करने की आवश्यकता है।

BaseFont वर्ग का उपयोग तब किया जाता है जब आप न्यूनतम स्तर पर सामग्री जोड़ते हैं, उदाहरण के लिए जब आपके कोड में टेक्स्ट ऑब्जेक्ट्स बनाकर beginText() , setFontAndSize() , setTextMatrix() , showText() , endText() अनुक्रमों का उपयोग किया जाता है। आमतौर पर, आप केवल निम्न-स्तरीय दृष्टिकोण का उपयोग करेंगे यदि आप एक पीडीएफ विशेषज्ञ हैं। यदि आपको पीडीएफ सिंटैक्स का कुछ भी पता नहीं है, तो आपको इस तरह के अनुक्रम का उपयोग नहीं करना चाहिए।

Font ऑब्जेक्ट बनाने के लिए आप BaseFont क्लास का भी उपयोग कर सकते हैं:

Font russian = new Font(bf_russian, 12);

अब हम Paragraph बनाने के लिए russian फ़ॉन्ट का उपयोग कर सकते हैं जिसमें रूसी पाठ शामिल है।

IText 5 में Font ऑब्जेक्ट्स बनाने के कुछ अन्य तरीके हैं, लेकिन यह सबसे सामान्य प्रक्रिया है। लोग कभी-कभी Font और BaseFont बीच के अंतर से भ्रमित होते थे, और वे हमेशा सही दृष्टिकोण का उपयोग नहीं करते थे।

हमने iText 7 में क्या तय किया है:

हमने चीजों को और अधिक समान बनाया। अब एक एकल PdfFont वर्ग है, और आप PdfFontFactory का उपयोग करके एक फ़ॉन्ट PdfFontFactory :

PdfFont font = PdfFontFactory.createFont(FontConstants.TIMES_ROMAN);
PdfFont russian = PdfFontFactory.createFont(
    "src/main/resources/fonts/FreeSans.ttf", "CP1251", true);

यदि आप किसी अन्य फ़ॉन्ट आकार पर स्विच करना चाहते हैं तो आपको अलग-अलग फ़ॉन्ट ऑब्जेक्ट बनाने की आवश्यकता नहीं है। किसी भिन्न फ़ॉन्ट आकार पर स्विच करना setFontSize() विधि का उपयोग करके किया जा सकता है:

Paragraph p = new Paragraph("Hello World! ")
    .add(new Text("Hallo Wereld! ").setFontSize(14))
    .add(new Text("Bonjour le monde! ").setFontSize(10));

डिफ़ॉल्ट फ़ॉन्ट अभी भी Helvetica है और डिफ़ॉल्ट फ़ॉन्ट का आकार अभी भी 12 है, लेकिन अब आप दस्तावेज़ के लिए एक फ़ॉन्ट (और एक फ़ॉन्ट आकार) को परिभाषित कर सकते हैं:

document.setFont(font);

इस स्थिति में एक फ़ॉन्ट को निर्दिष्ट किए बिना बिल्डिंग ब्लॉक (उदाहरण के लिए एक Paragraph ) को जोड़ने पर डिफ़ॉल्ट font होगा।

अधिक जानना चाहते हैं?

PdfFont वर्ग का परिचय दें जो iText 7 में अध्याय 1 है : बिल्डिंग ब्लॉक्स ट्यूटोरियल। मुफ्त ebook जाओ!

HelloWorldInternational.java (iText 5)

इस iText 5 उदाहरण में, हम विभिन्न फोंट का उपयोग करके विभिन्न भाषाओं में एक हैलो वर्ल्ड उदाहरण बनाएंगे:

यहाँ छवि विवरण दर्ज करें

public void createPdf(String dest)
    throws DocumentException, IOException {
    Document document = new Document();
    PdfWriter.getInstance(document, new FileOutputStream(dest));
    document.open();
    Font font = new Font(FontFamily.TIMES_ROMAN);
    Font font14pt = new Font(FontFamily.TIMES_ROMAN, 14);
    Font font10pt = new Font(FontFamily.TIMES_ROMAN, 10);
    BaseFont bf_russian = BaseFont.createFont(
        "resources/fonts/FreeSans.ttf",
        "CP1251",
        BaseFont.EMBEDDED);
    Font russian = new Font(bf_russian, 12);
    BaseFont bf_cjk = BaseFont.createFont(
        "resources/fonts/NotoSansCJKsc-Regular.otf",
        BaseFont.IDENTITY_H,
        BaseFont.EMBEDDED);
    Font cjk = new Font(bf_cjk, 12);
    Paragraph p = new Paragraph("Hello World! ", font);
    Chunk chunk = new Chunk("Hallo Wereld! ", font14pt);
    p.add(chunk);
    chunk = new Chunk("Bonjour le monde! ", font10pt);
    chunk.setTextRise(4);
    p.add(chunk);
    chunk = new Chunk(
        "\u0417\u0434\u0440\u0430\u0432\u0441\u0442\u0432\u0443\u043b\u0442\u0435 \u043c\u0438\u0440! ",
        russian);
    p.add(chunk);
    p.add(new Chunk("\u4f60\u597d\u4e16\u754c! ", cjk));
    p.add(new Chunk("\uc5ec\ubcf4\uc138\uc694 \uc138\uacc4!", cjk));
    document.add(p);
    document.close();
}

स्रोत: Developers.itextpdf.com

HelloWorldInternational.java (iText 7)

इस iText 7 उदाहरण में, हम विभिन्न फोंट का उपयोग करके विभिन्न भाषाओं में एक हैलो वर्ल्ड उदाहरण बनाएंगे:

यहाँ छवि विवरण दर्ज करें

public void createPdf(String dest) throws IOException {
    PdfDocument pdf = new PdfDocument(new PdfWriter(dest));
    try (Document document = new Document(pdf)) {
        PdfFont font = PdfFontFactory.createFont(FontConstants.TIMES_ROMAN);
        PdfFont russian = PdfFontFactory.createFont(
            "src/main/resources/fonts/FreeSans.ttf",
            "CP1251", true);
        PdfFont cjk = PdfFontFactory.createFont(
            "src/main/resources/fonts/NotoSansCJKsc-Regular.otf",
            PdfEncodings.IDENTITY_H, true);
        document.setFont(font);
        Paragraph p = new Paragraph("Hello World! ")
            .add(new Text("Hallo Wereld! ").setFontSize(14))
            .add(new Text("Bonjour le monde! ").setFontSize(10).setTextRise(4))
            .add(
                new Text("\u0417\u0434\u0440\u0430\u0432\u0441\u0442\u0432\u0443\u043b\u0442\u0435 \u043c\u0438\u0440! ")
                    .setFont(russian))
            .add(new Text("\u4f60\u597d\u4e16\u754c! ")
                .setFont(cjk))
            .add(new Text("\uc5ec\ubcf4\uc138\uc694 \uc138\uacc4!")
                .setFont(cjk));
        document.add(p);
    }
}

स्रोत: Developers.itextpdf.com और iText 7: बिल्डिंग ब्लॉक्स ट्यूटोरियल।



Modified text is an extract of the original Stack Overflow Documentation
के तहत लाइसेंस प्राप्त है CC BY-SA 3.0
से संबद्ध नहीं है Stack Overflow