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  }