Skip to content
Get Discount
Formidable Forms alternatives
  • Pricing
  • Features
  • Templates
  • Integrations
  • Blog
  • Docs
  • Account
Sign in

Get Discount
Formidable Forms alternatives
Popular Search submitsubmissionentryentriespayment

Developer Docs

  • Database Tables of Fluent Forms
  • Submission Lifecycle
  • Integration Feed – Fields API
  • Creating Custom SmartCode for Form Editor
  • Limit Email Domains in Fluent Forms Form Submission
  • Email verification with Emailable
  • Email Confirmation Field
  • How to make a login form with Fluent Form
  • How to make a strong password requirement in user registration forms with Fluent Forms
  • Create Unique Fields in Fluent Forms
  • Populate dropdown field options from Google Sheet
  • Form PHP API
  • PHP Action Hooks
  • PHP Filter Hooks
  • Useful Snippets
  • Creating Pretty Conversational Form URL Slug
  • How to create your own custom field with Fluent Forms

Action Hooks

  • fluentform/before_insert_submission
  • fluentform/submission_inserted
  • fluentform/before_submission_confirmation
  • fluentform/inserted_new_form
  • fluentform/before_form_render
  • fluentform/loaded
  • fluentform/before_form_actions_processing
  • fluentform/before_insert_payment_form
  • flentform/form_duplicated
  • fluentform/form_imported
  • fluentform/after_save_form_settings
  • fluentform/editor_init
  • fluentform/loading_editor_assets
  • fluentform/before_editor_start
  • fluentform/after_editor_start
  • fluentform/after_form_screen_wrapper
  • fluentform/before_form_screen_wrapper
  • fluentform/render_item_{$item}
  • fluentform/after_form_render
  • fluentform/form_element_start
  • fluentform/render_item_step_start
  • fluentform/render_item_step_end
  • fluentform/rendering_calculation_form
  • fluentform/maybe_scheduled_jobs
  • fluentform/do_email_report_scheduled_tasks
  • fluentform/before_permission_set_assignment
  • fluentform/after_permission_set_assignment
  • fluentform/global_menu
  • fluentform/after_form_navigation
  • fluentform/form_application_view_{$route}
  • fluentform/init_custom_stylesheet
  • fluentform/load_form_assets
  • fluentform/scripts_registered
  • fluentform/render_payment_entries
  • fluentform/pre_load_scripts
  • fluentform/submission_note_stored
  • fluentform/starting_file_upload
  • fluentform/global_notify_completed
  • fluentform/save_global_integration_settings_{ $settingsKey}
  • fluentform/integration_action_result
  • fluentform/email_summary_details
  • fluentform/email_template_after_footer
  • fluentform/addons_page_render_{$current_menu_item}
  • fluentform/before_form_settings_app
  • fluentform/after_form_settings_app
  • fluentform/form_settings_container_{$current_sub_route}
  • fluentform/before_global_settings_wrapper
  • fluentform/after_global_settings_wrapper
  • fluentform/global_settings_component_{$currentComponent}
  • fluentform/after_global_settings_option_render
  • fluentform/before_global_settings_option_render
  • fluentform/before_tools_wrapper
  • fluentform/after_tools_wrapper
  • fluentform/before_tools_container
  • fluentform/after_tools_container
  • fluentform/form_styler
  • fluentform/after_style_generated
  • fluentform/conversational_frame_head
  • fluentform/conversational_frame_footer
  • fluentform/user_registration_before_start
  • fluentform/created_user
  • fluentform/user_registration_completed
  • fluentform/post_integration_success
  • fluentform/entry_confirmation
  • fluentform/before_partial_entry_deleted
  • fluentform/after_partial_entry_deleted
  • flunetform/render_payment_entries
  • fluentform/before_all_entries_render
  • fluentform/after_all_entries_render
  • fluentform/before_deleting_entries
  • fluentform/after_deleting_entries
  • fluentform/payment_receipt_before_content
  • fluentform/payment_receipt_after_content
  • fluentform/payment_frameless_{$paymentMethod}
  • fluentform/rending_payment_method_{$methodName}
  • fluentform/payment_method_render_{$methodName}
  • fluentform/before_payment_status_change
  • fluentform/after_payment_status_change
  • fluentform/payment_refunded_{$method}
  • fluentform/payment_refunded
  • fluentform/payment_refund_updated_{$method}
  • fluentform/payment_refund_updated
  • fluentform/ipn_paypal_action_{$txn_type}
  • fluentform/ipn_endpoint_{$paymentMethod}
  • fluentform/ipn_paypal_action_web_accept

