@vetdrugs/capacitor-pdfshare
v2.0.0
Published
Advanced Capacitor plugin for generating and sharing PDFs from WebView content with comprehensive options and cross-platform support
Maintainers
Readme
capacitor-plugin-pdfshare
Advanced Capacitor plugin for generating and sharing PDFs from WebView content with comprehensive options and cross-platform support.
Features
- 📱 Cross-platform: iOS, Android, and Web support
- 🎨 Flexible formatting: Multiple page formats (A4, Letter, Legal) and orientations
- ⚙️ Configurable options: Margins, quality, background inclusion, and more
- 🔄 Multiple workflows: Generate and share, generate only, or share existing PDFs
- 🧹 Smart cleanup: Automatic removal of old temporary files
- 🎯 TypeScript support: Full type definitions with IntelliSense
Install
npm install capacitor-plugin-pdfshare
npx cap syncQuick Start
import { PdfShare } from 'capacitor-plugin-pdfshare';
// Basic usage - generate and share PDF
await PdfShare.generateAndShare({
filename: 'my-document',
title: 'My Document'
});
// Generate PDF without sharing
const result = await PdfShare.generatePdfOnly({
filename: 'report',
format: 'letter',
orientation: 'landscape'
});
if (result.success) {
console.log('PDF saved to:', result.path);
}Configuration Examples
Basic Configuration
await PdfShare.generateAndShare({
elementId: 'content', // HTML element to convert
filename: 'veterinary-report',
title: 'Veterinary Report'
});Advanced Configuration
await PdfShare.generateAndShare({
elementId: 'printPage',
filename: 'detailed-report',
title: 'Detailed Veterinary Analysis',
orientation: 'landscape',
format: 'letter',
margins: {
top: 30,
bottom: 30,
left: 25,
right: 25
},
quality: 0.95,
includeBackground: true,
scale: 2
});Share Existing PDF
await PdfShare.shareExistingPdf({
path: '/path/to/existing/file.pdf',
title: 'Shared Document'
});Platform-Specific Notes
iOS
- Uses native
UIPrintPageRendererfor high-quality PDF generation - Supports all page formats and orientations
- Integrates with native iOS share sheet
Android
- Uses
PdfDocumentAPI for reliable PDF creation - Automatic file provider configuration for secure sharing
- Supports all configuration options
Web
- Fallback implementation using
html2pdf.js - Web Share API support where available
- Download link fallback for unsupported browsers
API
generateAndShare(...)
generateAndShare(options?: PdfShareOptions | undefined) => Promise<PdfShareResult>Generate PDF from HTML element and share it
| Param | Type |
| ------------- | ----------------------------------------------------------- |
| options | PdfShareOptions |
Returns: Promise<PdfShareResult>
generatePdfOnly(...)
generatePdfOnly(options?: PdfShareOptions | undefined) => Promise<PdfShareResult>Generate PDF without sharing (returns file path)
| Param | Type |
| ------------- | ----------------------------------------------------------- |
| options | PdfShareOptions |
Returns: Promise<PdfShareResult>
shareExistingPdf(...)
shareExistingPdf(options: { path: string; title?: string; }) => Promise<PdfShareResult>Share an existing PDF file
| Param | Type |
| ------------- | ---------------------------------------------- |
| options | { path: string; title?: string; } |
Returns: Promise<PdfShareResult>
Interfaces
PdfShareResult
| Prop | Type | Description |
| ------------- | -------------------- | ------------------------------------------------ |
| success | boolean | Whether the operation was successful |
| path | string | File path or URL (web only) |
| error | string | Error message if operation failed |
| message | string | Success message with details about the operation |
PdfShareOptions
| Prop | Type | Description |
| ----------------------- | ------------------------------------------------------------------------------ | -------------------------------------------------------------------- |
| elementId | string | HTML element ID to convert to PDF. Defaults to 'printPage' |
| filename | string | Output filename (without extension). Defaults to 'veterinary-dosage' |
| title | string | Document title for sharing. Defaults to 'Veterinary Dosage' |
| orientation | 'portrait' | 'landscape' | Page orientation. Defaults to 'portrait' |
| format | 'a4' | 'letter' | 'legal' | Paper format. Defaults to 'a4' |
| margins | { top?: number; bottom?: number; left?: number; right?: number; } | Page margins in mm. Defaults to 20mm on all sides |
| quality | number | Image quality (0.1 to 1.0). Defaults to 0.98 |
| includeBackground | boolean | Include background colors and images. Defaults to true |
| scale | number | Scale factor for rendering. Defaults to 2 |
