github.com/signintech/pdft@v0.5.0/minigopdf/encryption_obj.go (about) 1 package gopdf 2 3 import ( 4 "bytes" 5 "fmt" 6 "strings" 7 ) 8 9 // EncryptionObj encryption object res 10 type EncryptionObj struct { 11 buffer bytes.Buffer 12 uValue []byte //U entry in pdf document 13 oValue []byte //O entry in pdf document 14 pValue int //P entry in pdf document 15 } 16 17 func (e *EncryptionObj) init(func() *GoPdf) { 18 19 } 20 21 func (e *EncryptionObj) getType() string { 22 return "Encryption" 23 } 24 25 func (e *EncryptionObj) getObjBuff() *bytes.Buffer { 26 return &e.buffer 27 } 28 29 func (e *EncryptionObj) build(objID int) error { 30 e.buffer.WriteString("<<\n") 31 e.buffer.WriteString("/Filter /Standard\n") 32 e.buffer.WriteString("/V 1\n") 33 e.buffer.WriteString("/R 2\n") 34 e.buffer.WriteString(fmt.Sprintf("/O (%s)\n", e.escape(e.oValue))) 35 e.buffer.WriteString(fmt.Sprintf("/U (%s)\n", e.escape(e.uValue))) 36 e.buffer.WriteString(fmt.Sprintf("/P %d\n", e.pValue)) 37 e.buffer.WriteString(">>\n") 38 return nil 39 } 40 41 func (e *EncryptionObj) escape(b []byte) string { 42 s := string(b) 43 s = strings.Replace(s, "\\", "\\\\", -1) 44 s = strings.Replace(s, "(", "\\(", -1) 45 s = strings.Replace(s, ")", "\\)", -1) 46 s = strings.Replace(s, "\r", "\\r", -1) 47 return s 48 } 49 50 // GetObjBuff get buffer 51 func (e *EncryptionObj) GetObjBuff() *bytes.Buffer { 52 return e.getObjBuff() 53 } 54 55 // Build build buffer 56 func (e *EncryptionObj) Build(objID int) error { 57 return e.build(objID) 58 }