Filter Hooks

  • fluentform/insert_response_data
  • fluentform/filter_insert_data
  • fluentform/submission_confirmation
  • fluentform/validate_input_item_{input_key}
  • fluentform/entry_statuses_core
  • fluentform/rendering_field_data_{INPUT_KEY}
  • fluentform/email_body
  • fluentform/rendering_field_data_select
  • fluentform/filter_email_attachments
  • fluentform/rendering_form
  • fluentform/is_form_renderable
  • fluentform/is_handling_submission
  • fluentform/validation_errors
  • fluentform/honeypot_name
  • fluentform/before_render_item
  • fluentform/rendering_field_html_{$elementName}
  • fluentform/skip_no_conflict
  • fluentform/load_styles
  • fluentform/load_default_public
  • fluentform/is_hide_submit_btn_{ $formId}
  • fluentform/form_class
  • fluentform/html_attributes
  • fluentform/editor_shortcodes
  • fluentform/shortcode_parser_callback_{smart_code_name}
  • fluentform/all_editor_shortcodes
  • fluentform/smartcode_group_{$group}
  • fluentform/payment_smartcode
  • fluentform/entry_statuses_core
  • fluentform/nonce_verify
  • fluentform/nonce_error
  • fluentform/numeric_styles
  • fluentform/akismet_fields
  • fluentform/will_return_html
  • fluentform/honeypot_status
  • fluentform/dashboard_notices
  • fluentform/is_admin_page
  • fluentform/single_response_data
  • fluentform/available_date_formats
  • fluentform/permission_set
  • fluentform/api_all_logs
  • fluentform/api_success_log
  • fluentform/api_failed_log
  • fluentform/truncate_password_values
  • fluentform/verify_user_permission_{ $eachPermission}
  • fluentform/permission_callback
  • fluentform/nonce_error
  • fluentform/editor_init_element_{$element}
  • fluentform/editor_validation_rule_settings
  • fluentform/editor_element_settings_placement
  • fluentform/editor_components
  • fluentform/editor_countries
  • fluentform/editor_element_customization_settings
  • fluentform/addons_extra_menu
  • fluentform/global_addons
  • fluentform/global_integration_settings_{$settingsKey}
  • fluentform/global_integration_fields_{$settingsKey}
  • fluentform/global_notification_active_types
  • fluentform/notifying_async_{$integrationKey}
  • fluentform/mailchimp_keep_existing_interests
  • fluentform/mailchimp_keep_existing_tags
  • fluentform/global_notification_feed_{$meta_key}
  • fluentform/integration_data_{$integrationKey}
  • fluentform/shortcode_defaults
  • fluentform/info_shortcode_defaults
  • fluentform/get_raw_responses
  • fluentform/export_data
  • fluentform/shortcode_feed_text
  • fluentform/entry_lists_labels
  • fluentform/all_entries
  • fluentform/step_string
  • fluentform/global_form_vars
  • fluentform/all_entry_labels
  • fluentform/all_entry_labels_with_payment
  • fluentforms/recaptcha_v3_ref_score
  • fluentform/auto_read
  • fluentform/create_default_settings
  • fluentform/form_fields_update
  • fluentform/submissions_widgets
  • fluentform/disabled_analytics
  • fluentform/submission_notes
  • fluentform/store_submission_note
  • fluentform/disable_attachment_delete
  • fluentform/response_render_{element}
  • fluentform/settings_module_{$module}
  • fluentform/rendering_field_html_{$element}
  • fluentform/validation_message_{$ruleName}
  • fluentform/item_rules_{$item}
  • fluentform/send_plain_html_email
  • fluentform/submission_message_parse
  • fluentform/email_subject
  • fluentform/email_body
  • fluentform/email_to
  • fluentform/email_header
  • fluentform/email_footer
  • fluentform/email_styles
  • fluentform/email_template_footer_text
  • fluentform/email_attachments
  • fluentform/email_summary_body_text
  • fluentform/email_summary_footer_text
  • fluentform/email_content_type_header
  • fluentform/email_template_header_image
  • fluentform/email_template_email_heading
  • fluentform/email_template_colors
  • fluentform/nonce_verify
  • fluentform/popup_shortcode_defaults
  • fluentform/survey_shortcode_defaults
  • fluentform/itl_options
  • fluentform/ip_provider
  • fluentform/post_type_selection_types_args
  • fluentform/post_selection_types
  • fluentform/post_selection_posts_pre_data
  • fluentform/post_selection_label_by
  • fluentform/user_registration_field_defaults
  • fluentform/icontact_request_args
  • fluentform/user_registration_feed_fields
  • fluentorm/user_registration_creatable_roles
  • fluentform/payment_settings_{$method}
  • fluentform/payment_method_settings_validation_{$method}
  • fluentform/payment_submission_data
  • fluentform/submission_order_items
  • fluentform/payment_field_{$elementName}
  • fluentform/stripe_checkout_args
  • fluentform/uploader_args
  • fluentform/file_uploaded
  • fluentform/file_upload_params
  • fluentform/default_upload_path
  • fluentform/file_upload_validations
  • fluentform/file_upload_validation_error
  • fluentform/disable_inputmode
  • fluentform/file_type_options
  • fluentform/default_upload_path

