|
1 | | -# SharePoint PDF Converter |
| 1 | +# Save and convert as PDF by PnP |
2 | 2 |
|
3 | | - |
| 3 | +## Summary |
| 4 | + |
| 5 | +A global list customizer which adds functionality to all document libraries in SharePoint Online to convert one or more documents in-place to PDF, or download one or more documents as a PDF. When selecting multiple documents for download they will be downloaded as a zip file. The converter uses built in API's of converting to PDF. |
4 | 6 |
|
5 | | -A SharePoint Framework extension that brings powerful PDF conversion capabilities to your SharePoint Online document libraries. Convert documents to PDF, download files as PDF, preserve metadata, and more - all with a modern, responsive UI. |
| 7 | + |
6 | 8 |
|
7 | 9 | ## Compatibility |
8 | 10 |
|
9 | | - |
10 | | - |
| 11 | + |
| 12 | + |
11 | 13 |  |
12 | 14 |  |
13 | 15 |
|
14 | | -## Key Features |
15 | | - |
16 | | -### PDF Conversion |
17 | | -- Convert documents to PDF with customizable quality settings (low, medium, high) |
18 | | -- Support for multiple file formats: Word, Excel, PowerPoint, CSV, RTF, and more |
19 | | -- Powered by Microsoft Graph API V3 for efficient processing |
| 16 | +## Applies to |
20 | 17 |
|
21 | | -### Advanced Options |
22 | | -- **Batch Processing**: Convert multiple documents simultaneously |
23 | | -- **Metadata Preservation**: Keep important document properties during conversion |
24 | | -- **Custom Destinations**: Choose where to save your converted files |
25 | | -- **Email Integration**: Send PDFs via email with custom subject lines |
| 18 | +* [SharePoint Framework Extensions](https://docs.microsoft.com/en-us/sharepoint/dev/spfx/extensions/overview-extensions) |
26 | 19 |
|
27 | | -### Modern Experience |
28 | | -- **Fluent UI Design**: Clean, modern interface following Microsoft design language |
29 | | -- **Responsive Layout**: Works on desktop and mobile devices |
30 | | -- **Dark/Light Mode**: Support for different visual preferences |
31 | | -- **Accessibility**: Designed with accessibility in mind |
32 | | -- **Multi-language Support**: English, French, Spanish, German included |
| 20 | +## Solution |
33 | 21 |
|
34 | | -## How It Works |
| 22 | +Solution|Author(s) |
| 23 | +--------|--------- |
| 24 | +pnp-ext-pdf-convert| Mikael Svenson ([@mikaelsvenson](https://twitter.com/mikaelsvenson)) |
35 | 25 |
|
36 | | -The extension adds two commands to your document library ribbon: |
| 26 | +## Version history |
37 | 27 |
|
38 | | -1. **Download as PDF**: Converts selected document(s) and downloads to your device |
39 | | -2. **Convert to PDF**: Transforms document(s) to PDF and saves in SharePoint |
| 28 | +Version|Date|Comments |
| 29 | +-------|----|-------- |
| 30 | +1.0| 2019| Initial release by Puzzlepart |
| 31 | +1.1| February 23, 2021| Moved and re-branded to PnP |
| 32 | +1.2| October 30, 2022| Upgrade SPFx to version 1.12.1 |
| 33 | +1.3| October 21, 2024| Upgrade SPFx to version 1.20.1, rewrite it from scratch using Graph API and using the built in converter in Graph, moved to Fluent UI and alot more |
| 34 | +1.4| September 03 2025| Added batch operations, progress indicators, multi-language support (EN/FR/ES/DE), ZIP downloads, enhanced error handling |
40 | 35 |
|
41 | | -When triggered, a customizable options panel allows you to: |
42 | | -- Set conversion quality |
43 | | -- Enable/disable metadata preservation |
44 | | -- Send email notifications |
45 | | -- Select custom save locations |
46 | | - |
47 | | - |
| 36 | +## Disclaimer |
48 | 37 |
|
49 | | -## Quick Start Guide |
| 38 | +**THIS CODE IS PROVIDED *AS IS* WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING ANY IMPLIED WARRANTIES OF FITNESS FOR A PARTICULAR PURPOSE, MERCHANTABILITY, OR NON-INFRINGEMENT.** |
50 | 39 |
|
51 | | -### Installation |
| 40 | +## Installing the solution |
52 | 41 |
|
53 | | -1. Download the [pnp-ext-pdf-convert.sppkg](./pnp-ext-pdf-convert.sppkg) file |
54 | | -2. Upload to your tenant app catalog |
55 | | - - URL: `https://<tenant>-admin.sharepoint.com/_layouts/15/online/ManageAppCatalog.aspx` |
56 | | - - Requires SharePoint Administrator rights |
57 | | -3. Trust the solution when prompted |
58 | | -  |
59 | | -4. Navigate to any document library to begin using the commands |
| 42 | +- Upload and Deploy the file [pnp-ext-pdf-convert.sppkg](./pnp-ext-pdf-convert.sppkg) to your tenant app catalog.  |
| 43 | + * If created the tenant app catalog can be reached via `https://<tenant>-admin.sharepoint.com/_layouts/15/online/ManageAppCatalog.aspx`. |
| 44 | + * You need to be a SharePoint Administrator to upload this solution. |
| 45 | +- Navigate to a document library and select one or more files and you should see the PDF options in the document ribbon. |
60 | 46 |
|
61 | | -### Usage |
| 47 | +_Note: It may take a little while before it shows the first time after install._ |
62 | 48 |
|
63 | | -1. Select one or more supported documents in a library |
64 | | -2. Click either "Download as PDF" or "Convert to PDF" from the ribbon |
65 | | -3. Configure your preferences in the options dialog |
66 | | -4. Start the conversion |
67 | | -5. View progress and results in the status dialog |
| 49 | +## Features |
68 | 50 |
|
69 | | -## Supported File Formats |
| 51 | +### 🔄 Batch Operations |
| 52 | +- **Multi-file Selection**: Select multiple documents using Ctrl+Click or Shift+Click |
| 53 | +- **Batch Download**: Download multiple files as PDFs in a single ZIP archive |
| 54 | +- **Batch Convert**: Convert multiple files to PDF and save them in the same library |
| 55 | +- **Smart Validation**: Automatically filters out unsupported file types |
70 | 56 |
|
71 | | -- **Word Documents**: doc, docx, rtf |
72 | | -- **Excel Spreadsheets**: xls, xlsx, csv |
73 | | -- **PowerPoint Presentations**: ppt, pptm, pptx, pps, ppsx, ppsxm, pot, potm, potx |
74 | | -- **OpenDocument Formats**: odp, ods, odt |
75 | | -- **Other**: html |
| 57 | +### 📊 Progress Tracking |
| 58 | +- **Real-time Progress Bar**: Visual progress indicator for batch operations |
| 59 | +- **File Status Updates**: See which file is currently being processed |
| 60 | +- **Success/Error Indicators**: Clear visual feedback for each file's conversion status |
| 61 | +- **Summary Reports**: Detailed completion reports with success and error counts |
76 | 62 |
|
77 | | -## Version History |
| 63 | +### 🌐 Multi-language Support |
| 64 | +- **English (en-us)**: Default language |
| 65 | +- **French (fr-fr)**: Français |
| 66 | +- **Spanish (es-es)**: Español |
| 67 | +- **German (de-de)**: Deutsch |
| 68 | +- **Dynamic UI**: Command titles update based on selection count |
78 | 69 |
|
79 | | -| Version | Date | Description | |
80 | | -|---------|------|-------------| |
81 | | -| 1.0 | 2019 | Initial release by Puzzlepart | |
82 | | -| 1.1 | Feb 2021 | Re-branded to PnP | |
83 | | -| 1.2 | Oct 2022 | Updated to SPFx 1.12.1 | |
84 | | -| 1.3 | Oct 2024 | Complete rewrite with Graph API, SPFx 1.20.1, Fluent UI | |
85 | | -| 1.4 | Mar 2025 | Feature-complete version with metadata preservation, multi-language support, email integration, and more | |
| 70 | +### 💾 Enhanced Downloads |
| 71 | +- **ZIP Archives**: Multiple files automatically packaged with timestamp |
| 72 | +- **Smart Naming**: Original filenames preserved with .pdf extension |
| 73 | +- **Error Recovery**: Failed conversions don't interrupt the batch process |
86 | 74 |
|
87 | | -## For Developers |
| 75 | +## Supported file formats |
88 | 76 |
|
89 | | -### Required Permissions |
| 77 | +csv, doc, docx, odp, ods, odt, pot, potm, potx, pps, ppsx, ppsxm, ppt, pptm, pptx, rtf, xls, xlsx, html |
90 | 78 |
|
91 | | -The extension requires these Microsoft Graph API permissions: |
92 | | -- Files.ReadWrite |
93 | | -- Sites.ReadWrite.All |
94 | | -- Mail.Send (for email features) |
| 79 | +## Debug URL for testing |
95 | 80 |
|
96 | | -### Debug URL |
| 81 | +Here's a debug URL for testing around this sample. |
97 | 82 |
|
98 | 83 | ``` |
99 | 84 | ?loadSPFX=true&debugManifestsFile=https://localhost:4321/temp/manifests.js&loadSPFX=true&customActions={"ea401ac9-3abc-4e27-b93b-09c9a0587ee9":{"location":"ClientSideExtension.ListViewCommandSet.CommandBar","properties":{}}} |
100 | 85 | ``` |
101 | 86 |
|
102 | | -### Technical Implementation |
103 | | - |
104 | | -- Utilizes SPFx Command Set Extensions |
105 | | -- Leverages Microsoft Graph API for file operations |
106 | | -- React components with Fluent UI |
107 | | -- TypeScript for type safety |
108 | | -- Responsive design principles |
109 | | - |
110 | | -## Solution |
111 | | - |
112 | | -| Solution | Author(s) | |
113 | | -|----------|-----------| |
114 | | -| pnp-ext-pdf-convert | Mikael Svenson ([@mikaelsvenson](https://twitter.com/mikaelsvenson)) | |
115 | | -| pnp-ext-pdf-convert | Nicolas Kheirallah ([@NicolasKheirallah](https://twitter.com/NicolasKheirallah)) | |
116 | | - |
117 | | -## Disclaimer |
118 | | - |
119 | | -**THIS CODE IS PROVIDED *AS IS* WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING ANY IMPLIED WARRANTIES OF FITNESS FOR A PARTICULAR PURPOSE, MERCHANTABILITY, OR NON-INFRINGEMENT.** |
120 | | - |
121 | | - |
| 87 | + |
0 commit comments