A powerful, feature-rich PDF viewer component for React applications. Built on top of react-pdf
, AdexViewer provides a complete solution for viewing, annotating, and interacting with PDF documents in your web applications.
- 📄 Document Navigation: Page thumbnails, navigation controls, and smooth scrolling
- 🔍 Search: Full-text search with result highlighting and navigation
- 📑 Bookmarks & Outline: Support for document outlines and custom bookmarks
- ✏️ Annotations: Add notes, highlights, and drawings to your documents
- 🔄 Rotation & Zoom: Rotate pages and adjust zoom levels
- 📱 Responsive Design: Optimized for both desktop and mobile devices
- 🖨️ Print Support: Print documents with customizable options
- 🌙 Text Selection: Enable or disable text selection and copying
- 🔗 Download: Direct download option for PDF files
- 🖼️ Fullscreen Mode: Immersive viewing experience
- 📊 Document Info: View and display PDF metadata
- 🌍 Internationalization: Support for multiple languages with easy switching
- 🎨 Themes: Multiple built-in themes to customize the appearance
With NPM:
npm install adex-react-pdf-viewer
For yarn:
yarn add adex-react-pdf-viewer
import React from "react";
import AdexViewer from "adex-react-pdf-viewer";
import "adex-react-pdf-viewer/index.css"; // Import styles
function App() {
return (
<div style={{ height: "100vh" }}>
<AdexViewer
data={{ url: "https://example.com/sample.pdf" }}
/>
</div>
);
}
export default App;
Prop | Type | Description | Default |
---|---|---|---|
data |
object | { url: string } - URL of the PDF file to display |
Required |
credits |
boolean | Show or hide attribution credits | true |
showSidebar |
boolean | Show or hide the sidebar on initial load | false |
showToolbar |
boolean | Show or hide the toolbar | true |
showControls |
object | Configure which controls to display (see below) | See below |
defaultValues |
object | Set default zoom, page, and fullscreen state | See below |
responsive |
object | Configure responsive behavior | See below |
textOptions |
object | Configure text selection and copying | See below |
printOptions |
object | Configure print behavior | See below |
localization |
array | Configure language options (see below) | See below |
theme |
string | Set the theme for the viewer (see themes section) | See below |
showControls: {
navigation: true, // Page navigation controls
zoom: true, // Zoom controls
fullscreen: true, // Fullscreen button
download: true, // Download button
info: true, // Document info button
sidebarButton: true, // Sidebar toggle button
rotation: true, // Page rotation controls
print: true, // Print button
search: true, // Search functionality
bookmarks: true, // Bookmarks functionality
annotations: true, // Annotations functionality
localization: true // Language selection button
}
defaultValues: {
zoom: 1.25, // Initial zoom level (0.5 to 3)
page: 1, // Initial page number
fullscreen: false // Start in fullscreen mode
}
textOptions: {
enableSelection: true, // Allow text selection
enableCopy: true // Allow text copying
}
printOptions: {
printBackground: true, // Print background graphics
pageRangeEnabled: true // Enable page range selection
}
The localization
prop accepts an array of LocalizationOptions
objects that define the available languages for the viewer interface. Each object has the following properties:
localization: [
{ locale: "en", title: "English", active: true },
{ locale: "es", title: "Español", active: false },
{ locale: "fr", title: "Français", active: false },
// ... more languages
]
Each language object contains:
locale
: The language code (used for loading translation files)title
: The display name of the languageactive
: Whether this language is active by default
AdexViewer comes with multiple built-in themes to customize the appearance of the viewer.
To use a theme, you need to:
- Import the theme CSS file:
import "adex-react-pdf-viewer/themes/blue-theme.css";
- Provide the theme name to the component:
<AdexViewer
data={{ url: "https://pdfobject.com/pdf/pdf_open_parameters_acro8.pdf" }}
theme="blue-theme"
/>
The following themes are available:
Theme Name | Description |
---|---|
"default-theme" |
The standard theme with a clean, neutral design suitable for most applications |
"blue-theme" |
A modern theme with blue accents and a professional appearance |
"dark-theme" |
Dark background with light text, ideal for low-light environments and reducing eye strain |
"minimal-theme" |
A simplified interface with reduced visual elements for a distraction-free reading experience |
"corporate-theme" |
Formal design with subtle colors suitable for business and enterprise applications |
"professional-theme" |
Polished interface with refined controls and balanced color scheme |
"high-contrast-theme" |
Enhanced contrast between elements for improved accessibility and readability |
"night-mode-theme" |
Dark background with optimized colors for nighttime reading |
"sepia-theme" |
Warm, yellowish-brown tones that reduce eye strain for extended reading sessions |
"retro-theme" |
Nostalgic design inspired by classic windown 95 style document viewers |
"adobe-theme" |
Inspired by Adobe's PDF viewer interface for users familiar with that environment |
"microsoft-theme" |
Design elements reminiscent of Microsoft's document viewing applications |
"acrobat-theme" |
Styled after Adobe Acrobat's interface for a familiar experience |
AdexViewer supports multiple languages through its localization system. The component will:
- Load language files from the
/locales/{locale}.json
directory - Allow users to switch languages via the language selector
- Remember the user's language preference in localStorage
The viewer comes with support for 35+ languages including:
Language Code | Language Name | Language Code | Language Name | Language Code | Language Name |
---|---|---|---|---|---|
en | English | ar | العربية (Arabic) | bg | Български (Bulgarian) |
bn | বাংলা (Bengali) | ca | Català (Catalan) | cs | Čeština (Czech) |
de | Deutsch (German) | el | Ελληνικά (Greek) | es | Español (Spanish) |
fi | Suomi (Finnish) | fr | Français (French) | he | עברית (Hebrew) |
hi | हिन्दी (Hindi) | id | Bahasa Indonesia | it | Italiano (Italian) |
ja | 日本語 (Japanese) | ko | 한국어 (Korean) | mr | मराठी (Marathi) |
ms | Bahasa Melayu | nl | Nederlands (Dutch) | no | Norsk (Norwegian) |
pa | ਪੰਜਾਬੀ (Punjabi) | pl | Polski (Polish) | pt | Português |
ro | Română (Romanian) | ru | Русский (Russian) | sv | Svenska (Swedish) |
sw | Kiswahili (Swahili) | ta | தமிழ் (Tamil) | te | తెలుగు (Telugu) |
th | ไทย (Thai) | tr | Türkçe (Turkish) | uk | Українська (Ukrainian) |
vi | Tiếng Việt (Vietnamese) | zh-CN | 简体中文 (Simplified Chinese) | zh_TW | 繁體中文 (Traditional Chinese) |
AdexViewer supports three types of annotations:
- Notes: Add floating note markers with custom text
- Highlights: Highlight text selections with custom colors
- Drawings: Create freehand drawings on any page
Annotations are automatically saved to localStorage and persist between sessions.
The search feature allows users to:
- Search for text across the entire document
- Navigate between search results
- See highlighted matches with context
- View a list of all matches with page numbers
AdexViewer supports both:
- Document Outline: Displays the PDF's built-in table of contents
- Custom Bookmarks: Allows users to add their own bookmarks to specific pages
The viewer is fully responsive and includes:
- Simplified interface on smaller screens
- Optimized performance for mobile devices
AdexViewer works in all modern browsers:
- Chrome, Firefox, Safari, Edge (latest versions)
- IE11 is not supported
Contributions are welcome! Please feel free to submit a Pull Request.
Clone the repository:
git clone https://github.com/abhibagul/Adex-React-PDF-Viewer.git
cd Adex-React-PDF-Viewer
npm install
Build the package:
npm run build
to link and use in the project:
npm link
setup the react project and link package using:
npm link adex-react-pdf-viewer
This project is licensed under the MIT License - see the LICENSE file for details.
AdexViewer is created with ❤️ by Abhishek Bagul.