Reference API Classes

  • BaseFieldManager Class
  • Integration Manager Class
  • PDF Template Manager Class
  • Base Payment Method Class
  • BaseProcessor Class

Data Definations

  • $submission_data Array
  • $form Object
View Categories
  • Home
  • Docs
  • Developer Documentation
  • Reference API Classes
  • PDF Template Manager Class

PDF Template Manager Class

Introduction #

Fluent Forms PDF extension’s TemplateManager class allows developers to create custom PDF templates in an easy way.

You will need to extend the class TemplateManager and push the class using the filter hook fluentform/pdf_templates to create a new template. Please follow this documentation and create your own PDF template extension Plugin.

You can find this TemplateManager class file here :

wp_lab/wp-content/plugins/fluentforms-pdf/Classes/Templates/TemplateManager.php

Methods #

__construct() #

This is the construct method of this class. You have to pass an Application object. To pass the Application object you can include it using the following namespace. Here is an example of the code so far:

use FluentForm\Framework\Foundation\Application;

class FluentExtraTemplateDemo extends \FluentFormPdf\Classes\Templates\TemplateManager
{

    public function __construct(Application $app)
    {
        parent::__construct($app);
    }
}

getDefaultSettings() #

This method will store the default settings of the PDF template. You will need to return an array of the settings key & value.

    public function getDefaultSettings()
    {
        return [
            'header' => '<h2>Hello From My Demo Template</h2>',
            'footer' => '<p>Footer</p>',
            'body'   => 'Hello There',
            'demo'   => ''
        ];
    }

getSettingsFields() #

This method will render input fields for the PDF template settings page, based on the returned data. The key value used in this field needs to match with the getDefaultSettings()

You can use the prebuilt input components to create your settings page, here is a documentation link where you can find the details list of these input components.

Required properties for the fields array:

  • key : Settings Unique Key
  • label : Settings Input Label
  • component : Pass the prebuild input component.

Here is example of this method:

