Angular QR-Code generator component.
This is basically an Angular-wrapper for kjua by Lars Jung.
StackBlitz Example for encoding Contacts, Calendar entries, WiFi-settings and more. You can use iPhone's default Camera App, it will decode QR-Codes!
StackBlitz Example with 300 codes at once (async rendering)
StackBlitz Example for generating a PDF with jspdf
To install this package, run:
npm install ngx-kjua --save
Then import it into your Angular AppModule
:
// Common imports
import { NgModule /* , ... */ } from '@angular/core';
// Import the package's module
import { NgxKjuaModule } from 'ngx-kjua';
@NgModule({
declarations: [ /* AppComponent ... */ ],
imports: [
// BrowserModule,
// ...
NgxKjuaModule,
// other imports...
],
// ...
})
export class AppModule { }
Once the package is imported, you can use it in your Angular application:
<ngx-kjua
[text]="'hello'"
></ngx-kjua>
<ngx-kjua
[text]="'hello'"
[renderAsync]="false"
[render]="'image'"
[crisp]="true"
[minVersion]="1"
[ecLevel]="'H'"
[size]="400"
[ratio]="undefined"
[fill]="'#333'"
[back]="'#fff'"
[rounded]="100"
[quiet]="1"
[mode]="'plain'"
[mSize]="30"
[mPosX]="50"
[mPosY]="50"
[label]="'label text'"
[fontname]="'sans-serif'"
[fontcolor]="'#ff9818'"
[image]="undefined"
[cssClass]="'image-auto'"
></ngx-kjua>
text
encoded content (defaults to ``)renderAsync
weather or not rendering is done inside "requestAnimationFrame"-call (defaults tofalse
, use true if you want to generate more than one code (e.g. batch))render
render pixel-perfect lines (defaults totrue
)minVersion
minimum version: 1..40(defaults to1
)ecLevel
error correction level: 'L', 'M', 'Q' or 'H' (defaults toL
)size
size in pixel (defaults to200
)fill
code color (defaults to#333
)back
background color (defaults to#fff
)rounded
roundend corners in pc: 0..100 (defaults to0
)quiet
quiet zone in modules (defaults to0
)mode
modes: 'plain', 'label' or 'image' (defaults toplain
, setlabel
orimage
property if you change this)mSize
label/image size in pc: 0..100 (defaults to30
)mPosX
label/image pos x in pc: 0..100 (defaults to50
)mPosY
label/image pos y in pc: 0..100 (defaults to50
)label
additional label text (defaults to ``)fontname
font for additional label text (defaults tosans-serif
)fontcolor
font-color for additional label text (defaults to#333
)image
additional image (defaults toundefined
, use an HTMLImageElement)cssClass
additional css-class that will be appended to the div-container that contains the qr-code (defaults toundefined
)
More details can be found on larsjung.de/kjua
If you plan to render more than one barcode (e.g. batch-generation) I recommend using renderAsync
-flag. It executes the rendering inside a "requestAnimationFrame"-call.
The component comes with a helper-class (QrCodeHelper
), that helps you with generating Codes that have information like a Contact encoded.
Currently it supports the generation of:
- SMS: number with optional pre-defined text
- Call
- Geo-Information: a point on the map with Latitude and Longitude
- Events
- Email: recipient with an optional subject and text
- WiFi: SSID with optional password and a flag for hidden WiFis
- Contact Information: name with optional address, telephone-number(s), email, url.
Contact Encoding is done with MECard-format and NOT VCard! VCard gives a longer string and therefore a bigger code which potentially has a negative impact on readability for scanners. You can, of course, create a VCard string as well but the format is more complex.
See the example above. It works with pure kjua and has in fact nothing to do with ngx-kjua but I thought somebody might find it useful.