0.1.5 • Published 4 years ago

angular-formio-pdf v0.1.5

Weekly downloads
69
License
-
Repository
-
Last release
4 years ago

AngularFormioPdf

It will supports angular 4+.

Download

Run npm install angular-formio-pdf pdfmake moment --save.

Note: Angular Formio Pdf uses Moment for date conversions and Pdfmake to generate pdf view.

Usage

Import it in respective module.

import { BrowserModule } from '@angular/platform-browser';
import { NgModule } from '@angular/core';
import { AngularFormioPdfModule } from 'angular-formio-pdf';
import { AppComponent } from './app.component';

@NgModule({
  declarations: [
    AppComponent
  ],
  imports: [
    BrowserModule,
    AngularFormioPdfModule
  ],
  providers: [],
  bootstrap: [AppComponent]
})
export class AppModule { }

In app.compoment.html

<angular-formio-pdf *ngIf="submission" [component]="component" [submission]="submission" [pdf]="pdfconfig" (onRenderBlob)="onblob($event)" (onRenderBase64)="onbase64($event)" (onRenderBuffer)="onbuffer($event)">
</angular-formio-pdf>

In app.compoment.ts form-builder component input sample below and submission(form submited values) data input and pdf configuration (your own customization of pdfmake. Most imporant you should leave the content in pdf configuration empty content: []).

Outputs are enabled as Buffer, Blob and Base64. Try sample code below.

import { Component } from '@angular/core';
import moment from 'moment';
import pdfMake from "pdfmake/build/pdfmake";
import pdfFonts from "pdfmake/build/vfs_fonts";
pdfMake.vfs = pdfFonts.pdfMake.vfs;

@Component({
  selector: 'my-app',
  templateUrl: './app.component.html',
  styleUrls: ['./app.component.css']
})
export class AppComponent {
  component = undefined;
  submission = undefined;
  pdfconfig = undefined;
  ngOnInit() {
    this.component = [
      {
        "label": "Panel",
        "title": "Page Title",
        "collapsible": false,
        "mask": false,
        "tableView": false,
        "alwaysEnabled": false,
        "type": "panel",
        "input": false,
        "key": "panel",
        "components": [
          {
            "label": "Name",
            "allowMultipleMasks": false,
            "showWordCount": false,
            "showCharCount": false,
            "tableView": true,
            "alwaysEnabled": false,
            "type": "textfield",
            "input": true,
            "key": "name",
            "properties": {},
            "tags": []
          },
          {
            "label": "Columns",
            "columns": [
              {
                "components": [
                  {
                    "label": "Date Of Birth",
                    "allowMultipleMasks": false,
                    "showWordCount": false,
                    "showCharCount": false,
                    "tableView": true,
                    "alwaysEnabled": false,
                    "type": "textfield",
                    "input": true,
                    "key": "dob",
                    "properties": {},
                    "tags": []
                  }
                ],
                "width": 6,
                "offset": 0,
                "push": 0,
                "pull": 0,
                "type": "column",
                "hideOnChildrenHidden": false,
                "input": true,
                "key": "",
                "tableView": true,
                "label": ""
              },
              {
                "components": [
                  {
                    "label": "Qualification",
                    "allowMultipleMasks": false,
                    "showWordCount": false,
                    "showCharCount": false,
                    "tableView": true,
                    "alwaysEnabled": false,
                    "type": "textfield",
                    "input": true,
                    "key": "qualification",
                    "properties": {},
                    "tags": []
                  }
                ],
                "width": 6,
                "offset": 0,
                "push": 0,
                "pull": 0,
                "type": "column",
                "hideOnChildrenHidden": false,
                "input": true,
                "key": "",
                "tableView": true,
                "label": ""
              }
            ],
            "mask": false,
            "tableView": false,
            "alwaysEnabled": false,
            "type": "columns",
            "input": false,
            "key": "columns"
          }
        ]
      },
      {
        "type": "submit",
        "label": "Submit",
        "key": "submit",
        "disableOnInvalid": true,
        "theme": "primary",
        "input": true,
        "tableView": true
      }
    ];
    this.submission = {
      "name": "Mr Louis",
      "dob": "2019-02-11T18:30:00.000Z",
      "qualification": "UG",
    };
    this.pdfconfig = {
        content: [],                        // should always be empty array
        ...                                 // you own customization for pdfmake
    };
  }
}

Html styling suppotred for component type htmlelement. Styles which are supported for PDFMake text are supported. Some style example below.

{
  label: 'HTML',
  content: 'This is sub title',
  style: {
    bold: true | false,
    margin: [0, 0, 0, 0], // positions [left, top, right, bottom]
    lineHeight: 1.3,
    fontSize: 14,
    color: '#000', // name or Hex codes
    alignment: 'center | left | right'
  },
  type: 'htmlelement',
  input: false,
  key: 'html',
  .........
  .....
}

Demo

Angular FormIO PDF

License

MIT

0.1.5

4 years ago

0.1.4

4 years ago

0.1.3

4 years ago

0.1.2

4 years ago

0.1.1

5 years ago

0.1.0

5 years ago

0.0.9

5 years ago

0.0.8

5 years ago

0.0.7

5 years ago

0.0.6

5 years ago

0.0.5

5 years ago

0.0.4

5 years ago

0.0.3

5 years ago

0.0.2

5 years ago

0.0.1

5 years ago