public override void WriteStringLiteral(string value, Scryber.FontEncoding encoding) { if (UseHex && encoding != FontEncoding.PDFDocEncoding) { //TODO Write encoding prefix CurrentStream.Write(Constants.StartHexString); value = ToHex(value, encoding); CurrentStream.Write(value); CurrentStream.Write(Constants.EndHexString); } else { Scryber.Text.PDFEncoding enc = Scryber.Text.PDFEncoding.GetEncoding(encoding); CurrentStream.Write(Constants.StartString); if (null != enc.Prefix && enc.Prefix.Length > 0) { CurrentStream.Write(enc.Prefix); } CurrentStream.Write(enc.GetBytes(value)); CurrentStream.Write(Constants.EndString); } }
// // support methods // #region private byte[] GetStringBytes(string value, Scryber.FontEncoding encoding) /// <summary> /// Converts a string in the specified encoding into a byte[] /// </summary> /// <param name="value"></param> /// <param name="encoding"></param> /// <returns></returns> private byte[] GetStringBytes(string value, Scryber.FontEncoding encoding) { Scryber.Text.PDFEncoding enc = Scryber.Text.PDFEncoding.GetEncoding(encoding); byte[] all = enc.GetBytes(value); return(all); }
/// <summary> /// Converts a string with the specified font encoding to a byte[] /// and then returns the Hexadecimal string of that byte array /// </summary> /// <param name="value">The value to be converted</param> /// <param name="encoding">The encoding of the value</param> /// <returns>A hexadecimal string representation</returns> private string ToHex(string value, FontEncoding encoding) { Scryber.Text.PDFEncoding enc = Scryber.Text.PDFEncoding.GetEncoding(encoding); byte[] all = enc.GetBytes(value); return(ToHex(all)); }