public function getSettingsFields()
{
    return array(
        [
            'key'        => 'header',
            'label'      => 'Header Content',
            'tips'       => 'Write your header content which will be shown every page of the PDF',
            'component'  => 'text'
        ],
        [
            'key'       => 'body',
            'label'     => 'PDF Body Content',
            'tips'      => 'Write your Body content for actual PDF body',
            'component' => 'wp-editor'
        ],
        [
            'key'       => 'footer',
            'label'     => 'Footer Content',
            'tips'      => 'Write your Footer content which will be shown every page of the PDF',
            'component' => 'wp-editor'
        ],
        [
            'key'       => 'demo',
            'label'     => 'Demp Input',
            'tips'      => 'Input Help Text',
            'component' => 'text'
        ],


    );
}

The filed ‘tips’ will show the additional help text on hover, this method is almost identical to getSettingsFields() in the Integration Manager Class. Here is a screenshot of the above code :

image 30 2811

generatePdf() #

This is the most important method where the PDF will be generated. You will get four parameters here :

  • $submissionId : Current submission ID
  • $feed : PDF feed settings
  • $outPut = ‘I‘ : Do not change this
  • $fileName = ” : File name

The $submissionId will contain the current submission ID. $feed contains array data of the PDF template feed settings. This will store the input data which was generated from getSettingsFields() method. $fileName will be the generated PDF filename.

*Do not change the value of the $outPut = ‘I’

Finally, you will need to call a pre-built function pdfBuilder() and return it to create the PDF file. This method needs four parameters to be passed, these are :

  • $fileName : PDF File name
  • $feed : $feed Parameter
  • $htmlBody : The HTML body and style of your PDF template
  • $footer : PDF Footer
  • $outPut : $output Parameter

Do not add a pdf extension (.pdf) in the file name, it will be done automatically.

 return $this->pdfBuilder($fileName, $feed, $htmlBody, $footer, $outPut);

The HTML can be created by fetching the user submitted form data and your custom data. Here is an example :

public function generatePdf($submissionId, $feed, $outPut = 'I', $fileName = '')
{
    $submission = wpFluent()->table('fluentform_submissions') //submission data object
        ->where('id', $submissionId)
        ->first();

    $htmlBody = '<h1>My PDF body</h1>';                       // Html Body
    $footer   = $submission->created_at;                      // footer
    $fileName = 'my-pdf-'.$submissionId;                      // filename

    return $this->pdfBuilder($fileName, $feed, $htmlBody, $footer, $outPut);
}

All Together  #

A demo TemplateManager class will look like this :


use FluentForm\Framework\Foundation\Application;

class FluentExtraTemplateDemo extends \FluentFormPdf\Classes\Templates\TemplateManager
{

    public function __construct(Application $app)
    {
        parent::__construct($app);
    }

    public function getDefaultSettings()
    {
        return [
            'header' => '<h2>Hello From My Demo Template</h2>',
            'footer' => '<p>Footer</p>',
            'body'   => 'Hello There',
        ];
    }

public function getSettingsFields()
{
    return array(
        [
            'key'       => 'header',
            'label'     => 'Header Content',
            'tips'      => 'Write your header content which will be shown every page of the PDF',
            'component' => 'wp-editor'
        ],
        [
            'key'       => 'body',
            'label'     => 'PDF Body Content',
            'tips'      => 'Write your Body content for actual PDF body',
            'component' => 'wp-editor'
        ],
        [
            'key'       => 'footer',
            'label'     => 'Footer Content',
            'tips'      => 'Write your Footer content which will be shown every page of the PDF',
            'component' => 'wp-editor'
        ],
        [
            'key'       => 'demo',
            'label'     => 'Demp Input',
            'tips'      => 'Input Help Text',
            'component' => 'text'
        ],
    );
}

public function generatePdf($submissionId, $feed, $outPut = 'I', $fileName = '')
    {
        $submission = wpFluent()->table('fluentform_submissions') //submission data
            ->where('id', $submissionId)
            ->first();
        $htmlBody = '<h1>My PDF Body & other elements</h1>';     // Html Body
    
        $footer = $submission->created_at;                       // footer
        $fileName = 'my-pdf-'.$submissionId;                     // filename
    
        return $this->pdfBuilder($fileName, $feed, $htmlBody, $footer, $outPut);
    }
}

