pdflinux 0.1.0 → 0.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +67 -67
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
# PDFLinux
|
|
2
2
|
|
|
3
|
-
> **100%
|
|
3
|
+
> **100% Free. No subscription. No account. Your files never leave your computer.**
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
A fast, privacy-first desktop application for all your everyday PDF tasks. Built with Tauri + Rust on the backend and React + TypeScript on the frontend — runs entirely on your local machine, no internet connection required, no files uploaded anywhere.
|
|
6
6
|
|
|
7
7
|
---
|
|
8
8
|
|
|
9
9
|
## Install
|
|
10
10
|
|
|
11
|
-
###
|
|
11
|
+
### Option 1 — Git Clone (recommended)
|
|
12
12
|
|
|
13
13
|
```bash
|
|
14
14
|
git clone https://github.com/saaandbite/pdflinux.git
|
|
@@ -16,87 +16,87 @@ cd pdflinux
|
|
|
16
16
|
./install.sh
|
|
17
17
|
```
|
|
18
18
|
|
|
19
|
-
|
|
20
|
-
-
|
|
21
|
-
-
|
|
22
|
-
-
|
|
23
|
-
-
|
|
24
|
-
-
|
|
19
|
+
The `install.sh` script will automatically:
|
|
20
|
+
- Detect your distro (Debian/Ubuntu, Fedora/RHEL/CentOS, Arch, etc.)
|
|
21
|
+
- Install all required dependencies
|
|
22
|
+
- Build the application
|
|
23
|
+
- Install the appropriate package (`.deb` / `.rpm` / `AppImage`) for your distro
|
|
24
|
+
- Add a shortcut to your app menu and a `pdflinux` command in the terminal
|
|
25
25
|
|
|
26
|
-
|
|
26
|
+
To uninstall:
|
|
27
27
|
```bash
|
|
28
28
|
./uninstall.sh
|
|
29
29
|
```
|
|
30
30
|
|
|
31
|
-
###
|
|
31
|
+
### Option 2 — npx (via npm)
|
|
32
32
|
|
|
33
|
-
|
|
33
|
+
If you already have Node.js installed:
|
|
34
34
|
|
|
35
35
|
```bash
|
|
36
36
|
npx pdflinux
|
|
37
37
|
```
|
|
38
38
|
|
|
39
|
-
|
|
39
|
+
To uninstall:
|
|
40
40
|
```bash
|
|
41
41
|
npx pdflinux uninstall
|
|
42
42
|
```
|
|
43
43
|
|
|
44
44
|
---
|
|
45
45
|
|
|
46
|
-
##
|
|
46
|
+
## Why PDFLinux?
|
|
47
47
|
|
|
48
|
-
|
|
48
|
+
Most online PDF tools require you to upload your files to their servers. For sensitive documents — contracts, medical records, IDs — that's a real risk. PDFLinux processes everything **on your machine**, with no internet connection and no uploads anywhere.
|
|
49
49
|
|
|
50
|
-
- **
|
|
50
|
+
- **Free forever** — no freemium, no trial, no subscription
|
|
51
51
|
- **Privacy-first** — zero network requests, zero telemetry
|
|
52
|
-
- **
|
|
53
|
-
- **Linux-first** — target
|
|
52
|
+
- **Lightweight** — powered by Tauri (uses the OS native webview, not a bundled Chromium like Electron)
|
|
53
|
+
- **Linux-first** — primary target is Linux; Windows and macOS are also supported via Tauri
|
|
54
54
|
|
|
55
55
|
---
|
|
56
56
|
|
|
57
|
-
##
|
|
57
|
+
## Features
|
|
58
58
|
|
|
59
|
-
|
|
|
59
|
+
| Tool | Description |
|
|
60
60
|
|---|---|
|
|
61
|
-
| **Compress** |
|
|
62
|
-
| **Merge** |
|
|
63
|
-
| **Split** |
|
|
64
|
-
| **PDF to Image** |
|
|
65
|
-
| **Image to PDF** |
|
|
66
|
-
| **Protect** |
|
|
67
|
-
| **Unlock** |
|
|
68
|
-
| **Rotate** |
|
|
69
|
-
| **Watermark** |
|
|
70
|
-
| **Crop** |
|
|
71
|
-
| **Delete Pages** |
|
|
72
|
-
| **Reorder Pages** | Drag and drop
|
|
73
|
-
| **Add Page Numbers** |
|
|
74
|
-
| **PDF to Text** |
|
|
75
|
-
| **Grayscale** |
|
|
76
|
-
| **OCR** |
|
|
77
|
-
| **PDF Info** |
|
|
61
|
+
| **Compress** | Reduce PDF file size using Ghostscript with quality presets |
|
|
62
|
+
| **Merge** | Combine multiple PDFs into one, with drag-to-reorder support |
|
|
63
|
+
| **Split** | Extract a range of pages (e.g. `1-5, 8, 11-15`) into separate files |
|
|
64
|
+
| **PDF to Image** | Export every page to PNG or JPG via Poppler |
|
|
65
|
+
| **Image to PDF** | Bundle one or more images into a single PDF |
|
|
66
|
+
| **Protect** | Encrypt a PDF with a password (QPDF) |
|
|
67
|
+
| **Unlock** | Remove password protection from a PDF |
|
|
68
|
+
| **Rotate** | Rotate pages by 90°, 180°, or 270° |
|
|
69
|
+
| **Watermark** | Stamp text or image watermarks on pages |
|
|
70
|
+
| **Crop** | Trim page margins to a custom crop box |
|
|
71
|
+
| **Delete Pages** | Remove specific pages from a document |
|
|
72
|
+
| **Reorder Pages** | Drag and drop pages into a new order |
|
|
73
|
+
| **Add Page Numbers** | Stamp page numbers onto every page |
|
|
74
|
+
| **PDF to Text** | Extract plain text content from a PDF |
|
|
75
|
+
| **Grayscale** | Convert a color PDF to black and white |
|
|
76
|
+
| **OCR** | Run optical character recognition on scanned pages |
|
|
77
|
+
| **PDF Info** | Inspect metadata: page count, dimensions, title, author |
|
|
78
78
|
|
|
79
79
|
---
|
|
80
80
|
|
|
81
81
|
## Tech Stack
|
|
82
82
|
|
|
83
|
-
| Layer |
|
|
83
|
+
| Layer | Technology |
|
|
84
84
|
|---|---|
|
|
85
85
|
| Desktop shell | [Tauri 2](https://tauri.app/) |
|
|
86
86
|
| Backend / PDF engine | Rust + Ghostscript + Poppler + QPDF |
|
|
87
87
|
| Frontend | React 19, TypeScript, Vite |
|
|
88
88
|
| Routing | React Router 7 |
|
|
89
|
-
| Styling | Vanilla CSS
|
|
89
|
+
| Styling | Vanilla CSS with dark/light mode |
|
|
90
90
|
|
|
91
|
-
###
|
|
91
|
+
### Why Tauri instead of Electron?
|
|
92
92
|
|
|
93
|
-
Tauri
|
|
93
|
+
Tauri uses the operating system's native webview (WebKitGTK on Linux) instead of bundling a full Chromium engine. The result is a binary that is **10–20× smaller** and uses a fraction of the RAM compared to equivalent Electron apps.
|
|
94
94
|
|
|
95
95
|
---
|
|
96
96
|
|
|
97
97
|
## Development
|
|
98
98
|
|
|
99
|
-
|
|
99
|
+
To run from source:
|
|
100
100
|
|
|
101
101
|
```bash
|
|
102
102
|
git clone https://github.com/saaandbite/pdflinux.git
|
|
@@ -105,61 +105,61 @@ npm install
|
|
|
105
105
|
npm run tauri dev
|
|
106
106
|
```
|
|
107
107
|
|
|
108
|
-
|
|
108
|
+
To build a production binary:
|
|
109
109
|
|
|
110
110
|
```bash
|
|
111
111
|
npm run tauri build
|
|
112
112
|
```
|
|
113
113
|
|
|
114
|
-
Output
|
|
114
|
+
Output installers are placed in `src-tauri/target/release/bundle/`:
|
|
115
115
|
|
|
116
116
|
| Format | Distro |
|
|
117
117
|
|---|---|
|
|
118
|
-
| `.deb` | Debian / Ubuntu
|
|
119
|
-
| `.rpm` | Fedora / RHEL / CentOS
|
|
120
|
-
| `.AppImage` |
|
|
118
|
+
| `.deb` | Debian / Ubuntu and derivatives |
|
|
119
|
+
| `.rpm` | Fedora / RHEL / CentOS and derivatives |
|
|
120
|
+
| `.AppImage` | Any Linux distro (portable) |
|
|
121
121
|
|
|
122
122
|
---
|
|
123
123
|
|
|
124
|
-
##
|
|
124
|
+
## Project Structure
|
|
125
125
|
|
|
126
126
|
```
|
|
127
127
|
pdflinux/
|
|
128
128
|
├── src/ # React frontend (TypeScript)
|
|
129
|
-
│ ├── components/ #
|
|
130
|
-
│ ├── pages/ #
|
|
131
|
-
│ ├── App.tsx #
|
|
132
|
-
│ └── main.tsx #
|
|
129
|
+
│ ├── components/ # Shared UI components (Sidebar, Dropzone, etc.)
|
|
130
|
+
│ ├── pages/ # One file per PDF tool
|
|
131
|
+
│ ├── App.tsx # Route definitions
|
|
132
|
+
│ └── main.tsx # React entry point
|
|
133
133
|
│
|
|
134
134
|
└── src-tauri/ # Rust backend (Tauri)
|
|
135
135
|
├── src/
|
|
136
|
-
│ ├── main.rs #
|
|
137
|
-
│ └── pdf_engine.rs #
|
|
138
|
-
├── tauri.conf.json #
|
|
139
|
-
└── Cargo.toml #
|
|
136
|
+
│ ├── main.rs # Tauri entry point
|
|
137
|
+
│ └── pdf_engine.rs # PDF processing logic (calls gs, qpdf, poppler)
|
|
138
|
+
├── tauri.conf.json # App window and build configuration
|
|
139
|
+
└── Cargo.toml # Rust dependencies
|
|
140
140
|
```
|
|
141
141
|
|
|
142
142
|
---
|
|
143
143
|
|
|
144
|
-
##
|
|
144
|
+
## Contributing
|
|
145
145
|
|
|
146
|
-
|
|
146
|
+
Contributions are welcome. If you find a bug or want to add a feature:
|
|
147
147
|
|
|
148
|
-
1. Fork repository
|
|
149
|
-
2.
|
|
150
|
-
3. Commit
|
|
151
|
-
4. Push
|
|
148
|
+
1. Fork the repository
|
|
149
|
+
2. Create a branch: `git checkout -b feature/your-feature-name`
|
|
150
|
+
3. Commit your changes: `git commit -m "feat: describe your change"`
|
|
151
|
+
4. Push and open a Pull Request
|
|
152
152
|
|
|
153
|
-
|
|
153
|
+
Please open an issue first for larger changes so we can discuss the approach.
|
|
154
154
|
|
|
155
155
|
---
|
|
156
156
|
|
|
157
|
-
##
|
|
157
|
+
## License
|
|
158
158
|
|
|
159
|
-
|
|
159
|
+
This project is open source. See [LICENSE](./LICENSE) for details.
|
|
160
160
|
|
|
161
161
|
---
|
|
162
162
|
|
|
163
|
-
##
|
|
163
|
+
## Privacy
|
|
164
164
|
|
|
165
|
-
PDFLinux
|
|
165
|
+
PDFLinux does not collect any data. It makes no network requests. All processing happens locally using the CLI tools installed on your system (Ghostscript, Poppler, QPDF, Tesseract). Your documents are never uploaded, logged, or shared anywhere.
|
package/package.json
CHANGED