Tab PDF Downloader is a browser extension that allows you to download all open PDF tabs with a single click. It's designed to be lightweight, fast, and easy to use across multiple browsers.
- Download all open PDF tabs simultaneously
- Simple and intuitive user interface
- Lightweight and fast
- Compatible with multiple browsers (Chrome, Firefox, Edge, and more)
- Automatic file naming based on tab titles
- Improved error handling and user feedback
- Google Chrome
- Mozilla Firefox
- Microsoft Edge
- Vivaldi
- Opera
- Brave
- Kiwi (Android)
- Yandex Browser
- UC Browser
- Samsung Internet
- Tor Browser (based on Firefox)
- Visit the extension store for your browser:
- [Chrome Web Store Link]
- [Firefox Add-ons Link]
- [Microsoft Edge Add-ons Link]
- Search for "Tab PDF Downloader"
- Click "Add to [Browser Name]" to install
For other Chromium-based browsers, you can use the Chrome Web Store link.
- Download the latest release for your browser from the Releases page.
- Unzip the downloaded file.
- In your browser, go to the extensions page:
- Chrome/Edge/Brave:
chrome://extensions - Firefox:
about:addons - Opera:
opera://extensions
- Chrome/Edge/Brave:
- Enable "Developer mode" (usually a toggle in the top right).
- Click "Load unpacked" (Chrome/Edge/Brave/Opera) or "Load Temporary Add-on" (Firefox).
- Navigate to the unzipped folder and select it.
- Click on the Tab PDF Downloader icon in your browser toolbar.
- In the popup, click the "Download All PDF Tabs" button.
- Your browser will start downloading all open PDF tabs.
- A status message will keep you informed about the progress and results of the download process.
- Node.js (v14 or later recommended)
- npm (usually comes with Node.js)
This project relies on the following npm packages:
fsandfs.promises: For file system operationspath: For working with file and directory pathsarchiver: For creating ZIP archives of the buildscrypto: For generating SHA256 hashes of the buildsyargs: For parsing command-line arguments in the build script
To install these dependencies, run:
npm install
Note: fs, path, and crypto are built-in Node.js modules and don't need to be installed separately.
-
Clone the repository:
git clone https://github.com/anonymort/tab-pdf-downloader.git cd tab-pdf-downloader -
Install dependencies:
npm install
To build the extension for all supported browsers:
npm run build
or
node build-script.js [options]
--cleanor-c: Clean old builds (default: true)--keepor-k: Number of old builds to keep (default: 5)--helpor-h: Show help
The script will:
- Generate builds for different browser groups (as defined in
build-config.json) - Create a ZIP file for each build
- Generate SHA256 hashes for each ZIP file
- Create a build log
- Optionally clean up old builds
This will create a dist folder with browser-specific builds.
- Build the extension as described above.
- Load the appropriate version into your browser of choice using the manual installation method described in the Installation section.
src/: Source files for the extensiondist/: Build output directorybuild-script.js: Main build scriptbuild-config.json: Configuration for browser groupsbase-manifest.json: Base manifest file for the extensionfirefox-config.json: Firefox-specific configuration
- Improved error handling for cases where no PDF tabs are found
- Added user feedback on the number of PDFs being downloaded
- Implemented tracking of successful and failed downloads
- Added a final status message indicating download results
- Improved console error logging for failed downloads
- Initial release
- Basic functionality to download all open PDF tabs
- Support for multiple browsers
Contributions are welcome! Please feel free to submit a Pull Request.
- Fork the repository
- Create your feature branch (
git checkout -b feature/AmazingFeature) - Commit your changes (
git commit -m 'Add some AmazingFeature') - Push to the branch (
git push origin feature/AmazingFeature) - Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.
If you encounter any problems or have any suggestions, please open an issue on GitHub.
Created by Matt Kneale