Adding the Template extension as a Plugin #

After completing the template class you need to push it into the PDF template list. You can use the fluentform/pdf_templates filter hook to push the class. This can be done by creating a new plugin or inside your function.php file.

You will get 2 parameters in the fluentform/pdf_templates filter.

  • $templates (Array) Template class & configuration list
    • key : template_key
      • name : Template name
      • class : Template class
      • key : template_key
      • preview : Template preview image location
  • $form (Object) The $form Object

Here is an example of how we can create a new plugin and add the template you created. Here FluentExtraTemplateDemo.php file is the file name that you will create.

add_action('fluentform/loaded', function () {
    if(!defined('FLUENTFORM_PDF_VERSION')) {
        return;                                 //checking if fluent form is activated otherwise do nothing
    }
    include 'FluentExtraTemplateDemo.php';      // including the template class you just created
    add_filter('fluentform/pdf_templates', function ($templates, $form) {
        $templates['demo_template'] = [
            'name' => 'My DEMO TEMPLATE',
            'class' => '\FluentExtraTemplateDemo',
            'key' => 'demo_template',
            'preview' => get_template_directory_uri(). 'assets/images/tabular.png'
        ];
        return $templates;
    }, 10, 2);

});

You can include more classes and add new templates using this method. If you have any queries feel free to reach our support team or ask questions in our facebook community group. Also do not forget to share your thoughts on this documentation, by adding your comment or a click on the icons below.

What are your Feelings
Share This Article :
  • Facebook
  • X
  • LinkedIn
  • Pinterest
Still stuck? How can we help?

How can we help?

Updated on July 25, 2023
Integration Manager ClassBase Payment Method Class

Powered by BetterDocs

Table of Contents
  • Introduction
  • Methods
    • __construct()
    • getDefaultSettings()
    • getSettingsFields()
    • generatePdf()
  • All Together 
  • Adding the Template extension as a Plugin

Fluent Forms is a lightweight, fastest WordPress contact form plugin empowering 500K+ businesses worldwide.

Email Newsletter

fluentform Newsletter Inline
Free tutorials, exclusive contents & more.
Facebook Facebook Group Twitter Instagram Linkedin YouTube WordPress

Resources

  • Account
  • Contact Us
  • Get Support
  • Brand Guideline
  • Changelog
  • Documentation
  • Developers Docs
  • API Docs
  • Report a Security Issue

Addons

  • Signature
  • PDF Generator (Free)
  • Mautic (Free)
  • Mailpoet (Free)

Calculators

  • BMI Calculator
  • GKI Calculator
  • Pay Raise Calculator
  • VAT Calculator
  • Fuel Cost Calculator
  • All Calculator Forms

Comparison

  • Free vs. Pro
  • Fluent Forms vs. WPForms
  • Fluent Forms vs. Gravity Forms
  • Fluent Forms vs. Ninja Forms
  • Fluent Forms vs. Forminator

Miscellaneous

  • Features Available in Free Version
  • Free Form Templates
  • Form Templates
  • Quick Start Guide
  • Fluent Forms Integrations

Features

  • Conversational Forms
  • Multi-Step Forms
  • Conditional Logic
  • Numeric Calculation
  • Payment
  • Quiz and Survey
  • Form Security
  • Advanced Form Styler
  • Advanced Post Creation
  • Address Autocomplete
  • Form to PDF
  • AI Form Builder

OUR PRODUCTS

  • FluentCommunity
  • FluentCRM
  • FluentBooking
  • FluentBoards
  • Fluent Support
  • FluentSMTP
  • Ninja Tables
  • WP Social Ninja
  • Paymattic
  • AzonPress
  • FluentSnippets

Copyright © 2025 Fluent Forms, a brand of WPManageNinja™.
This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

The Free Version of Fluent Forms is Ready! We’ll send it to your email.
Direct Download – CTA- Homepage

By downloading you agree to our terms of use and privacy policy.

  • Pricing
  • Features
  • Templates
  • Integrations
  • Blog
  • Docs
  • Account