@@ -538,6 +538,9 @@ func (p Page) GetPlainText(fonts map[string]*Font) (result string, err error) {
538538
539539 var textBuilder bytes.Buffer
540540 showText := func (s string ) {
541+ textBuilder .WriteString (s )
542+ }
543+ showEncodedText := func (s string ) {
541544 for _ , ch := range enc .Decode (s ) {
542545 _ , err := textBuilder .WriteRune (ch )
543546 if err != nil {
@@ -558,8 +561,10 @@ func (p Page) GetPlainText(fonts map[string]*Font) (result string, err error) {
558561 // Easier debug
559562 // fmt.Println("<DEBUG><op>", op, "</op><args>", args, "</args>")
560563 return
561- case "T* " : // move to start of next line
564+ case "BT " : // add a space between text objects
562565 showText ("\n " )
566+ case "T*" : // move to start of next line
567+ showEncodedText ("\n " )
563568 case "Tf" : // set text font and size
564569 if len (args ) != 2 {
565570 panic ("bad TL" )
@@ -583,13 +588,13 @@ func (p Page) GetPlainText(fonts map[string]*Font) (result string, err error) {
583588 if len (args ) != 1 {
584589 panic ("bad Tj operator" )
585590 }
586- showText (args [0 ].RawString ())
591+ showEncodedText (args [0 ].RawString ())
587592 case "TJ" : // show text, allowing individual glyph positioning
588593 v := args [0 ]
589594 for i := 0 ; i < v .Len (); i ++ {
590595 x := v .Index (i )
591596 if x .Kind () == String {
592- showText (x .RawString ())
597+ showEncodedText (x .RawString ())
593598 }
594599 }
595600 }
0 commit comments