I tried to debug this, but it looks very strange. The cmap looks like this:
311 0 obj <</Length 294>>stream /CIDInit /ProcSet findresource begin 12 dict begin begincmap /CMapType 2 def /CMapName/R857 def 1 begincodespacerange <0000><ffff> endcodespacerange 3 beginbfrange <000f><000f><2022> <0066><0066><007b> <0067><0067><007d> endbfrange endcmap CMapName currentdict /CMap defineresource pop end end endstream endobj From reading of pdf spec I can say that bfrange syntax is valid. parseCMap1() function that calls error() is in poppler. The code there looks like this: if (!strcmp(tok3, "[")) { .... } else if (tok3[0] == '<' && tok3[n3 - 1] == '>') { .... } else { error(-1, "Illegal entry in bfrange block in ToUnicode CMap"); } On call to error gdb shows: (gdb) print (char *)tok3 $15 = 0x7fffda543fc0 "<007d>" (gdb) print n3 $16 = 6 (gdb) print tok3[n3-1] $18 = 62 '>' (gdb) print (tok3[0] == '<' && tok3[n3 - 1] == '>') $19 = true Now if anyone can tell me why branch with call to error() is executed instead of previous one... 22 червня 2010 о 12:52 -0400 Frank Ch. Eigler написав(-ла): > #0 error (pos=-1, > msg=0x351ad4bbf8 "Illegal entry in bfrange block in ToUnicode CMap") > at Error.cc:56 > #1 0x000000351aca2f8a in CharCodeToUnicode::parseCMap1 ( > this=<value optimized out>, getCharFunc=<value optimized out>, > data=<value optimized out>, nBits=<value optimized out>) > at CharCodeToUnicode.cc:343
signature.asc
Description: Digital signature