github.com/pdfcpu/pdfcpu@v0.11.1/pkg/cli/process.go (about) 1 /* 2 Copyright 2019 The pdfcpu Authors. 3 4 Licensed under the Apache License, Version 2.0 (the "License"); 5 you may not use this file except in compliance with the License. 6 You may obtain a copy of the License at 7 8 http://www.apache.org/licenses/LICENSE-2.0 9 10 Unless required by applicable law or agreed to in writing, software 11 distributed under the License is distributed on an "AS IS" BASIS, 12 WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 See the License for the specific language governing permissions and 14 limitations under the License. 15 */ 16 17 package cli 18 19 import ( 20 "github.com/pdfcpu/pdfcpu/pkg/pdfcpu/model" 21 "github.com/pkg/errors" 22 ) 23 24 // Process executes a pdfcpu command. 25 func Process(cmd *Command) (out []string, err error) { 26 defer func() { 27 if r := recover(); r != nil { 28 err = errors.Errorf("unexpected panic attack: %v\n", r) 29 } 30 }() 31 32 cmd.Conf.Cmd = cmd.Mode 33 34 if f, ok := cmdMap[cmd.Mode]; ok { 35 return f(cmd) 36 } 37 38 return nil, errors.Errorf("pdfcpu: process: Unknown command mode %d\n", cmd.Mode) 39 } 40 41 func processAttachments(cmd *Command) (out []string, err error) { 42 switch cmd.Mode { 43 44 case model.LISTATTACHMENTS: 45 out, err = ListAttachments(cmd) 46 47 case model.ADDATTACHMENTS, model.ADDATTACHMENTSPORTFOLIO: 48 out, err = AddAttachments(cmd) 49 50 case model.REMOVEATTACHMENTS: 51 out, err = RemoveAttachments(cmd) 52 53 case model.EXTRACTATTACHMENTS: 54 out, err = ExtractAttachments(cmd) 55 } 56 57 return out, err 58 } 59 60 func processBookmarks(cmd *Command) (out []string, err error) { 61 switch cmd.Mode { 62 63 case model.LISTBOOKMARKS: 64 return ListBookmarks(cmd) 65 66 case model.EXPORTBOOKMARKS: 67 return ExportBookmarks(cmd) 68 69 case model.IMPORTBOOKMARKS: 70 return ImportBookmarks(cmd) 71 72 case model.REMOVEBOOKMARKS: 73 return RemoveBookmarks(cmd) 74 } 75 76 return nil, nil 77 } 78 79 func processEncryption(cmd *Command) (out []string, err error) { 80 switch cmd.Mode { 81 82 case model.ENCRYPT: 83 return Encrypt(cmd) 84 85 case model.DECRYPT: 86 return Decrypt(cmd) 87 88 case model.CHANGEUPW: 89 return ChangeUserPassword(cmd) 90 91 case model.CHANGEOPW: 92 return ChangeOwnerPassword(cmd) 93 } 94 95 return nil, nil 96 } 97 98 func processForm(cmd *Command) (out []string, err error) { 99 switch cmd.Mode { 100 101 case model.LISTFORMFIELDS: 102 return ListFormFields(cmd) 103 104 case model.REMOVEFORMFIELDS: 105 return RemoveFormFields(cmd) 106 107 case model.LOCKFORMFIELDS: 108 return LockFormFields(cmd) 109 110 case model.UNLOCKFORMFIELDS: 111 return UnlockFormFields(cmd) 112 113 case model.RESETFORMFIELDS: 114 return ResetFormFields(cmd) 115 116 case model.EXPORTFORMFIELDS: 117 return ExportFormFields(cmd) 118 119 case model.FILLFORMFIELDS: 120 return FillFormFields(cmd) 121 122 case model.MULTIFILLFORMFIELDS: 123 return MultiFillFormFields(cmd) 124 } 125 126 return nil, nil 127 } 128 129 func processImages(cmd *Command) (out []string, err error) { 130 switch cmd.Mode { 131 132 case model.LISTIMAGES: 133 return ListImages(cmd) 134 135 case model.UPDATEIMAGES: 136 return UpdateImages(cmd) 137 } 138 139 return nil, nil 140 } 141 142 func processKeywords(cmd *Command) (out []string, err error) { 143 switch cmd.Mode { 144 145 case model.LISTKEYWORDS: 146 out, err = ListKeywords(cmd) 147 148 case model.ADDKEYWORDS: 149 out, err = AddKeywords(cmd) 150 151 case model.REMOVEKEYWORDS: 152 out, err = RemoveKeywords(cmd) 153 154 } 155 156 return out, err 157 } 158 159 func processPageAnnotations(cmd *Command) (out []string, err error) { 160 switch cmd.Mode { 161 162 case model.LISTANNOTATIONS: 163 out, err = ListAnnotations(cmd) 164 165 case model.REMOVEANNOTATIONS: 166 out, err = RemoveAnnotations(cmd) 167 } 168 169 return out, err 170 } 171 172 func processPageBoundaries(cmd *Command) (out []string, err error) { 173 switch cmd.Mode { 174 175 case model.LISTBOXES: 176 return ListBoxes(cmd) 177 178 case model.ADDBOXES: 179 return AddBoxes(cmd) 180 181 case model.REMOVEBOXES: 182 return RemoveBoxes(cmd) 183 184 case model.CROP: 185 return Crop(cmd) 186 } 187 188 return nil, nil 189 } 190 191 func processPageLayout(cmd *Command) (out []string, err error) { 192 switch cmd.Mode { 193 194 case model.LISTPAGELAYOUT: 195 return ListPageLayout(cmd) 196 197 case model.SETPAGELAYOUT: 198 return SetPageLayout(cmd) 199 200 case model.RESETPAGELAYOUT: 201 return ResetPageLayout(cmd) 202 } 203 204 return nil, nil 205 } 206 207 func processPageMode(cmd *Command) (out []string, err error) { 208 switch cmd.Mode { 209 210 case model.LISTPAGEMODE: 211 return ListPageMode(cmd) 212 213 case model.SETPAGEMODE: 214 return SetPageMode(cmd) 215 216 case model.RESETPAGEMODE: 217 return ResetPageMode(cmd) 218 } 219 220 return nil, nil 221 } 222 223 func processPages(cmd *Command) (out []string, err error) { 224 switch cmd.Mode { 225 226 case model.INSERTPAGESBEFORE, model.INSERTPAGESAFTER: 227 return InsertPages(cmd) 228 229 case model.REMOVEPAGES: 230 return RemovePages(cmd) 231 } 232 233 return nil, nil 234 } 235 236 func processPermissions(cmd *Command) (out []string, err error) { 237 switch cmd.Mode { 238 239 case model.LISTPERMISSIONS: 240 return ListPermissions(cmd) 241 242 case model.SETPERMISSIONS: 243 return SetPermissions(cmd) 244 } 245 246 return nil, nil 247 } 248 249 func processProperties(cmd *Command) (out []string, err error) { 250 switch cmd.Mode { 251 252 case model.LISTPROPERTIES: 253 out, err = ListProperties(cmd) 254 255 case model.ADDPROPERTIES: 256 out, err = AddProperties(cmd) 257 258 case model.REMOVEPROPERTIES: 259 out, err = RemoveProperties(cmd) 260 261 } 262 263 return out, err 264 } 265 266 func processViewerPreferences(cmd *Command) (out []string, err error) { 267 switch cmd.Mode { 268 269 case model.LISTVIEWERPREFERENCES: 270 return ListViewerPreferences(cmd) 271 272 case model.SETVIEWERPREFERENCES: 273 return SetViewerPreferences(cmd) 274 275 case model.RESETVIEWERPREFERENCES: 276 return ResetViewerPreferences(cmd) 277 } 278 279 return nil, nil 280 } 281 282 func processCertificates(cmd *Command) (out []string, err error) { 283 switch cmd.Mode { 284 285 case model.LISTCERTIFICATES: 286 return ListCertificates(cmd) 287 288 case model.INSPECTCERTIFICATES: 289 return InspectCertificates(cmd) 290 291 case model.IMPORTCERTIFICATES: 292 return ImportCertificates(cmd) 293 294 } 295 296 return nil, nil 297 } 298 299 func processSignatures(cmd *Command) (out []string, err error) { 300 switch cmd.Mode { 301 302 case model.VALIDATESIGNATURES: 303 return ValidateSignatures(cmd) 304 } 305 306 return nil, nil 307 }