code: func (f *CustomColumnsPrintFlags) ToPrinter(templateFormat string) (printers.ResourcePrinter, error) {
  	if len(templateFormat) == 0 {
  		return nil, genericclioptions.NoCompatiblePrinterError{}
  	}
  
  	templateValue := ""
  
  	if len(f.TemplateArgument) == 0 {
  		for format := range columnsFormats {
  			format = format + "="
  			if strings.HasPrefix(templateFormat, format) {
  				templateValue = templateFormat[len(format):]
  				templateFormat = format[:len(format)-1]
  				break
  			}
  		}
  	} else {
  		templateValue = f.TemplateArgument
  	}
  
  	if _, supportedFormat := columnsFormats[templateFormat]; !supportedFormat {
  		return nil, genericclioptions.NoCompatiblePrinterError{OutputFormat: &templateFormat, AllowedFormats: f.AllowedFormats()}
  	}
  
  	if len(templateValue) == 0 {
  		return nil, fmt.Errorf("custom-columns format specified but no custom columns given")
  	}
  
  	// UniversalDecoder call must specify parameter versions; otherwise it will decode to internal versions.
  	decoder := scheme.Codecs.UniversalDecoder(scheme.Scheme.PrioritizedVersionsAllGroups()...)
  
  	if templateFormat == "custom-columns-file" {
  		file, err := os.Open(templateValue)
  		if err != nil {
  			return nil, fmt.Errorf("error reading template %s, %v\n", templateValue, err)
  		}
  		defer file.Close()
  		p, err := NewCustomColumnsPrinterFromTemplate(file, decoder)
  		return p, err
  	}
  
  	return NewCustomColumnsPrinterFromSpec(templateValue, decoder, f.NoHeaders)
  }
docs: // ToPrinter receives an templateFormat and returns a printer capable of
  // handling custom-column printing.
  // Returns false if the specified templateFormat does not match a supported format.
  // Supported format types can be found in pkg/printers/printers.go