Beispiel #1
0
        private void ReadRange(string subset)
        {
            var lexer = new Lexer();

            lexer.SetSource(Encoding.ASCII.GetBytes(subset));

            while (lexer.Next() != null)
            {
                Expect(lexer, TokenType.HexString);
                PdfHexString from = new PdfHexString {
                    Text = (string)lexer.Current.Value
                };

                lexer.Next();
                Expect(lexer, TokenType.HexString);
                PdfHexString to = new PdfHexString {
                    Text = (string)lexer.Current.Value
                };

                lexer.Next();
                if (Accept(lexer, TokenType.HexString))
                {
                    int offset = (new PdfHexString {
                        Text = (string)lexer.Current.Value
                    }).ToInt;
                    for (int i = from.ToInt; i <= to.ToInt; i++)
                    {
                        _toCode[i + offset] = i;
                    }
                }
                else if (Accept(lexer, TokenType.Array))
                {
                    int index = from.ToInt;
                    while (true)
                    {
                        lexer.Next();
                        if (Accept(lexer, TokenType.EndArray))
                        {
                            break;
                        }
                        else if (Accept(lexer, TokenType.HexString))
                        {
                            int glyph = (new PdfHexString {
                                Text = (string)lexer.Current.Value
                            }).ToInt;
                            _toCode[glyph] = index++;
                        }
                        else
                        {
                            throw new ParserException($"Unable to parse ToUnicode CMap. Expected HexString or End Array at {lexer?.Current.Type}");
                        }
                    }
                }
                else
                {
                    throw new ParserException($"Unable to parse ToUnicode CMap. Expected HexString or Array at {lexer?.Current.Type}");
                }
            }
        }
 private void WriteHexString(PdfHexString pdfHexString)
 {
     AsciiToOutput($"<{pdfHexString.Text}>");
 }