1 Star 1 Fork 1

zhaobingss / unipdf

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
mdp.go 19.83 KB
一键复制 编辑 原始数据 按行查看 历史
zhaobingss 提交于 2023-07-29 19:20 . INIT
//
// Copyright 2020 FoxyUtils ehf. All rights reserved.
//
// This is a commercial product and requires a license to operate.
// A trial license can be obtained at https://unidoc.io
//
// DO NOT EDIT: generated by unitwist Go source code obfuscator.
//
// Use of this source code is governed by the UniDoc End User License Agreement
// terms that can be accessed at https://unidoc.io/eula/
package mdp
import (
_b "errors"
_c "fmt"
_db "gitee.com/zhaobingss/unipdf/v3/core"
)
func NewDefaultDiffPolicy() DiffPolicy {
return &defaultDiffPolicy{_a: nil, _bf: &DiffResults{}, _ce: 0}
}
// DocMDPPermission is values for set up access permissions for DocMDP.
// (Section 12.8.2.2, Table 254 - Entries in a signature dictionary p. 471 in PDF32000_2008).
type DocMDPPermission int64
func (_bgb *defaultDiffPolicy) compareFields(_dd int, _ecc, _aeg []_db.PdfObject) error {
_ddb := make(map[int64]*_db.PdfObjectDictionary)
for _, _cbb := range _ecc {
_bgc, _dfbg := _db.GetIndirect(_cbb)
if !_dfbg {
return _b.New("\u0075\u006e\u0065\u0078p\u0065\u0063\u0074\u0065\u0064\u0020\u0066\u0069\u0065\u006cd\u0027s\u0020\u0073\u0074\u0072\u0075\u0063\u0074u\u0072\u0065")
}
_fg, _dfbg := _db.GetDict(_bgc.PdfObject)
if !_dfbg {
return _b.New("\u0075\u006e\u0065\u0078p\u0065\u0063\u0074\u0065\u0064\u0020\u0061\u006e\u006e\u006ft\u0027s\u0020\u0073\u0074\u0072\u0075\u0063\u0074u\u0072\u0065")
}
_ddb[_bgc.ObjectNumber] = _fg
}
for _, _fab := range _aeg {
_dbf, _dcg := _db.GetIndirect(_fab)
if !_dcg {
return _b.New("\u0075\u006e\u0065\u0078p\u0065\u0063\u0074\u0065\u0064\u0020\u0066\u0069\u0065\u006cd\u0027s\u0020\u0073\u0074\u0072\u0075\u0063\u0074u\u0072\u0065")
}
_baf, _dcg := _db.GetDict(_dbf.PdfObject)
if !_dcg {
return _b.New("\u0075\u006e\u0065\u0078p\u0065\u0063\u0074\u0065\u0064\u0020\u0066\u0069\u0065\u006cd\u0027s\u0020\u0073\u0074\u0072\u0075\u0063\u0074u\u0072\u0065")
}
T := _baf.Get("\u0054")
if _, _cbbc := _bgb._a[_dbf.ObjectNumber]; _cbbc {
switch _bgb._ce {
case NoRestrictions, FillForms, FillFormsAndAnnots:
_bgb._bf.addWarningWithDescription(_dd, _c.Sprintf("F\u0069e\u006c\u0064\u0020\u0025\u0073\u0020\u0077\u0061s\u0020\u0063\u0068\u0061ng\u0065\u0064", T))
default:
_bgb._bf.addErrorWithDescription(_dd, _c.Sprintf("F\u0069e\u006c\u0064\u0020\u0025\u0073\u0020\u0077\u0061s\u0020\u0063\u0068\u0061ng\u0065\u0064", T))
}
}
if _, _fae := _ddb[_dbf.ObjectNumber]; !_fae {
switch _bgb._ce {
case NoRestrictions, FillForms, FillFormsAndAnnots:
_bgb._bf.addWarningWithDescription(_dd, _c.Sprintf("\u0046i\u0065l\u0064\u0020\u0025\u0073\u0020w\u0061\u0073 \u0061\u0064\u0064\u0065\u0064", _baf.Get("\u0054")))
default:
_bgb._bf.addErrorWithDescription(_dd, _c.Sprintf("\u0046i\u0065l\u0064\u0020\u0025\u0073\u0020w\u0061\u0073 \u0061\u0064\u0064\u0065\u0064", _baf.Get("\u0054")))
}
} else {
delete(_ddb, _dbf.ObjectNumber)
if _, _bb := _bgb._a[_dbf.ObjectNumber]; _bb {
switch _bgb._ce {
case NoRestrictions, FillForms, FillFormsAndAnnots:
_bgb._bf.addWarningWithDescription(_dd, _c.Sprintf("F\u0069e\u006c\u0064\u0020\u0025\u0073\u0020\u0077\u0061s\u0020\u0063\u0068\u0061ng\u0065\u0064", _baf.Get("\u0054")))
default:
_bgb._bf.addErrorWithDescription(_dd, _c.Sprintf("F\u0069e\u006c\u0064\u0020\u0025\u0073\u0020\u0077\u0061s\u0020\u0063\u0068\u0061ng\u0065\u0064", _baf.Get("\u0054")))
}
}
}
if FT, _ad := _db.GetNameVal(_baf.Get("\u0046\u0054")); _ad {
if FT == "\u0053\u0069\u0067" {
if _ge, _ccf := _db.GetIndirect(_baf.Get("\u0056")); _ccf {
if _, _daf := _bgb._a[_ge.ObjectNumber]; _daf {
switch _bgb._ce {
case NoRestrictions, FillForms, FillFormsAndAnnots:
_bgb._bf.addWarningWithDescription(_dd, _c.Sprintf("\u0053\u0069\u0067na\u0074\u0075\u0072\u0065\u0020\u0066\u006f\u0072\u0020%\u0073 \u0066i\u0065l\u0064\u0020\u0077\u0061\u0073\u0020\u0063\u0068\u0061\u006e\u0067\u0065\u0064", T))
default:
_bgb._bf.addErrorWithDescription(_dd, _c.Sprintf("\u0053\u0069\u0067na\u0074\u0075\u0072\u0065\u0020\u0066\u006f\u0072\u0020%\u0073 \u0066i\u0065l\u0064\u0020\u0077\u0061\u0073\u0020\u0063\u0068\u0061\u006e\u0067\u0065\u0064", T))
}
}
}
}
}
}
for _, _gef := range _ddb {
switch _bgb._ce {
case NoRestrictions:
_bgb._bf.addWarningWithDescription(_dd, _c.Sprintf("F\u0069e\u006c\u0064\u0020\u0025\u0073\u0020\u0077\u0061s\u0020\u0072\u0065\u006dov\u0065\u0064", _gef.Get("\u0054")))
default:
_bgb._bf.addErrorWithDescription(_dd, _c.Sprintf("F\u0069e\u006c\u0064\u0020\u0025\u0073\u0020\u0077\u0061s\u0020\u0072\u0065\u006dov\u0065\u0064", _gef.Get("\u0054")))
}
}
return nil
}
func (_ecf *defaultDiffPolicy) compareAnnots(_dbc int, _geb, _cbf []_db.PdfObject) error {
_caf := make(map[int64]*_db.PdfObjectDictionary)
for _, _fdf := range _geb {
_afc, _aab := _db.GetIndirect(_fdf)
if !_aab {
return _b.New("\u0075\u006e\u0065\u0078p\u0065\u0063\u0074\u0065\u0064\u0020\u0061\u006e\u006e\u006ft\u0027s\u0020\u0073\u0074\u0072\u0075\u0063\u0074u\u0072\u0065")
}
_dfe, _aab := _db.GetDict(_afc.PdfObject)
if !_aab {
return _b.New("\u0075\u006e\u0065\u0078p\u0065\u0063\u0074\u0065\u0064\u0020\u0061\u006e\u006e\u006ft\u0027s\u0020\u0073\u0074\u0072\u0075\u0063\u0074u\u0072\u0065")
}
_caf[_afc.ObjectNumber] = _dfe
}
for _, _cdc := range _cbf {
_fcg, _fgf := _db.GetIndirect(_cdc)
if !_fgf {
return _b.New("\u0075\u006e\u0065\u0078p\u0065\u0063\u0074\u0065\u0064\u0020\u0061\u006e\u006e\u006ft\u0027s\u0020\u0073\u0074\u0072\u0075\u0063\u0074u\u0072\u0065")
}
_ddac, _fgf := _db.GetDict(_fcg.PdfObject)
if !_fgf {
return _b.New("\u0075\u006e\u0065\u0078p\u0065\u0063\u0074\u0065\u0064\u0020\u0061\u006e\u006e\u006ft\u0027s\u0020\u0073\u0074\u0072\u0075\u0063\u0074u\u0072\u0065")
}
_cge, _ := _db.GetStringVal(_ddac.Get("\u0054"))
_aed, _ := _db.GetNameVal(_ddac.Get("\u0053u\u0062\u0074\u0079\u0070\u0065"))
if _, _edb := _caf[_fcg.ObjectNumber]; !_edb {
switch _ecf._ce {
case NoRestrictions, FillFormsAndAnnots:
_ecf._bf.addWarningWithDescription(_dbc, _c.Sprintf("\u0025\u0073\u0020\u0061\u006e\u006e\u006f\u0074\u0061\u0074\u0069o\u006e\u0020\u0025\u0073\u0020\u0077\u0061\u0073\u0020\u0061d\u0064\u0065\u0064", _aed, _cge))
default:
_cf, _dba := _db.GetDict(_fcg.PdfObject)
if !_dba {
return _b.New("u\u006ed\u0065\u0066\u0069\u006e\u0065\u0064\u0020\u0061n\u006e\u006f\u0074\u0061ti\u006f\u006e")
}
_ddf, _dba := _db.GetNameVal(_cf.Get("\u0053u\u0062\u0074\u0079\u0070\u0065"))
if !_dba {
return _b.New("\u0075\u006e\u0064\u0065\u0066\u0069\u006e\u0065\u0064\u0020a\u006e\u006e\u006f\u0074\u0061\u0074\u0069o\u006e\u0027\u0073\u0020\u0073\u0075\u0062\u0074\u0079\u0070\u0065")
}
if _ddf == "\u0057\u0069\u0064\u0067\u0065\u0074" {
switch _ecf._ce {
case NoRestrictions, FillFormsAndAnnots, FillForms:
_ecf._bf.addWarningWithDescription(_dbc, _c.Sprintf("\u0025\u0073\u0020\u0061\u006e\u006e\u006f\u0074\u0061\u0074\u0069o\u006e\u0020\u0025\u0073\u0020\u0077\u0061\u0073\u0020\u0061d\u0064\u0065\u0064", _aed, _cge))
default:
_ecf._bf.addErrorWithDescription(_dbc, _c.Sprintf("\u0025\u0073\u0020\u0061\u006e\u006e\u006f\u0074\u0061\u0074\u0069o\u006e\u0020\u0025\u0073\u0020\u0077\u0061\u0073\u0020\u0061d\u0064\u0065\u0064", _aed, _cge))
}
} else {
_ecf._bf.addErrorWithDescription(_dbc, _c.Sprintf("\u0025\u0073\u0020\u0061\u006e\u006e\u006f\u0074\u0061\u0074\u0069o\u006e\u0020\u0025\u0073\u0020\u0077\u0061\u0073\u0020\u0061d\u0064\u0065\u0064", _aed, _cge))
}
}
} else {
delete(_caf, _fcg.ObjectNumber)
if _edc, _cgb := _ecf._a[_fcg.ObjectNumber]; _cgb {
switch _ecf._ce {
case NoRestrictions, FillFormsAndAnnots:
_ecf._bf.addWarningWithDescription(_dbc, _c.Sprintf("\u0025\u0073\u0020\u0061n\u006e\u006f\u0074\u0061\u0074\u0069\u006f\u006e\u0020\u0025s\u0020w\u0061\u0073\u0020\u0063\u0068\u0061\u006eg\u0065\u0064", _aed, _cge))
default:
_fe, _geca := _db.GetIndirect(_edc)
if !_geca {
return _b.New("u\u006ed\u0065\u0066\u0069\u006e\u0065\u0064\u0020\u0061n\u006e\u006f\u0074\u0061ti\u006f\u006e")
}
_acfb, _geca := _db.GetDict(_fe.PdfObject)
if !_geca {
return _b.New("u\u006ed\u0065\u0066\u0069\u006e\u0065\u0064\u0020\u0061n\u006e\u006f\u0074\u0061ti\u006f\u006e")
}
_bgef, _geca := _db.GetNameVal(_acfb.Get("\u0053u\u0062\u0074\u0079\u0070\u0065"))
if !_geca {
return _b.New("\u0075\u006e\u0064\u0065\u0066\u0069\u006e\u0065\u0064\u0020a\u006e\u006e\u006f\u0074\u0061\u0074\u0069o\u006e\u0027\u0073\u0020\u0073\u0075\u0062\u0074\u0079\u0070\u0065")
}
if _bgef == "\u0057\u0069\u0064\u0067\u0065\u0074" {
switch _ecf._ce {
case NoRestrictions, FillFormsAndAnnots, FillForms:
_ecf._bf.addWarningWithDescription(_dbc, _c.Sprintf("\u0025\u0073\u0020\u0061n\u006e\u006f\u0074\u0061\u0074\u0069\u006f\u006e\u0020\u0025s\u0020w\u0061\u0073\u0020\u0063\u0068\u0061\u006eg\u0065\u0064", _aed, _cge))
default:
_ecf._bf.addErrorWithDescription(_dbc, _c.Sprintf("\u0025\u0073\u0020\u0061n\u006e\u006f\u0074\u0061\u0074\u0069\u006f\u006e\u0020\u0025s\u0020w\u0061\u0073\u0020\u0063\u0068\u0061\u006eg\u0065\u0064", _aed, _cge))
}
} else {
_ecf._bf.addErrorWithDescription(_dbc, _c.Sprintf("\u0025\u0073\u0020\u0061n\u006e\u006f\u0074\u0061\u0074\u0069\u006f\u006e\u0020\u0025s\u0020w\u0061\u0073\u0020\u0063\u0068\u0061\u006eg\u0065\u0064", _aed, _cge))
}
}
}
}
}
for _, _gbf := range _caf {
_gee, _ := _db.GetStringVal(_gbf.Get("\u0054"))
_fea, _ := _db.GetNameVal(_gbf.Get("\u0053u\u0062\u0074\u0079\u0070\u0065"))
switch _ecf._ce {
case NoRestrictions, FillFormsAndAnnots:
_ecf._bf.addWarningWithDescription(_dbc, _c.Sprintf("\u0025\u0073\u0020\u0061n\u006e\u006f\u0074\u0061\u0074\u0069\u006f\u006e\u0020\u0025s\u0020w\u0061\u0073\u0020\u0072\u0065\u006d\u006fv\u0065\u0064", _fea, _gee))
default:
_ecf._bf.addErrorWithDescription(_dbc, _c.Sprintf("\u0025\u0073\u0020\u0061n\u006e\u006f\u0074\u0061\u0074\u0069\u006f\u006e\u0020\u0025s\u0020w\u0061\u0073\u0020\u0072\u0065\u006d\u006fv\u0065\u0064", _fea, _gee))
}
}
return nil
}
func (_ddc *DiffResults) addErrorWithDescription(_dccf int, _egg string) {
if _ddc.Errors == nil {
_ddc.Errors = make([]*DiffResult, 0)
}
_ddc.Errors = append(_ddc.Errors, &DiffResult{Revision: _dccf, Description: _egg})
}
// IsPermitted returns true if changes permitted.
func (_bea *DiffResults) IsPermitted() bool { return len(_bea.Errors) == 0 }
// MDPParameters describes parameters for the MDP checks (now only DocMDP).
type MDPParameters struct{ DocMDPLevel DocMDPPermission }
const (
NoRestrictions DocMDPPermission = 0
NoChanges DocMDPPermission = 1
FillForms DocMDPPermission = 2
FillFormsAndAnnots DocMDPPermission = 3
)
func (_cgd *DiffResults) addError(_fafe *DiffResult) {
if _cgd.Errors == nil {
_cgd.Errors = make([]*DiffResult, 0)
}
_cgd.Errors = append(_cgd.Errors, _fafe)
}
func (_cee *DiffResults) addWarningWithDescription(_aebc int, _cag string) {
if _cee.Warnings == nil {
_cee.Warnings = make([]*DiffResult, 0)
}
_cee.Warnings = append(_cee.Warnings, &DiffResult{Revision: _aebc, Description: _cag})
}
func (_e *defaultDiffPolicy) compareRevisions(_acc *_db.PdfParser, _dbbd *_db.PdfParser) (*DiffResults, error) {
var _df error
_e._a, _df = _dbbd.GetUpdatedObjects(_acc)
if _df != nil {
return &DiffResults{}, _df
}
if len(_e._a) == 0 {
return &DiffResults{}, nil
}
_da := _dbbd.GetRevisionNumber()
_bg, _ca := _db.GetIndirect(_db.ResolveReference(_acc.GetTrailer().Get("\u0052\u006f\u006f\u0074")))
_dfb, _aa := _db.GetIndirect(_db.ResolveReference(_dbbd.GetTrailer().Get("\u0052\u006f\u006f\u0074")))
if !_ca || !_aa {
return &DiffResults{}, _b.New("\u0065\u0072\u0072o\u0072\u0020\u0077\u0068i\u006c\u0065\u0020\u0067\u0065\u0074\u0074i\u006e\u0067\u0020\u0072\u006f\u006f\u0074\u0020\u006f\u0062\u006a\u0065\u0063\u0074")
}
_cc, _ca := _db.GetDict(_db.ResolveReference(_bg.PdfObject))
_aad, _aa := _db.GetDict(_db.ResolveReference(_dfb.PdfObject))
if !_ca || !_aa {
return &DiffResults{}, _b.New("\u0065\u0072\u0072\u006f\u0072\u0020\u0077\u0068\u0069\u006c\u0065\u0020\u0067e\u0074\u0074\u0069\u006e\u0067\u0020a\u0020\u0072\u006f\u006f\u0074\u0027\u0073\u0020\u0064\u0069\u0063\u0074\u0069o\u006e\u0061\u0072\u0079")
}
if _dc, _bc := _db.GetIndirect(_aad.Get("\u0041\u0063\u0072\u006f\u0046\u006f\u0072\u006d")); _bc {
_ba, _f := _db.GetDict(_dc)
if !_f {
return &DiffResults{}, _b.New("\u0065\u0072\u0072\u006f\u0072 \u0077\u0068\u0069\u006c\u0065\u0020\u0067\u0065\u0074\u0074\u0069\u006e\u0067 \u0041\u0063\u0072\u006f\u0046\u006f\u0072\u006d\u0027\u0073\u0020\u0064\u0069\u0063\u0074\u0069\u006f\u006e\u0061\u0072\u0079")
}
_gc := make([]_db.PdfObject, 0)
if _fa, _bd := _db.GetIndirect(_cc.Get("\u0041\u0063\u0072\u006f\u0046\u006f\u0072\u006d")); _bd {
if _gb, _fd := _db.GetDict(_fa); _fd {
if _af, _ec := _db.GetArray(_gb.Get("\u0046\u0069\u0065\u006c\u0064\u0073")); _ec {
_gc = _af.Elements()
}
}
}
_cbg, _f := _db.GetArray(_ba.Get("\u0046\u0069\u0065\u006c\u0064\u0073"))
if !_f {
return &DiffResults{}, _b.New("\u0065\u0072r\u006f\u0072\u0020\u0077h\u0069\u006ce\u0020\u0067\u0065\u0074\u0074\u0069\u006e\u0067 \u0041\u0063\u0072\u006f\u0046\u006f\u0072\u006d\u0027\u0073\u0020\u0066i\u0065\u006c\u0064\u0073")
}
if _faf := _e.compareFields(_da, _gc, _cbg.Elements()); _faf != nil {
return &DiffResults{}, _faf
}
}
_eg, _bca := _db.GetIndirect(_aad.Get("\u0050\u0061\u0067e\u0073"))
if !_bca {
return &DiffResults{}, _b.New("\u0065\u0072\u0072\u006f\u0072\u0020w\u0068\u0069\u006c\u0065\u0020\u0067\u0065\u0074\u0074\u0069\u006e\u0067\u0020p\u0061\u0067\u0065\u0073\u0027\u0020\u006fb\u006a\u0065\u0063\u0074")
}
_ea, _bca := _db.GetIndirect(_cc.Get("\u0050\u0061\u0067e\u0073"))
if !_bca {
return &DiffResults{}, _b.New("\u0065\u0072\u0072\u006f\u0072\u0020w\u0068\u0069\u006c\u0065\u0020\u0067\u0065\u0074\u0074\u0069\u006e\u0067\u0020p\u0061\u0067\u0065\u0073\u0027\u0020\u006fb\u006a\u0065\u0063\u0074")
}
if _cab := _e.comparePages(_da, _ea, _eg); _cab != nil {
return &DiffResults{}, _cab
}
return _e._bf, nil
}
// String returns the state of the warning.
func (_gbc *DiffResult) String() string {
return _c.Sprintf("\u0025\u0073\u0020\u0069n \u0072\u0065\u0076\u0069\u0073\u0069\u006f\u006e\u0073\u0020\u0023\u0025\u0064", _gbc.Description, _gbc.Revision)
}
func (_beg *DiffResults) addWarning(_faa *DiffResult) {
if _beg.Warnings == nil {
_beg.Warnings = make([]*DiffResult, 0)
}
_beg.Warnings = append(_beg.Warnings, _faa)
}
// DiffPolicy interface for comparing two revisions of the Pdf document.
type DiffPolicy interface {
// ReviewFile should check the revisions of the old and new parsers
// and evaluate the differences between the revisions.
// Each implementation of this interface must decide
// how to handle cases where there are multiple revisions between the old and new revisions.
ReviewFile(_bfa *_db.PdfParser, _gf *_db.PdfParser, _ef *MDPParameters) (*DiffResults, error)
}
// ReviewFile implementation of DiffPolicy interface
// The default policy only checks the next types of objects:
// Page, Pages (container for page objects), Annot, Annots (container for annotation objects), Field.
// It checks adding, removing and modifying objects of these types.
func (_dbb *defaultDiffPolicy) ReviewFile(oldParser *_db.PdfParser, newParser *_db.PdfParser, params *MDPParameters) (*DiffResults, error) {
if oldParser.GetRevisionNumber() > newParser.GetRevisionNumber() {
return nil, _b.New("\u006f\u006c\u0064\u0020\u0072\u0065\u0076\u0069\u0073\u0069\u006f\u006e\u0020\u0067\u0072\u0065\u0061\u0074\u0065\u0072\u0020\u0074\u0068\u0061n\u0020\u006e\u0065\u0077\u0020r\u0065\u0076i\u0073\u0069\u006f\u006e")
}
if oldParser.GetRevisionNumber() == newParser.GetRevisionNumber() {
if oldParser != newParser {
return nil, _b.New("\u0073\u0061m\u0065\u0020\u0072\u0065v\u0069\u0073i\u006f\u006e\u0073\u002c\u0020\u0062\u0075\u0074 \u0064\u0069\u0066\u0066\u0065\u0072\u0065\u006e\u0074\u0020\u0070\u0061r\u0073\u0065\u0072\u0073")
}
return &DiffResults{}, nil
}
if params == nil {
_dbb._ce = NoRestrictions
} else {
_dbb._ce = params.DocMDPLevel
}
_ae := &DiffResults{}
for _cb := oldParser.GetRevisionNumber() + 1; _cb <= newParser.GetRevisionNumber(); _cb++ {
_ac, _g := newParser.GetRevision(_cb - 1)
if _g != nil {
return nil, _g
}
_aef, _g := newParser.GetRevision(_cb)
if _g != nil {
return nil, _g
}
_cea, _g := _dbb.compareRevisions(_ac, _aef)
if _g != nil {
return nil, _g
}
_ae.Warnings = append(_ae.Warnings, _cea.Warnings...)
_ae.Errors = append(_ae.Errors, _cea.Errors...)
}
return _ae, nil
}
type defaultDiffPolicy struct {
_a map[int64]_db.PdfObject
_bf *DiffResults
_ce DocMDPPermission
}
// DiffResult describes the warning or the error for the DiffPolicy results.
type DiffResult struct {
Revision int
Description string
}
func _feaf(_bcb _db.PdfObject) ([]_db.PdfObject, error) {
_bfc := make([]_db.PdfObject, 0)
if _bcb != nil {
_dcgc := _bcb
if _fcf, _adc := _db.GetIndirect(_bcb); _adc {
_dcgc = _fcf.PdfObject
}
if _afgb, _acb := _db.GetArray(_dcgc); _acb {
_bfc = _afgb.Elements()
} else {
return nil, _b.New("\u0075n\u0065\u0078\u0070\u0065c\u0074\u0065\u0064\u0020\u0061n\u006eo\u0074s\u0027\u0020\u006f\u0062\u006a\u0065\u0063t")
}
}
return _bfc, nil
}
// DiffResults describes the results of the DiffPolicy.
type DiffResults struct {
Warnings []*DiffResult
Errors []*DiffResult
}
func (_acf *defaultDiffPolicy) comparePages(_dda int, _dcc, _afg *_db.PdfIndirectObject) error {
if _, _fge := _acf._a[_afg.ObjectNumber]; _fge {
_acf._bf.addErrorWithDescription(_dda, "\u0050a\u0067e\u0073\u0020\u0077\u0065\u0072e\u0020\u0063h\u0061\u006e\u0067\u0065\u0064")
}
_aeb, _gd := _db.GetDict(_afg.PdfObject)
_eae, _bfd := _db.GetDict(_dcc.PdfObject)
if !_gd || !_bfd {
return _b.New("\u0075n\u0065\u0078\u0070\u0065\u0063\u0074\u0065\u0064\u0020\u0050\u0061g\u0065\u0073\u0027\u0020\u006f\u0062\u006a\u0065\u0063\u0074")
}
_ab, _gd := _db.GetArray(_aeb.Get("\u004b\u0069\u0064\u0073"))
_ag, _bfd := _db.GetArray(_eae.Get("\u004b\u0069\u0064\u0073"))
if !_gd || !_bfd {
return _b.New("\u0075\u006e\u0065\u0078p\u0065\u0063\u0074\u0065\u0064\u0020\u0050\u0061\u0067\u0065s\u0027 \u0064\u0069\u0063\u0074\u0069\u006f\u006ea\u0072\u0079")
}
_aada := _ab.Len()
if _aada > _ag.Len() {
_aada = _ag.Len()
}
for _agc := 0; _agc < _aada; _agc++ {
_afa, _egb := _db.GetIndirect(_db.ResolveReference(_ag.Get(_agc)))
_fga, _fc := _db.GetIndirect(_db.ResolveReference(_ab.Get(_agc)))
if !_egb || !_fc {
return _b.New("\u0075\u006e\u0065\u0078pe\u0063\u0074\u0065\u0064\u0020\u0070\u0061\u0067\u0065\u0020\u006f\u0062\u006a\u0065c\u0074")
}
if _afa.ObjectNumber != _fga.ObjectNumber {
_acf._bf.addErrorWithDescription(_dda, _c.Sprintf("p\u0061\u0067\u0065\u0020#%\u0064 \u0077\u0061\u0073\u0020\u0072e\u0070\u006c\u0061\u0063\u0065\u0064", _agc))
}
_be, _egb := _db.GetDict(_fga)
_daa, _fc := _db.GetDict(_afa)
if !_egb || !_fc {
return _b.New("\u0075\u006e\u0065\u0078p\u0065\u0063\u0074\u0065\u0064\u0020\u0070\u0061\u0067\u0065'\u0073 \u0064\u0069\u0063\u0074\u0069\u006f\u006ea\u0072\u0079")
}
_bec, _geg := _feaf(_be.Get("\u0041\u006e\u006e\u006f\u0074\u0073"))
if _geg != nil {
return _geg
}
_fcd, _geg := _feaf(_daa.Get("\u0041\u006e\u006e\u006f\u0074\u0073"))
if _geg != nil {
return _geg
}
if _dfa := _acf.compareAnnots(_dda, _fcd, _bec); _dfa != nil {
return _dfa
}
}
for _dab := _aada + 1; _dab <= _ab.Len(); _dab++ {
_acf._bf.addErrorWithDescription(_dda, _c.Sprintf("\u0070a\u0067e\u0020\u0023\u0025\u0064\u0020w\u0061\u0073 \u0061\u0064\u0064\u0065\u0064", _dab))
}
for _ee := _aada + 1; _ee <= _ag.Len(); _ee++ {
_acf._bf.addErrorWithDescription(_dda, _c.Sprintf("p\u0061g\u0065\u0020\u0023\u0025\u0064\u0020\u0077\u0061s\u0020\u0072\u0065\u006dov\u0065\u0064", _ee))
}
return nil
}
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
Go
1
https://gitee.com/zhaobingss/unipdf.git
git@gitee.com:zhaobingss/unipdf.git
zhaobingss
unipdf
unipdf
55e877b0b57f

搜索帮助

344bd9b3 5694891 D2dac590 5694891