Skip to content

Commit c67988e

Browse files
authored
Merge branch 'main' into iss_1293
2 parents cf8af8c + 3326cb7 commit c67988e

6 files changed

Lines changed: 36 additions & 12 deletions

File tree

PyPDF2/_codecs/adobe_glyphs.py

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13425,3 +13425,13 @@
1342513425
"/zukatakana": "\u30BA",
1342613426
"/zwarakay": "\u0659",
1342713427
}
13428+
13429+
13430+
def _complete() -> None:
13431+
global adobe_glyphs
13432+
for i in range(256):
13433+
adobe_glyphs[f"/a{i}"] = chr(i)
13434+
adobe_glyphs["/.notdef"] = "□"
13435+
13436+
13437+
_complete()

PyPDF2/_page.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -952,11 +952,11 @@ def scale(self, sx: float, sy: float) -> None:
952952
:param float sy: The scaling factor on vertical axis.
953953
"""
954954
self.add_transformation((sx, 0, 0, sy, 0, 0))
955-
self.mediabox = self.mediabox.scale(sx, sy)
956955
self.cropbox = self.cropbox.scale(sx, sy)
957956
self.artbox = self.artbox.scale(sx, sy)
958957
self.bleedbox = self.bleedbox.scale(sx, sy)
959958
self.trimbox = self.trimbox.scale(sx, sy)
959+
self.mediabox = self.mediabox.scale(sx, sy)
960960
if PG.VP in self:
961961
viewport = self[PG.VP]
962962
if isinstance(viewport, ArrayObject):

PyPDF2/generic/_base.py

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -233,13 +233,10 @@ def __new__(
233233
try:
234234
return decimal.Decimal.__new__(cls, str_(value), context)
235235
except Exception:
236-
try:
237-
return decimal.Decimal.__new__(cls, str(value))
238-
except decimal.InvalidOperation:
239-
# If this isn't a valid decimal (happens in malformed PDFs)
240-
# fallback to 0
241-
logger_warning(f"Invalid FloatObject {value}", __name__)
242-
return decimal.Decimal.__new__(cls, "0")
236+
# If this isn't a valid decimal (happens in malformed PDFs)
237+
# fallback to 0
238+
logger_warning(f"FloatObject ({value}) invalid; use 0.0 instead", __name__)
239+
return decimal.Decimal.__new__(cls, "0.0")
243240

244241
def __repr__(self) -> str:
245242
if self == self.to_integral():
@@ -271,8 +268,11 @@ class NumberObject(int, PdfObject):
271268
NumberPattern = re.compile(b"[^+-.0-9]")
272269

273270
def __new__(cls, value: Any) -> "NumberObject":
274-
val = int(value)
275-
return int.__new__(cls, val)
271+
try:
272+
return int.__new__(cls, int(value))
273+
except ValueError:
274+
logger_warning(f"NumberObject({value}) invalid; use 0 instead", __name__)
275+
return int.__new__(cls, 0)
276276

277277
def as_numeric(self) -> int:
278278
return int(repr(self).encode("utf8"))

docs/user/cropping-and-transforming.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -147,7 +147,7 @@ reader = PdfReader("resources/side-by-side-subfig.pdf")
147147
page = reader.pages[0]
148148

149149
# Scale
150-
page.scale(0.5)
150+
page.scale_by(0.5)
151151

152152
# Write the result to a file
153153
writer = PdfWriter()

tests/test_cmap.py

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -55,3 +55,11 @@ def test_bfchar_on_2_chars():
5555
reader = PdfReader(BytesIO(get_pdf_from_url(url, name=name)))
5656
for page in reader.pages:
5757
page.extract_text()
58+
59+
60+
def test_ascii_charset():
61+
# iss #1312
62+
url = "https://github.com/py-pdf/PyPDF2/files/9472500/main.pdf"
63+
name = "ascii charset.pdf"
64+
reader = PdfReader(BytesIO(get_pdf_from_url(url, name=name)))
65+
assert "/a" not in reader.pages[0].extract_text()

tests/test_generic.py

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,8 +39,14 @@
3939
RESOURCE_ROOT = PROJECT_ROOT / "resources"
4040

4141

42-
def test_float_object_exception():
42+
def test_float_object_exception(caplog):
4343
assert FloatObject("abc") == 0
44+
assert caplog.text != ""
45+
46+
47+
def test_number_object_exception(caplog):
48+
assert NumberObject("0,0") == 0
49+
assert caplog.text != ""
4450

4551

4652
def test_number_object_no_exception():

0 commit comments

Comments
 (0)