diff --git a/pdf.c b/pdf.c
index 9ad84b323b8a2fdf37d7cb7a002d25bb2c2ca2b4..ce648cbad0a7987cf00cbfcc9d71a260a171a3d6 100644
--- a/pdf.c
+++ b/pdf.c
@@ -661,7 +661,11 @@ init_parser(struct Env *aux)
 
 	/* body */
 	H_RULE(indobj,	CHX(stream, obj));
-	H_RULE(objdef,	SEQ(ws, npair, wel, KW("obj"), ws, indobj, KW("endobj")));
+	H_RULE(objdef,	SEQ(ws, npair, wel, KW("obj"), ws, indobj,
+			    CHX(VIOL(SEQ(KW("endobj"), h_many(CHX(wel, eol)), h_many1(KW("endobj"))),
+				     "More than 1 endobj token (severity=1)"),
+				KW("endobj"),
+				VIOL(h_optional(KW("endobj")), "Missing endobj token (severity=1)"))));
 	H_RULE(body,	h_many(objdef));
 
 	/* for object streams */