/// <summary> /// Adds a Chunk. /// </summary> /// <remarks> /// This method is a hack to solve a problem I had with phrases that were split between chunks /// in the wrong place. /// </remarks> /// <param name="chunk">a Chunk</param> /// <returns>a bool</returns> virtual protected bool AddChunk(Chunk chunk) { Font f = chunk.Font; String c = chunk.Content; if (font != null && !font.IsStandardFont()) { f = font.Difference(chunk.Font); } if (Count > 0 && !chunk.HasAttributes()) { try { Chunk previous = (Chunk)this[Count - 1]; PdfName previousRole = previous.Role; PdfName chunkRole = chunk.Role; Boolean sameRole; if (previousRole == null || chunkRole == null) { //Set the value to true if either are null since the overwriting of the role will not matter sameRole = true; } else { sameRole = previousRole.Equals(chunkRole); } if (sameRole && !previous.HasAttributes() && !chunk.HasAccessibleAttributes() && !previous.HasAccessibleAttributes() && (f == null || f.CompareTo(previous.Font) == 0) && previous.Font.CompareTo(f) == 0 && !"".Equals(previous.Content.Trim()) && !"".Equals(c.Trim())) { previous.Append(c); return(true); } } catch { } } Chunk newChunk = new Chunk(c, f); newChunk.Attributes = chunk.Attributes; newChunk.role = chunk.Role; newChunk.accessibleAttributes = chunk.GetAccessibleAttributes(); if (hyphenation != null && newChunk.GetHyphenation() == null && !newChunk.IsEmpty()) { newChunk.SetHyphenation(hyphenation); } base.Add(newChunk); return(true); }