Skip to content

Commit f9a4092

Browse files
committed
Fix #80, #81
1 parent 9d476dd commit f9a4092

File tree

3 files changed

+12
-21
lines changed

3 files changed

+12
-21
lines changed

pkg/pdfcpu/dict.go

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -40,12 +40,10 @@ func (d Dict) Len() int {
4040

4141
// Insert adds a new entry to this PDFDict.
4242
func (d Dict) Insert(key string, value Object) (ok bool) {
43-
if o, found := d.Find(key); found {
44-
if o.PDFString() != value.PDFString() {
45-
return false
46-
}
43+
_, found := d.Find(key)
44+
if !found {
45+
d[key] = value
4746
}
48-
d[key] = value
4947
return true
5048
}
5149

pkg/pdfcpu/parse_dict_test.go

Lines changed: 6 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -43,29 +43,19 @@ func doTestParseDictGeneral(t *testing.T) {
4343
doTestParseDictFail("<<>", t)
4444
doTestParseDictOK("<<>>", t)
4545
doTestParseDictOK("<< >>", t)
46-
doTestParseDictFail("<</Key1/Value1/Key1/Value2>>", t)
4746
doTestParseDictOK("<</Key1/Value1/key1/Value2>>", t)
48-
4947
doTestParseDictOK("<</Type/Page/Parent 2 0 R/Resources<</Font<</F1 5 0 R/F2 7 0 R/F3 9 0 R>>/XObject<</Image11 11 0 R>>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI]>>/MediaBox[ 0 0 595.32 841.92]/Contents 4 0 R/Group<</Type/Group/S/Transparency/CS/DeviceRGB>>/Tabs/S/StructParents 0>>", t)
50-
doTestParseDictOK("<</Type /Pages /Count 24 /Kids [6 0 R 16 0 R 21 0 R 27 0 R 30 0 R 32 0 R 34 0 R 36 0 R 38 0 R 40 0 R 42 0 R 44 0 R 46 0 R 48 0 R 50 0 R 52 0 R 54 0 R 56 0 R 58 0 R 60 0 R 62 0 R 64 0 R 69 0 R 71 0 R] /MediaBox [0 0 595.2756 841.8898]>>", t)
51-
doTestParseDictOK("<< /Key1 <abc> /Key2 <d> >>", t)
52-
doTestParseDictFail("<<", t)
53-
doTestParseDictFail("<<>", t)
54-
doTestParseDictOK("<<>>", t)
55-
doTestParseDictOK("<< >>", t)
56-
doTestParseDictFail("<</Key1/Value1/Key1/Value2>>", t)
57-
doTestParseDictOK("<</Key1/Value1/key1/Value2>>", t)
5848
}
5949

6050
func doTestParseDictNameObjects(t *testing.T) {
6151
// Name Objects
6252
doTestParseDictOK("<</S/A>>", t) // empty name
63-
// doTestParseDictOK("<</K1 / /K2 /Name2>>", t)
64-
// doTestParseDictOK("<</Key/Value>>", t)
65-
// doTestParseDictOK("<< /Key /Value>>", t)
66-
// doTestParseDictOK("<< /Key/Value >>", t)
67-
// doTestParseDictOK("<< /Key /Value >>", t)
68-
// doTestParseDictOK("<</Key1/Value1/Key2/Value2>>", t)
53+
doTestParseDictOK("<</K1 / /K2 /Name2>>", t)
54+
doTestParseDictOK("<</Key/Value>>", t)
55+
doTestParseDictOK("<< /Key /Value>>", t)
56+
doTestParseDictOK("<< /Key/Value >>", t)
57+
doTestParseDictOK("<< /Key /Value >>", t)
58+
doTestParseDictOK("<</Key1/Value1/Key2/Value2>>", t)
6959
}
7060

7161
func doTestParseDictStringLiteral(t *testing.T) {

pkg/pdfcpu/validate/pages.go

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -450,6 +450,9 @@ func validatePageEntryTabs(xRefTable *pdf.XRefTable, d pdf.Dict, required bool,
450450
// Include out of spec entry "W"
451451
validateTabs := func(s string) bool { return pdf.MemberOf(s, []string{"R", "C", "S", "W"}) }
452452

453+
if xRefTable.ValidationMode == pdf.ValidationRelaxed {
454+
sinceVersion = pdf.V14
455+
}
453456
_, err := validateNameEntry(xRefTable, d, "pagesDict", "Tabs", required, sinceVersion, validateTabs)
454457

455458
return err

0 commit comments

Comments
 (0)