iTextSharp.text.pdf.TrueTypeFontSubSet.Process C# (CSharp) Метод

Process() публичный Метод

public Process ( ) : byte[]
Результат byte[]
        public byte[] Process()
        {
            try {
                rf.ReOpen();
                CreateTableDirectory();
                ReadLoca();
                FlatGlyphs();
                CreateNewGlyphTables();
                LocaTobytes();
                AssembleFont();
                return outFont;
            }
            finally {
                try {
                    rf.Close();
                }
                catch  {
                    // empty on purpose
                }
            }
        }

Usage Example

Пример #1
0
 /** Outputs to the writer the font dictionaries and streams.
  * @param writer the writer for this document
  * @param ref the font indirect reference
  * @param params several parameters that depend on the font type
  * @throws IOException on error
  * @throws DocumentException error in generating the object
  */
 internal override void WriteFont(PdfWriter writer, PdfIndirectReference piref, Object[] parms)
 {
     int firstChar = (int)parms[0];
     int lastChar = (int)parms[1];
     byte[] shortTag = (byte[])parms[2];
     bool subsetp = (bool)parms[3] && subset;
     if (!subsetp) {
         firstChar = 0;
         lastChar = shortTag.Length - 1;
         for (int k = 0; k < shortTag.Length; ++k)
             shortTag[k] = 1;
     }
     PdfIndirectReference ind_font = null;
     PdfObject pobj = null;
     PdfIndirectObject obj = null;
     string subsetPrefix = "";
     if (embedded) {
         if (cff) {
             pobj = new StreamFont(ReadCffFont(), "Type1C", compressionLevel);
             obj = writer.AddToBody(pobj);
             ind_font = obj.IndirectReference;
         }
         else {
             if (subsetp)
                 subsetPrefix = CreateSubsetPrefix();
             Hashtable glyphs = new Hashtable();
             for (int k = firstChar; k <= lastChar; ++k) {
                 if (shortTag[k] != 0) {
                     int[] metrics = null;
                     if (specialMap != null) {
                         int[] cd = GlyphList.NameToUnicode(differences[k]);
                         if (cd != null)
                             metrics = GetMetricsTT(cd[0]);
                     }
                     else {
                         if (fontSpecific)
                             metrics = GetMetricsTT(k);
                         else
                             metrics = GetMetricsTT(unicodeDifferences[k]);
                     }
                     if (metrics != null)
                         glyphs[metrics[0]] = null;
                 }
             }
             AddRangeUni(glyphs, false, subsetp);
             byte[] b = null;
             if (subsetp || directoryOffset != 0 || subsetRanges != null) {
                 TrueTypeFontSubSet sb = new TrueTypeFontSubSet(fileName, new RandomAccessFileOrArray(rf), glyphs, directoryOffset, true, !subsetp);
                 b = sb.Process();
             }
             else {
                 b = GetFullFont();
             }
             int[] lengths = new int[]{b.Length};
             pobj = new StreamFont(b, lengths, compressionLevel);
             obj = writer.AddToBody(pobj);
             ind_font = obj.IndirectReference;
         }
     }
     pobj = GetFontDescriptor(ind_font, subsetPrefix, null);
     if (pobj != null){
         obj = writer.AddToBody(pobj);
         ind_font = obj.IndirectReference;
     }
     pobj = GetFontBaseType(ind_font, subsetPrefix, firstChar, lastChar, shortTag);
     writer.AddToBody(pobj, piref);
 }
All Usage Examples Of iTextSharp.text.pdf.TrueTypeFontSubSet::Process