iTextSharp.text.pdf.BidiLine.CreateArrayOfPdfChunks C# (CSharp) Method

CreateArrayOfPdfChunks() public method

public CreateArrayOfPdfChunks ( int startIdx, int endIdx, PdfChunk extraPdfChunk ) : List
startIdx int
endIdx int
extraPdfChunk PdfChunk
return List
        public List<PdfChunk> CreateArrayOfPdfChunks(int startIdx, int endIdx, PdfChunk extraPdfChunk)
        {
            bool bidi = (runDirection == PdfWriter.RUN_DIRECTION_LTR || runDirection == PdfWriter.RUN_DIRECTION_RTL);
            if (bidi)
                Reorder(startIdx, endIdx);
            List<PdfChunk> ar = new List<PdfChunk>();
            PdfChunk refCk = detailChunks[startIdx];
            PdfChunk ck = null;
            StringBuilder buf = new StringBuilder();
            char c;
            int idx = 0;
            for (; startIdx <= endIdx; ++startIdx) {
                idx = bidi ? indexChars[startIdx] : startIdx;
                c = text[idx];
                ck = detailChunks[idx];
                if (PdfChunk.NoPrint(ck.GetUnicodeEquivalent(c)))
                    continue;
                if (ck.IsImage() || ck.IsSeparator() || ck.IsTab()) {
                    if (buf.Length > 0) {
                        ar.Add(new PdfChunk(buf.ToString(), refCk));
                        buf = new StringBuilder();
                    }
                    ar.Add(ck);
                }
                else if (ck == refCk) {
                    buf.Append(c);
                }
                else {
                    if (buf.Length > 0) {
                        ar.Add(new PdfChunk(buf.ToString(), refCk));
                        buf = new StringBuilder();
                    }
                    if (!ck.IsImage() && !ck.IsSeparator() && !ck.IsTab())
                        buf.Append(c);
                    refCk = ck;
                }
            }
            if (buf.Length > 0) {
                ar.Add(new PdfChunk(buf.ToString(), refCk));
            }
            if (extraPdfChunk != null)
                ar.Add(extraPdfChunk);
            return ar;
        }

Same methods

BidiLine::CreateArrayOfPdfChunks ( int startIdx, int endIdx ) : List

Usage Example

Exemplo n.º 1
0
     /**
      * Method that changes a String with Arabic characters into a String in which the ligatures are made.
      * @param s	the original String
      * @param runDirection
      * @param arabicOptions
      * @return the String with the ligaturesc
      */
     public static String ProcessLTR(String s, int runDirection, int arabicOptions) {
 	    BidiLine bidi = new BidiLine();
 	    bidi.AddChunk(new PdfChunk(new Chunk(s), null));
 	    bidi.arabicOptions = arabicOptions;
 	    bidi.GetParagraph(runDirection);
 	    List<PdfChunk> arr = bidi.CreateArrayOfPdfChunks(0, bidi.totalTextLength - 1);
 	    StringBuilder sb = new StringBuilder();
 	    foreach (PdfChunk ck in arr) {
 		    sb.Append(ck.ToString());
 	    }
 	    return sb.ToString();
     }