@@ -615,7 +615,10 @@ def write_to_stream(
615
615
def renumber (self ) -> bytes :
616
616
out = self [0 ].encode ("utf-8" )
617
617
if out != b"/" :
618
- deprecate_no_replacement (f"Incorrect first char in NameObject, should start with '/': ({ self } )" , "6.0.0" )
618
+ deprecate_no_replacement (
619
+ f"Incorrect first char in NameObject, should start with '/': ({ self } )" ,
620
+ "6.0.0" ,
621
+ )
619
622
for c in self [1 :]:
620
623
if c > "~" :
621
624
for x in c .encode ("utf-8" ):
@@ -640,6 +643,8 @@ def unnumber(sin: bytes) -> bytes:
640
643
i = i + 1
641
644
return sin
642
645
646
+ CHARSETS = ("utf-8" , "gbk" , "latin1" )
647
+
643
648
@staticmethod
644
649
def read_from_stream (stream : StreamType , pdf : Any ) -> "NameObject" : # PdfReader
645
650
name = stream .read (1 )
@@ -650,7 +655,7 @@ def read_from_stream(stream: StreamType, pdf: Any) -> "NameObject": # PdfReader
650
655
# Name objects should represent irregular characters
651
656
# with a '#' followed by the symbol's hex number
652
657
name = NameObject .unnumber (name )
653
- for enc in ( "utf-8" , "gbk" ) :
658
+ for enc in NameObject . CHARSETS :
654
659
try :
655
660
ret = name .decode (enc )
656
661
return NameObject (ret )
@@ -659,11 +664,16 @@ def read_from_stream(stream: StreamType, pdf: Any) -> "NameObject": # PdfReader
659
664
raise UnicodeDecodeError ("" , name , 0 , 0 , "Code Not Found" )
660
665
except (UnicodeEncodeError , UnicodeDecodeError ) as e :
661
666
if not pdf .strict :
662
- logger_warning (f"Illegal character in Name Object ({ name !r} )" , __name__ )
667
+ logger_warning (
668
+ f"Illegal character in NameObject ({ name !r} ), "
669
+ "you may need to adjust NameObject.CHARSETS" ,
670
+ __name__ ,
671
+ )
663
672
return NameObject (name .decode ("charmap" ))
664
673
else :
665
674
raise PdfReadError (
666
- f"Illegal character in Name Object ({ name !r} )"
675
+ f"Illegal character in NameObject ({ name !r} ). "
676
+ "You may need to adjust NameObject.CHARSETS." ,
667
677
) from e
668
678
669
679
0 commit comments