Original library by christopherdro
This library is a modified copy of their repo with bug fixes.
Easily convert HTML strings to PDF documents in your React Native app, and save them on your device.
Install the libaray
npm i react-native-convert-html-to-pdf
yarn add react-native-convert-html-to-pdf
You don't need to do anything! Just rebuild you app - React Native will do the rest for you.
Run react-native link react-native-convert-html-to-pdf
Instructions
- Open your project in XCode, right click on "Libraries" and select "Add Files to 'Your Project Name'".
- Add
libRNHTMLtoPDF.a
toBuild Phases -> Link Binary With Libraries
- Edit
android/settings.gradle
to included
include ':react-native-convert-html-to-pdf'
project(':react-nativeconvert--html-to-pdf').projectDir = new File(rootProject.projectDir,'../node_modules/react-native-convert-html-to-pdf/android')
- Edit
android/app/build.gradle
file to include
dependencies {
....
compile project(':react-native-convert-html-to-pdf')
}
- Edit
MainApplication.java
to include
// import the package
import dev.davwheat.htmltopdf.ConvertHtmlToPdfPackage;
// include package
new MainReactPackage(),
new ConvertHtmlToPdfPackage()
- Add the following
WRITE_EXTERNAL_STORAGE
permission toAndroidManifest.xml
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
NOTE: Starting from Android 6 (Marshmallow), users need to be prompted for permission dynamically. Follow this link for more details on how to do that.
import React, { Component } from 'react';
import {
Text,
TouchableHighlight,
View,
} from 'react-native';
import HtmlToPdf from 'react-native-convert-html-to-pdf';
export default class Example extends Component {
async GeneratePDF() {
let file = await HtmlToPdf.convert({
html: '<h1>PDF TEST</h1>',
fileName: 'test',
directory: 'Documents',
})
return file.filePath;
}
render() {
return(
<View>
<TouchableHighlight onPress={this.GeneratePDF}>
<Text>Create PDF</Text>
</TouchableHighlight>
</View>
)
}
}
Param | Type | Default | Note |
---|---|---|---|
html |
string |
HTML string to be converted | |
fileName |
string |
Random | Custom Filename excluding .pdf extension |
base64 |
boolean |
false | return base64 string of pdf file (not recommended) |
directory |
string |
default cache directory | Directory where the file will be created (Documents folder in example above). Please note, on iOS Documents is the only custom value that is accepted. |
height |
number |
792 | Set document height (points) |
width |
number |
612 | Set document width (points) |
Param | Type | Default | Note |
---|---|---|---|
paddingLeft |
number | 10 | Outer left padding (points) |
paddingRight |
number | 10 | Outer right padding (points) |
paddingTop |
number | 10 | Outer top padding (points) |
paddingBottom |
number | 10 | Outer bottom padding (points) |
padding |
number | 10 | Outer padding for any side (points), overrides any padding listed before |
bgColor |
string | #F6F5F0 | Background color in Hexadecimal |
Param | Type | Default | Note |
---|---|---|---|
fonts |
Array | [] |
Allow custom fonts ['/fonts/TimesNewRoman.ttf', '/fonts/Verdana.ttf'] |