Example usage for org.apache.pdfbox.cos COSName TRUE_TYPE

List of usage examples for org.apache.pdfbox.cos COSName TRUE_TYPE

Introduction

In this page you can find the example usage for org.apache.pdfbox.cos COSName TRUE_TYPE.

Prototype

COSName TRUE_TYPE

To view the source code for org.apache.pdfbox.cos COSName TRUE_TYPE.

Click Source Link

Usage

From source file:at.gv.egiz.pdfas.lib.impl.stamping.pdfbox.PDFBoxFont.java

License:EUPL

private PDFont findCachedFont(PDFBOXObject pdfObject, FontInfoCache fontInfo) {
    try {//www  . jav  a2s  .co m
        if (pdfObject.getFontCache().containsKey(fontInfo.fontPath)) {
            return pdfObject.getFontCache().get(fontInfo.fontPath);
        }

        List<COSObject> cosObjects = pdfObject.getDocument().getDocument().getObjectsByType(COSName.FONT);

        //COSName cosFontName = COSName.getPDFName(fontInfo.fontName);
        //COSName cosFontFamily = COSName.getPDFName(fontInfo.fontFamily);

        Iterator<COSObject> cosObjectIt = cosObjects.iterator();

        while (cosObjectIt.hasNext()) {
            COSObject cosObject = cosObjectIt.next();
            COSDictionary baseObject = (COSDictionary) cosObject.getObject();
            if (baseObject instanceof COSDictionary) {
                COSDictionary fontDictionary = (COSDictionary) baseObject;
                COSBase subType = cosObject.getItem(COSName.SUBTYPE);
                COSDictionary fontDescriptor = (COSDictionary) cosObject.getDictionaryObject(COSName.FONT_DESC);
                if (fontDescriptor != null) {
                    String fontName = fontDescriptor.getNameAsString(COSName.FONT_NAME);
                    String fontFamily = fontDescriptor.getNameAsString(COSName.FONT_FAMILY);
                    logger.trace("Inspecting Font {} - {}", fontFamily, fontName);
                    if (COSName.TRUE_TYPE.equals(subType)) {
                        if (fontInfo.fontName != null && fontInfo.fontName.equals(fontName)
                                && fontInfo.fontFamily != null && fontInfo.fontFamily.equals(fontFamily)) {
                            // Found it! :)
                            logger.info("Found Font {}", fontInfo.fontName);
                            return new PDTrueTypeFont(fontDictionary);
                        }
                    } else {
                        logger.debug("Font not a TTF");
                    }
                }
            } else {
                logger.debug("Font not a COSDictionary");
            }
        }
    } catch (Exception e) {
        logger.info("Failed to load existing TTF fonts!", e);
    }
    return null;
}

From source file:org.apache.fop.render.pdf.pdfbox.FOPPDFSingleByteFont.java

License:Apache License

public FOPPDFSingleByteFont(COSDictionary fontData, String name) throws IOException {
    super(null, EmbeddingMode.FULL);
    if (fontData.getItem(COSName.SUBTYPE) == COSName.TRUE_TYPE) {
        setFontType(FontType.TRUETYPE);/* w ww  .ja  v  a2  s  . c om*/
    }
    width = new int[0];
    font = getFont(fontData);
    setFirstChar(font.getFirstChar());
    setLastChar(font.getLastChar());
    shortFontName = MergeFontsPDFWriter.getName(font.font.getName());
    loadFontFile(font);
    float[] bBoxF = font.getBoundingBox();
    int[] bBox = new int[bBoxF.length];
    for (int i = 0; i < bBox.length; i++) {
        bBox[i] = (int) bBoxF[i];
    }
    setFontBBox(bBox);

    setFontName(name);
    Object cmap = getCmap(font);
    for (int i = font.getFirstChar(); i <= font.getLastChar(); i++) {
        String mappedChar = getChar(cmap, i);
        if (mappedChar != null && !charMapGlobal.containsKey(mappedChar)) {
            charMapGlobal.put(mappedChar, i);
        }
    }
    //mark font as used
    notifyMapOperation();
    FOPPDFMultiByteFont.setProperties(this, font.font);
    if (font.getWidths() != null) {
        //if width contains 0 we cant rely on codeToNameMap
        boolean usesZero = font.getWidths().contains(0);
        Set<Integer> codeToName = getCodeToName(font.getEncoding()).keySet();
        for (int i = getFirstChar(); i <= Math.min(getLastChar(),
                getFirstChar() + font.getWidths().size()); i++) {
            if (usesZero || codeToName.contains(i)) {
                int w = font.getWidths().get(i - getFirstChar());
                newWidth.put(i, w);
            } else {
                newWidth.put(i, 0);
            }
        }
    }
    mapping = new FOPPDFEncoding();
    encodingSkip = font.getLastChar() + 1;
    addEncoding(font);
}

From source file:org.apache.fop.render.pdf.pdfbox.MergeFontsPDFWriter.java

License:Apache License

private String getNewFont(COSDictionary fontData, FontInfo fontinfo, Collection<String> usedFonts)
        throws IOException {
    String base = getUniqueFontName(fontData);
    if (base == null || usedFonts.contains(base) || (parentFonts != null && parentFonts.contains(base))) {
        return null;
    }//from   w  w  w  . ja v  a 2s . c  om
    try {
        for (Typeface t : fontinfo.getUsedFonts().values()) {
            if (t instanceof FOPPDFFont && base.equals(t.getFontName())) {
                return ((FOPPDFFont) t).addFont(fontData);
            }
        }
        if (base.endsWith("cid") || fontData.getItem(COSName.SUBTYPE) != COSName.TYPE1
                && fontData.getItem(COSName.SUBTYPE) != COSName.TRUE_TYPE) {
            fontinfo.addMetrics(base, new FOPPDFMultiByteFont(fontData, base));
        } else {
            fontinfo.addMetrics(base, new FOPPDFSingleByteFont(fontData, base));
        }
    } catch (IOException e) {
        log.warn(e.getMessage());
        return null;
    }
    fontinfo.useFont(base);
    return base;
}