React Native PDF Editor
API Reference
Main public API surface for react-native-pdf-editor.
This is a practical reference, not generated TypeDoc. For exact signatures, trust the exported TypeScript types in your editor.
Main entry point
import {
PdfDocument,
PdfRenderer,
type PdfDocument as PdfDocumentInstance,
type PdfPage,
type PdfPainter,
type PdfField,
type PdfAnnotation,
} from '@doko/react-native-pdf-editor';PdfDocument
Static helpers:
PdfDocument.create(): PdfDocument
PdfDocument.open(path: string, password?: string): Promise<PdfDocument>
PdfDocument.isEncrypted(path: string): Promise<boolean>Document instance:
readonly pageCount: number
getPage(index: number): PdfPage
createPage(width: number, height: number): PdfPage
createPageAt(index: number, width: number, height: number): PdfPage
removePageAt(index: number): void
appendPagesFrom(source: PdfDocument): void
appendPageRangeFrom(source: PdfDocument, pageIndex: number, pageCount: number): void
insertPageFrom(atIndex: number, source: PdfDocument, pageIndex: number): void
save(path: string): Promise<void>Fonts and images:
getStandard14Font(name: Standard14FontName): PdfFont
loadFont(path: string): PdfFont
loadFontFromBuffer(data: ArrayBuffer): PdfFont
createImageFromBuffer(data: ArrayBuffer): PdfImageMetadata:
getTitle(): string | undefined
setTitle(title: string | undefined): void
getAuthor(): string | undefined
setAuthor(author: string | undefined): void
getSubject(): string | undefined
setSubject(subject: string | undefined): void
getCreator(): string | undefined
setCreator(creator: string | undefined): voidForms:
readonly fieldCount: number
getFieldAt(index: number): PdfField
createTextBox(name: string): PdfField
createCheckBox(name: string): PdfFieldEncryption:
setEncrypted(userPassword: string, ownerPassword: string, permissions?: PdfPermissions): void
isEncrypted(): boolean
getEncryptionInfo(): PdfEncryptionInfo | undefinedPdfPage
readonly width: number
readonly height: number
readonly index: number
getRotation(): number
setRotation(rotation: number): void
getMediaBox(): PdfRect
setMediaBox(x: number, y: number, width: number, height: number): void
getCropBox(): PdfRect
setCropBox(x: number, y: number, width: number, height: number): void
moveTo(newIndex: number): boolean
createPainter(): PdfPainter
getAnnotationCount(): number
getAnnotationAt(index: number): PdfAnnotation
createAnnotation(type: PdfAnnotationType, x: number, y: number, width: number, height: number): PdfAnnotation
extractText(pattern?: string): PdfTextEntry[]PdfPainter
setFont(font: PdfFont, fontSize: number): void
drawText(text: string, x: number, y: number): void
drawImage(image: PdfImage, x: number, y: number, scaleX?: number, scaleY?: number): void
drawLine(x1: number, y1: number, x2: number, y2: number): void
drawRectangle(x: number, y: number, width: number, height: number, fill: boolean): void
drawCircle(x: number, y: number, radius: number, fill: boolean): void
setStrokingColorRGB(red: number, green: number, blue: number): void
setNonStrokingColorRGB(red: number, green: number, blue: number): void
save(): void
restore(): void
finishDrawing(): voidPdfRenderer
PdfRenderer.renderPageToBitmap(options: RenderPageOptions): Promise<PdfPageBitmap>
PdfRenderer.writeBitmapToImage(bitmap: PdfPageBitmap, options: WriteBitmapToImageOptions): Promise<void>Types:
interface RenderPageOptions {
path: string;
pageIndex: number;
scale?: number;
}
interface PdfPageBitmap {
data: ArrayBuffer;
width: number;
height: number;
bytesPerRow: number;
format: string;
}
interface WriteBitmapToImageOptions {
outputPath: string;
format: 'png' | 'jpeg';
}PdfField
readonly fieldType: PdfFieldType
readonly fullName: string
getText(): string | undefined
setText(text: string | undefined): void
isChecked(): boolean
setChecked(checked: boolean): void
getSignatureInfo(): PdfSignatureInfo
verifySignature(documentPath: string): Promise<PdfSignatureVerificationStatus>Field-specific methods throw if used on the wrong field type.
PdfAnnotation
readonly annotationType: PdfAnnotationType
getRect(): PdfRect
setRect(x: number, y: number, width: number, height: number): void
getContents(): string | undefined
setContents(contents: string | undefined): voidSigning entry point
import {
signPdf,
createSigner,
DIGEST_ALGORITHM_OIDS,
RSA_PKCS1_DIGEST_INFO_PREFIX_HEX,
type Signer,
type SignPdfOptions,
type ValidationData,
} from '@doko/react-native-pdf-editor/signing';High-level signing:
signPdf(signer: Signer, options: SignPdfOptions): Promise<void>Signer:
interface Signer {
getCertificateChain(): Promise<string[]>;
sign(digestBase64: string, algorithm: DigestAlgorithm): Promise<string>;
timestamp?(messageImprintBase64: string, algorithm: DigestAlgorithm): Promise<string>;
}Options:
interface SignPdfOptions {
inputPath: string;
outputPath: string;
conformanceLevel: 'B-B' | 'B-T' | 'B-LT' | 'B-LTA';
hashAlgorithm?: 'SHA256' | 'SHA384' | 'SHA512';
rootCertificate?: string;
visibleTextSignature?: PdfVisibleTextSignatureOptions;
visibleImageSignature?: PdfVisibleImageSignatureOptions;
validationData?: ValidationData;
}Visible text signatures:
interface PdfVisibleTextSignatureOptions {
pageIndex: number;
x: number;
y: number;
width: number;
height: number;
text: string;
fontName?: string;
signerName?: string;
reason?: string;
location?: string;
contactInfo?: string;
}Visible image signatures:
type PdfVisibleSignatureImageFit = 'contain' | 'stretch';
interface PdfVisibleSignatureImageOptions {
path?: string;
base64?: string;
bytes?: ArrayBuffer;
fit?: PdfVisibleSignatureImageFit;
}
interface PdfVisibleImageSignatureOptions {
pageIndex: number;
x: number;
y: number;
width: number;
height: number;
image: PdfVisibleSignatureImageOptions;
signerName?: string;
reason?: string;
location?: string;
contactInfo?: string;
}For PdfVisibleSignatureImageOptions, pass exactly one image source: path, base64, or bytes.
Lower-level signing session
Available through PdfEditorFactory.createSigningSession(...) for advanced workflows.
beginSigning(): Promise<string>
finishSigning(signatureBase64: string, timestampTokenBase64?: string, certificates?: string[], crls?: string[], ocsps?: string[]): Promise<void>
beginSigningLTA(): Promise<string>
finishSigningLTA(timestampTokenBase64: string, certificates?: string[], crls?: string[], ocsps?: string[]): Promise<void>
getCrlFromCertificate(certificateBase64: string): string
extractSignerCertFromTSR(tsrBase64: string): string
extractIssuerCertFromTSR(tsrBase64: string): string
getOCSPResponderUrl(certificateBase64: string, issuerCertificateBase64: string): string
buildOCSPRequest(certificateBase64: string, issuerCertificateBase64: string): string
getCertificateIssuerUrl(certificateBase64: string): string