Ejemplo n.º 1
0
        /// <summary>
        /// Initializes a new instance of the <see cref="PDFString"/> class.
        /// </summary>
        /// <param name="value">The value.</param>
        /// <param name="encoding">The encoding.</param>
        public PDFString(string value, PDFStringEncoding encoding)
        {
            switch (encoding)
            {
            case PDFStringEncoding.RawEncoding:
                CheckRawEncoding(value);
                break;

            case PDFStringEncoding.StandardEncoding:
                break;

            case PDFStringEncoding.PDFDocEncoding:
                break;

            case PDFStringEncoding.WinAnsiEncoding:
                CheckRawEncoding(value);
                break;

            case PDFStringEncoding.MacRomanEncoding:
                break;

            case PDFStringEncoding.Unicode:
                break;

            default:
                throw new ArgumentOutOfRangeException("encoding");
            }
            _value = value;
            //if ((flags & PDFStringFlags.EncodingMask) == 0)
            //  flags |= PDFStringFlags.PDFDocEncoding;
            Flags = (PDFStringFlags)encoding;
        }
Ejemplo n.º 2
0
        /// <summary>
        /// Converts a raw string into a raw hexadecimal string literal, possibly encrypted.
        /// </summary>
        public static string ToHexStringLiteral(string text, PDFStringEncoding encoding, PDFStandardSecurityHandler securityHandler)
        {
            if (String.IsNullOrEmpty(text))
            {
                return("<>");
            }

            byte[] bytes;
            switch (encoding)
            {
            case PDFStringEncoding.RawEncoding:
                bytes = RawEncoding.GetBytes(text);
                break;

            case PDFStringEncoding.WinAnsiEncoding:
                bytes = WinAnsiEncoding.GetBytes(text);
                break;

            case PDFStringEncoding.PDFDocEncoding:
                bytes = DocEncoding.GetBytes(text);
                break;

            case PDFStringEncoding.Unicode:
                //bytes = UnicodeEncoding.GetBytes(text);
                bytes = RawUnicodeEncoding.GetBytes(text);
                break;

            default:
                throw new NotImplementedException(encoding.ToString());
            }

            byte[] agTemp = FormatStringLiteral(bytes, encoding == PDFStringEncoding.Unicode, true, true, securityHandler);
            return(RawEncoding.GetString(agTemp, 0, agTemp.Length));
        }
Ejemplo n.º 3
0
        /// <summary>
        /// Writes the specified value to the PDF stream.
        /// </summary>
        public void Write(PDFString value)
        {
            WriteSeparator(CharCat.Delimiter);
#if true
            PDFStringEncoding encoding = (PDFStringEncoding)(value.Flags & PDFStringFlags.EncodingMask);
            string            pdf      = (value.Flags & PDFStringFlags.HexLiteral) == 0 ?
                                         PDFEncoders.ToStringLiteral(value.Value, encoding, SecurityHandler) :
                                         PDFEncoders.ToHexStringLiteral(value.Value, encoding, SecurityHandler);
            WriteRaw(pdf);
#else
            switch (value.Flags & PDFStringFlags.EncodingMask)
            {
            case PDFStringFlags.Undefined:
            case PDFStringFlags.PDFDocEncoding:
                if ((value.Flags & PDFStringFlags.HexLiteral) == 0)
                {
                    WriteRaw(PDFEncoders.DocEncode(value.Value, false));
                }
                else
                {
                    WriteRaw(PDFEncoders.DocEncodeHex(value.Value, false));
                }
                break;

            case PDFStringFlags.WinAnsiEncoding:
                throw new NotImplementedException("Unexpected encoding: WinAnsiEncoding");

            case PDFStringFlags.Unicode:
                if ((value.Flags & PDFStringFlags.HexLiteral) == 0)
                {
                    WriteRaw(PDFEncoders.DocEncode(value.Value, true));
                }
                else
                {
                    WriteRaw(PDFEncoders.DocEncodeHex(value.Value, true));
                }
                break;

            case PDFStringFlags.StandardEncoding:
            case PDFStringFlags.MacRomanEncoding:
            case PDFStringFlags.MacExpertEncoding:
            default:
                throw new NotImplementedException("Unexpected encoding");
            }
#endif
            _lastCat = CharCat.Delimiter;
        }