Compare commits

..
Author SHA1 Message Date
dependabot[bot] 55b29c3097 build(deps): bump docker/login-action from 3 to 4
Bumps [docker/login-action](https://github.com/docker/login-action) from 3 to 4.
- [Release notes](https://github.com/docker/login-action/releases)
- [Commits](https://github.com/docker/login-action/compare/v3...v4)

---
updated-dependencies:
- dependency-name: docker/login-action
  dependency-version: '4'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <[email protected]>
2026-03-04 21:45:16 +00:00
114 changed files with 449 additions and 588 deletions
+5 -5
View File
@@ -75,7 +75,7 @@ jobs:
uses: docker/setup-buildx-action@v3 uses: docker/setup-buildx-action@v3
- name: Login to GitHub Container Registry - name: Login to GitHub Container Registry
uses: docker/login-action@v3 uses: docker/login-action@v4
with: with:
registry: ghcr.io registry: ghcr.io
username: ${{ github.repository_owner }} username: ${{ github.repository_owner }}
@@ -144,7 +144,7 @@ jobs:
uses: docker/setup-buildx-action@v3 uses: docker/setup-buildx-action@v3
- name: Login to GitHub Container Registry - name: Login to GitHub Container Registry
uses: docker/login-action@v3 uses: docker/login-action@v4
with: with:
registry: ghcr.io registry: ghcr.io
username: ${{ github.repository_owner }} username: ${{ github.repository_owner }}
@@ -206,7 +206,7 @@ jobs:
suffix: "-simple" suffix: "-simple"
steps: steps:
- name: Login to GitHub Container Registry - name: Login to GitHub Container Registry
uses: docker/login-action@v3 uses: docker/login-action@v4
with: with:
registry: ghcr.io registry: ghcr.io
username: ${{ github.repository_owner }} username: ${{ github.repository_owner }}
@@ -270,14 +270,14 @@ jobs:
suffix: "-simple" suffix: "-simple"
steps: steps:
- name: Login to GitHub Container Registry - name: Login to GitHub Container Registry
uses: docker/login-action@v3 uses: docker/login-action@v4
with: with:
registry: ghcr.io registry: ghcr.io
username: ${{ github.repository_owner }} username: ${{ github.repository_owner }}
password: ${{ secrets.GITHUB_TOKEN }} password: ${{ secrets.GITHUB_TOKEN }}
- name: Login to DockerHub - name: Login to DockerHub
uses: docker/login-action@v3 uses: docker/login-action@v4
with: with:
username: ${{ secrets.DOCKER_USERNAME }} username: ${{ secrets.DOCKER_USERNAME }}
password: ${{ secrets.DOCKER_TOKEN }} password: ${{ secrets.DOCKER_TOKEN }}
+1 -1
View File
@@ -1,7 +1,7 @@
{ {
"name": "bento-pdf", "name": "bento-pdf",
"private": true, "private": true,
"version": "2.4.1", "version": "2.4.0",
"license": "AGPL-3.0-only", "license": "AGPL-3.0-only",
"type": "module", "type": "module",
"scripts": { "scripts": {
+184 -172
View File
@@ -1,218 +1,230 @@
import { showAlert } from '../ui.js'; import { showAlert } from '../ui.js';
import { downloadFile, formatBytes, hexToRgb } from '../utils/helpers.js'; import { downloadFile, formatBytes, hexToRgb } from '../utils/helpers.js';
import { fixPageSize as fixPageSizeCore } from '../utils/pdf-operations'; import { PDFDocument as PDFLibDocument, rgb, PageSizes } from 'pdf-lib';
import { icons, createIcons } from 'lucide'; import { icons, createIcons } from 'lucide';
import { FixPageSizeState } from '@/types'; import { FixPageSizeState } from '@/types';
const pageState: FixPageSizeState = { const pageState: FixPageSizeState = {
file: null, file: null,
}; };
function resetState() { function resetState() {
pageState.file = null; pageState.file = null;
const fileDisplayArea = document.getElementById('file-display-area'); const fileDisplayArea = document.getElementById('file-display-area');
if (fileDisplayArea) fileDisplayArea.innerHTML = ''; if (fileDisplayArea) fileDisplayArea.innerHTML = '';
const toolOptions = document.getElementById('tool-options'); const toolOptions = document.getElementById('tool-options');
if (toolOptions) toolOptions.classList.add('hidden'); if (toolOptions) toolOptions.classList.add('hidden');
const fileInput = document.getElementById('file-input') as HTMLInputElement; const fileInput = document.getElementById('file-input') as HTMLInputElement;
if (fileInput) fileInput.value = ''; if (fileInput) fileInput.value = '';
} }
async function updateUI() { async function updateUI() {
const fileDisplayArea = document.getElementById('file-display-area'); const fileDisplayArea = document.getElementById('file-display-area');
const toolOptions = document.getElementById('tool-options'); const toolOptions = document.getElementById('tool-options');
if (!fileDisplayArea) return; if (!fileDisplayArea) return;
fileDisplayArea.innerHTML = ''; fileDisplayArea.innerHTML = '';
if (pageState.file) { if (pageState.file) {
const fileDiv = document.createElement('div'); const fileDiv = document.createElement('div');
fileDiv.className = fileDiv.className = 'flex items-center justify-between bg-gray-700 p-3 rounded-lg text-sm';
'flex items-center justify-between bg-gray-700 p-3 rounded-lg text-sm';
const infoContainer = document.createElement('div'); const infoContainer = document.createElement('div');
infoContainer.className = 'flex flex-col overflow-hidden'; infoContainer.className = 'flex flex-col overflow-hidden';
const nameSpan = document.createElement('div'); const nameSpan = document.createElement('div');
nameSpan.className = 'truncate font-medium text-gray-200 text-sm mb-1'; nameSpan.className = 'truncate font-medium text-gray-200 text-sm mb-1';
nameSpan.textContent = pageState.file.name; nameSpan.textContent = pageState.file.name;
const metaSpan = document.createElement('div'); const metaSpan = document.createElement('div');
metaSpan.className = 'text-xs text-gray-400'; metaSpan.className = 'text-xs text-gray-400';
metaSpan.textContent = formatBytes(pageState.file.size); metaSpan.textContent = formatBytes(pageState.file.size);
infoContainer.append(nameSpan, metaSpan); infoContainer.append(nameSpan, metaSpan);
const removeBtn = document.createElement('button'); const removeBtn = document.createElement('button');
removeBtn.className = 'ml-4 text-red-400 hover:text-red-300 flex-shrink-0'; removeBtn.className = 'ml-4 text-red-400 hover:text-red-300 flex-shrink-0';
removeBtn.innerHTML = '<i data-lucide="trash-2" class="w-4 h-4"></i>'; removeBtn.innerHTML = '<i data-lucide="trash-2" class="w-4 h-4"></i>';
removeBtn.onclick = function () { removeBtn.onclick = function () {
resetState(); resetState();
}; };
fileDiv.append(infoContainer, removeBtn); fileDiv.append(infoContainer, removeBtn);
fileDisplayArea.appendChild(fileDiv); fileDisplayArea.appendChild(fileDiv);
createIcons({ icons }); createIcons({ icons });
if (toolOptions) toolOptions.classList.remove('hidden'); if (toolOptions) toolOptions.classList.remove('hidden');
} else { } else {
if (toolOptions) toolOptions.classList.add('hidden'); if (toolOptions) toolOptions.classList.add('hidden');
} }
} }
function handleFileSelect(files: FileList | null) { function handleFileSelect(files: FileList | null) {
if (files && files.length > 0) { if (files && files.length > 0) {
const file = files[0]; const file = files[0];
if ( if (file.type === 'application/pdf' || file.name.toLowerCase().endsWith('.pdf')) {
file.type === 'application/pdf' || pageState.file = file;
file.name.toLowerCase().endsWith('.pdf') updateUI();
) { }
pageState.file = file;
updateUI();
} }
}
} }
async function fixPageSize() { async function fixPageSize() {
if (!pageState.file) { if (!pageState.file) {
showAlert('No File', 'Please upload a PDF file first.'); showAlert('No File', 'Please upload a PDF file first.');
return; return;
} }
const targetSize = ( const targetSizeKey = (document.getElementById('target-size') as HTMLSelectElement).value;
document.getElementById('target-size') as HTMLSelectElement const orientation = (document.getElementById('orientation') as HTMLSelectElement).value;
).value; const scalingMode = (document.querySelector('input[name="scaling-mode"]:checked') as HTMLInputElement).value;
const orientation = ( const backgroundColor = hexToRgb((document.getElementById('background-color') as HTMLInputElement).value);
document.getElementById('orientation') as HTMLSelectElement
).value;
const scalingMode = (
document.querySelector(
'input[name="scaling-mode"]:checked'
) as HTMLInputElement
).value;
const backgroundColor = hexToRgb(
(document.getElementById('background-color') as HTMLInputElement).value
);
const loaderModal = document.getElementById('loader-modal'); const loaderModal = document.getElementById('loader-modal');
const loaderText = document.getElementById('loader-text'); const loaderText = document.getElementById('loader-text');
if (loaderModal) loaderModal.classList.remove('hidden'); if (loaderModal) loaderModal.classList.remove('hidden');
if (loaderText) loaderText.textContent = 'Standardizing pages...'; if (loaderText) loaderText.textContent = 'Standardizing pages...';
try { try {
const customWidth = let targetWidth, targetHeight;
parseFloat(
(document.getElementById('custom-width') as HTMLInputElement)?.value
) || 210;
const customHeight =
parseFloat(
(document.getElementById('custom-height') as HTMLInputElement)?.value
) || 297;
const customUnits =
(document.getElementById('custom-units') as HTMLSelectElement)?.value ||
'mm';
const arrayBuffer = await pageState.file.arrayBuffer(); if (targetSizeKey === 'Custom') {
const pdfBytes = new Uint8Array(arrayBuffer); const width = parseFloat((document.getElementById('custom-width') as HTMLInputElement).value);
const height = parseFloat((document.getElementById('custom-height') as HTMLInputElement).value);
const units = (document.getElementById('custom-units') as HTMLSelectElement).value;
const newPdfBytes = await fixPageSizeCore(pdfBytes, { if (units === 'in') {
targetSize, targetWidth = width * 72;
orientation, targetHeight = height * 72;
scalingMode, } else {
backgroundColor, // mm
customWidth, targetWidth = width * (72 / 25.4);
customHeight, targetHeight = height * (72 / 25.4);
customUnits, }
}); } else {
[targetWidth, targetHeight] = PageSizes[targetSizeKey as keyof typeof PageSizes];
}
downloadFile( if (orientation === 'landscape' && targetWidth < targetHeight) {
new Blob([new Uint8Array(newPdfBytes)], { type: 'application/pdf' }), [targetWidth, targetHeight] = [targetHeight, targetWidth];
'standardized.pdf' } else if (orientation === 'portrait' && targetWidth > targetHeight) {
); [targetWidth, targetHeight] = [targetHeight, targetWidth];
showAlert( }
'Success',
'Page sizes standardized successfully!', const arrayBuffer = await pageState.file.arrayBuffer();
'success', const sourceDoc = await PDFLibDocument.load(arrayBuffer);
() => { const newDoc = await PDFLibDocument.create();
resetState();
} for (const sourcePage of sourceDoc.getPages()) {
); const { width: sourceWidth, height: sourceHeight } = sourcePage.getSize();
} catch (e) { const embeddedPage = await newDoc.embedPage(sourcePage);
console.error(e);
showAlert('Error', 'An error occurred while standardizing pages.'); const newPage = newDoc.addPage([targetWidth, targetHeight]);
} finally { newPage.drawRectangle({
if (loaderModal) loaderModal.classList.add('hidden'); x: 0,
} y: 0,
width: targetWidth,
height: targetHeight,
color: rgb(backgroundColor.r, backgroundColor.g, backgroundColor.b),
});
const scaleX = targetWidth / sourceWidth;
const scaleY = targetHeight / sourceHeight;
const scale = scalingMode === 'fit' ? Math.min(scaleX, scaleY) : Math.max(scaleX, scaleY);
const scaledWidth = sourceWidth * scale;
const scaledHeight = sourceHeight * scale;
const x = (targetWidth - scaledWidth) / 2;
const y = (targetHeight - scaledHeight) / 2;
newPage.drawPage(embeddedPage, {
x,
y,
width: scaledWidth,
height: scaledHeight,
});
}
const newPdfBytes = await newDoc.save();
downloadFile(
new Blob([new Uint8Array(newPdfBytes)], { type: 'application/pdf' }),
'standardized.pdf'
);
showAlert('Success', 'Page sizes standardized successfully!', 'success', () => { resetState(); });
} catch (e) {
console.error(e);
showAlert('Error', 'An error occurred while standardizing pages.');
} finally {
if (loaderModal) loaderModal.classList.add('hidden');
}
} }
document.addEventListener('DOMContentLoaded', function () { document.addEventListener('DOMContentLoaded', function () {
const fileInput = document.getElementById('file-input') as HTMLInputElement; const fileInput = document.getElementById('file-input') as HTMLInputElement;
const dropZone = document.getElementById('drop-zone'); const dropZone = document.getElementById('drop-zone');
const processBtn = document.getElementById('process-btn'); const processBtn = document.getElementById('process-btn');
const backBtn = document.getElementById('back-to-tools'); const backBtn = document.getElementById('back-to-tools');
const targetSizeSelect = document.getElementById('target-size'); const targetSizeSelect = document.getElementById('target-size');
const customSizeWrapper = document.getElementById('custom-size-wrapper'); const customSizeWrapper = document.getElementById('custom-size-wrapper');
if (backBtn) { if (backBtn) {
backBtn.addEventListener('click', function () { backBtn.addEventListener('click', function () {
window.location.href = import.meta.env.BASE_URL; window.location.href = import.meta.env.BASE_URL;
});
}
// Setup custom size toggle
if (targetSizeSelect && customSizeWrapper) {
targetSizeSelect.addEventListener('change', function () {
customSizeWrapper.classList.toggle(
'hidden',
(targetSizeSelect as HTMLSelectElement).value !== 'Custom'
);
});
}
if (fileInput && dropZone) {
fileInput.addEventListener('change', function (e) {
handleFileSelect((e.target as HTMLInputElement).files);
});
dropZone.addEventListener('dragover', function (e) {
e.preventDefault();
dropZone.classList.add('bg-gray-700');
});
dropZone.addEventListener('dragleave', function (e) {
e.preventDefault();
dropZone.classList.remove('bg-gray-700');
});
dropZone.addEventListener('drop', function (e) {
e.preventDefault();
dropZone.classList.remove('bg-gray-700');
const files = e.dataTransfer?.files;
if (files && files.length > 0) {
const pdfFiles = Array.from(files).filter(function (f) {
return (
f.type === 'application/pdf' ||
f.name.toLowerCase().endsWith('.pdf')
);
}); });
if (pdfFiles.length > 0) { }
const dataTransfer = new DataTransfer();
dataTransfer.items.add(pdfFiles[0]);
handleFileSelect(dataTransfer.files);
}
}
});
fileInput.addEventListener('click', function () { // Setup custom size toggle
fileInput.value = ''; if (targetSizeSelect && customSizeWrapper) {
}); targetSizeSelect.addEventListener('change', function () {
} customSizeWrapper.classList.toggle(
'hidden',
(targetSizeSelect as HTMLSelectElement).value !== 'Custom'
);
});
}
if (processBtn) { if (fileInput && dropZone) {
processBtn.addEventListener('click', fixPageSize); fileInput.addEventListener('change', function (e) {
} handleFileSelect((e.target as HTMLInputElement).files);
});
dropZone.addEventListener('dragover', function (e) {
e.preventDefault();
dropZone.classList.add('bg-gray-700');
});
dropZone.addEventListener('dragleave', function (e) {
e.preventDefault();
dropZone.classList.remove('bg-gray-700');
});
dropZone.addEventListener('drop', function (e) {
e.preventDefault();
dropZone.classList.remove('bg-gray-700');
const files = e.dataTransfer?.files;
if (files && files.length > 0) {
const pdfFiles = Array.from(files).filter(function (f) {
return f.type === 'application/pdf' || f.name.toLowerCase().endsWith('.pdf');
});
if (pdfFiles.length > 0) {
const dataTransfer = new DataTransfer();
dataTransfer.items.add(pdfFiles[0]);
handleFileSelect(dataTransfer.files);
}
}
});
fileInput.addEventListener('click', function () {
fileInput.value = '';
});
}
if (processBtn) {
processBtn.addEventListener('click', fixPageSize);
}
}); });
+3 -21
View File
@@ -1133,7 +1133,9 @@ function showNodeSettings(node: BaseWorkflowNode) {
{ label: 'Top Right', value: 'top-right' }, { label: 'Top Right', value: 'top-right' },
], ],
orientation: [ orientation: [
{ label: 'Auto (Keep Original)', value: 'auto' }, { label: 'Vertical', value: 'vertical' },
{ label: 'Horizontal', value: 'horizontal' },
{ label: 'Auto', value: 'auto' },
{ label: 'Portrait', value: 'portrait' }, { label: 'Portrait', value: 'portrait' },
{ label: 'Landscape', value: 'landscape' }, { label: 'Landscape', value: 'landscape' },
], ],
@@ -1158,23 +1160,6 @@ function showNodeSettings(node: BaseWorkflowNode) {
{ label: 'Letter', value: 'letter' }, { label: 'Letter', value: 'letter' },
{ label: 'Legal', value: 'legal' }, { label: 'Legal', value: 'legal' },
], ],
targetSize: [
{ label: 'A4', value: 'A4' },
{ label: 'Letter', value: 'Letter' },
{ label: 'Legal', value: 'Legal' },
{ label: 'A3', value: 'A3' },
{ label: 'A5', value: 'A5' },
{ label: 'Tabloid', value: 'Tabloid' },
{ label: 'Custom', value: 'Custom' },
],
scalingMode: [
{ label: 'Fit (keep full page visible)', value: 'fit' },
{ label: 'Fill (cover full target page)', value: 'fill' },
],
customUnits: [
{ label: 'Millimeters (mm)', value: 'mm' },
{ label: 'Inches (in)', value: 'in' },
],
numberFormat: [ numberFormat: [
{ label: 'Simple (1, 2, 3)', value: 'simple' }, { label: 'Simple (1, 2, 3)', value: 'simple' },
{ label: 'Page X of Y', value: 'page_x_of_y' }, { label: 'Page X of Y', value: 'page_x_of_y' },
@@ -1309,9 +1294,6 @@ function showNodeSettings(node: BaseWorkflowNode) {
text: ['text'], text: ['text'],
area: ['x0', 'y0', 'x1', 'y1'], area: ['x0', 'y0', 'x1', 'y1'],
}, },
targetSize: {
Custom: ['customWidth', 'customHeight', 'customUnits'],
},
}; };
const controlWrappers: Record<string, HTMLElement> = {}; const controlWrappers: Record<string, HTMLElement> = {};
+1 -85
View File
@@ -1,4 +1,4 @@
import { PDFDocument, degrees, rgb, StandardFonts, PageSizes } from 'pdf-lib'; import { PDFDocument, degrees, rgb, StandardFonts } from 'pdf-lib';
export async function mergePdfs( export async function mergePdfs(
pdfBytesList: Uint8Array[] pdfBytesList: Uint8Array[]
@@ -438,87 +438,3 @@ export async function addPageNumbers(
return new Uint8Array(await pdfDoc.save()); return new Uint8Array(await pdfDoc.save());
} }
export interface FixPageSizeOptions {
targetSize: string;
orientation: string;
scalingMode: string;
backgroundColor: { r: number; g: number; b: number };
customWidth?: number;
customHeight?: number;
customUnits?: string;
}
export async function fixPageSize(
pdfBytes: Uint8Array,
options: FixPageSizeOptions
): Promise<Uint8Array> {
let targetWidth: number;
let targetHeight: number;
if (options.targetSize.toLowerCase() === 'custom') {
const w = options.customWidth ?? 210;
const h = options.customHeight ?? 297;
const units = (options.customUnits ?? 'mm').toLowerCase();
if (units === 'in') {
targetWidth = w * 72;
targetHeight = h * 72;
} else {
targetWidth = w * (72 / 25.4);
targetHeight = h * (72 / 25.4);
}
} else {
const selected =
PageSizes[options.targetSize as keyof typeof PageSizes] || PageSizes.A4;
targetWidth = selected[0];
targetHeight = selected[1];
}
const orientation = options.orientation.toLowerCase();
if (orientation === 'landscape' && targetWidth < targetHeight) {
[targetWidth, targetHeight] = [targetHeight, targetWidth];
} else if (orientation === 'portrait' && targetWidth > targetHeight) {
[targetWidth, targetHeight] = [targetHeight, targetWidth];
}
const sourceDoc = await PDFDocument.load(pdfBytes);
const outputDoc = await PDFDocument.create();
for (const sourcePage of sourceDoc.getPages()) {
const { width: sourceWidth, height: sourceHeight } = sourcePage.getSize();
const embeddedPage = await outputDoc.embedPage(sourcePage);
const outputPage = outputDoc.addPage([targetWidth, targetHeight]);
outputPage.drawRectangle({
x: 0,
y: 0,
width: targetWidth,
height: targetHeight,
color: rgb(
options.backgroundColor.r,
options.backgroundColor.g,
options.backgroundColor.b
),
});
const scaleX = targetWidth / sourceWidth;
const scaleY = targetHeight / sourceHeight;
const useFill = options.scalingMode.toLowerCase() === 'fill';
const scale = useFill ? Math.max(scaleX, scaleY) : Math.min(scaleX, scaleY);
const scaledWidth = sourceWidth * scale;
const scaledHeight = sourceHeight * scale;
const x = (targetWidth - scaledWidth) / 2;
const y = (targetHeight - scaledHeight) / 2;
outputPage.drawPage(embeddedPage, {
x,
y,
width: scaledWidth,
height: scaledHeight,
});
}
return new Uint8Array(await outputDoc.save());
}
-104
View File
@@ -1,104 +0,0 @@
import { ClassicPreset } from 'rete';
import { BaseWorkflowNode } from './base-node';
import { pdfSocket } from '../sockets';
import type { SocketData } from '../types';
import { requirePdfInput, processBatch } from '../types';
import { fixPageSize } from '../../utils/pdf-operations';
import { PDFDocument } from 'pdf-lib';
import { hexToRgb } from '../../utils/helpers.js';
export class FixPageSizeNode extends BaseWorkflowNode {
readonly category = 'Organize & Manage' as const;
readonly icon = 'ph-frame-corners';
readonly description = 'Standardize all pages to a target size';
constructor() {
super('Fix Page Size');
this.addInput('pdf', new ClassicPreset.Input(pdfSocket, 'PDF'));
this.addOutput(
'pdf',
new ClassicPreset.Output(pdfSocket, 'Standardized PDF')
);
this.addControl(
'targetSize',
new ClassicPreset.InputControl('text', { initial: 'A4' })
);
this.addControl(
'orientation',
new ClassicPreset.InputControl('text', { initial: 'auto' })
);
this.addControl(
'scalingMode',
new ClassicPreset.InputControl('text', { initial: 'fit' })
);
this.addControl(
'backgroundColor',
new ClassicPreset.InputControl('text', { initial: '#ffffff' })
);
this.addControl(
'customWidth',
new ClassicPreset.InputControl('number', { initial: 210 })
);
this.addControl(
'customHeight',
new ClassicPreset.InputControl('number', { initial: 297 })
);
this.addControl(
'customUnits',
new ClassicPreset.InputControl('text', { initial: 'mm' })
);
}
async data(
inputs: Record<string, SocketData[]>
): Promise<Record<string, SocketData>> {
const pdfInputs = requirePdfInput(inputs, 'Fix Page Size');
const getText = (key: string, fallback: string) => {
const ctrl = this.controls[key] as
| ClassicPreset.InputControl<'text'>
| undefined;
return (ctrl?.value || fallback).trim();
};
const getNum = (key: string, fallback: number) => {
const ctrl = this.controls[key] as
| ClassicPreset.InputControl<'number'>
| undefined;
const value = ctrl?.value;
return Number.isFinite(value) ? (value as number) : fallback;
};
const targetSize = getText('targetSize', 'A4');
const orientation = getText('orientation', 'auto');
const scalingMode = getText('scalingMode', 'fit');
const backgroundHex = getText('backgroundColor', '#ffffff');
const customWidth = Math.max(1, getNum('customWidth', 210));
const customHeight = Math.max(1, getNum('customHeight', 297));
const customUnits = getText('customUnits', 'mm');
const backgroundColor = hexToRgb(backgroundHex);
return {
pdf: await processBatch(pdfInputs, async (input) => {
const resultBytes = await fixPageSize(input.bytes, {
targetSize,
orientation,
scalingMode,
backgroundColor,
customWidth,
customHeight,
customUnits,
});
const resultDoc = await PDFDocument.load(resultBytes);
return {
type: 'pdf',
document: resultDoc,
bytes: resultBytes,
filename: input.filename.replace(/\.pdf$/i, '_standardized.pdf'),
};
}),
};
}
}
-8
View File
@@ -13,7 +13,6 @@ import { ReversePagesNode } from './reverse-pages-node';
import { AddBlankPageNode } from './add-blank-page-node'; import { AddBlankPageNode } from './add-blank-page-node';
import { DividePagesNode } from './divide-pages-node'; import { DividePagesNode } from './divide-pages-node';
import { NUpNode } from './n-up-node'; import { NUpNode } from './n-up-node';
import { FixPageSizeNode } from './fix-page-size-node';
import { CombineSinglePageNode } from './combine-single-page-node'; import { CombineSinglePageNode } from './combine-single-page-node';
import { CropNode } from './crop-node'; import { CropNode } from './crop-node';
import { GreyscaleNode } from './greyscale-node'; import { GreyscaleNode } from './greyscale-node';
@@ -299,13 +298,6 @@ export const nodeRegistry: Record<string, NodeRegistryEntry> = {
description: 'Arrange multiple pages per sheet', description: 'Arrange multiple pages per sheet',
factory: () => new NUpNode(), factory: () => new NUpNode(),
}, },
FixPageSizeNode: {
label: 'Fix Page Size',
category: 'Organize & Manage',
icon: 'ph-frame-corners',
description: 'Standardize all pages to a target size',
factory: () => new FixPageSizeNode(),
},
CombineSinglePageNode: { CombineSinglePageNode: {
label: 'Combine to Single Page', label: 'Combine to Single Page',
category: 'Organize & Manage', category: 'Organize & Manage',
+2 -2
View File
@@ -132,10 +132,10 @@
class="text-2xl font-bold text-white mb-2" class="text-2xl font-bold text-white mb-2"
data-i18n="tools:addAttachments.name" data-i18n="tools:addAttachments.name"
> >
Add Attachments Add Attachments Free Online - Fast & Secure
</h1> </h1>
<p class="text-gray-400 mb-6" data-i18n="tools:addAttachments.subtitle"> <p class="text-gray-400 mb-6" data-i18n="tools:addAttachments.subtitle">
Embed one or more files into your PDF. Upload a PDF, then add files to embed as attachments.
</p> </p>
<!-- PDF Upload --> <!-- PDF Upload -->
+2 -2
View File
@@ -126,10 +126,10 @@
class="text-2xl font-bold text-white mb-2" class="text-2xl font-bold text-white mb-2"
data-i18n="tools:addBlankPage.name" data-i18n="tools:addBlankPage.name"
> >
Add Blank Page Add Blank Page Free Online - Fast & Secure
</h1> </h1>
<p class="text-gray-400 mb-6" data-i18n="tools:addBlankPage.subtitle"> <p class="text-gray-400 mb-6" data-i18n="tools:addBlankPage.subtitle">
Insert an empty page anywhere in your PDF. Insert one or more blank pages at any position in your PDF document.
</p> </p>
<div <div
+3 -2
View File
@@ -116,10 +116,11 @@
class="text-2xl font-bold text-white mb-2" class="text-2xl font-bold text-white mb-2"
data-i18n="tools:addStamps.name" data-i18n="tools:addStamps.name"
> >
Add Stamps Add Stamps Free Online - Fast & Secure
</h1> </h1>
<p class="text-gray-400 mb-6" data-i18n="tools:addStamps.subtitle"> <p class="text-gray-400 mb-6" data-i18n="tools:addStamps.subtitle">
Add image stamps to your PDF using the annotation toolbar. Upload a PDF, add image stamps using the toolbar, and then save the
stamped PDF.
</p> </p>
<div class="mb-4"> <div class="mb-4">
+3 -2
View File
@@ -120,10 +120,11 @@
class="text-2xl font-bold text-white mb-2" class="text-2xl font-bold text-white mb-2"
data-i18n="tools:addWatermark.name" data-i18n="tools:addWatermark.name"
> >
Add Watermark Add Watermark to PDF Free - Protect PDFs
</h1> </h1>
<p class="text-gray-400 mb-6" data-i18n="tools:addWatermark.subtitle"> <p class="text-gray-400 mb-6" data-i18n="tools:addWatermark.subtitle">
Stamp text or an image over your PDF pages. Add text or image watermarks to your PDF documents with customizable
opacity and rotation.
</p> </p>
<div <div
+2 -2
View File
@@ -118,10 +118,10 @@
class="text-2xl font-bold text-white mb-2" class="text-2xl font-bold text-white mb-2"
data-i18n="tools:adjustColors.name" data-i18n="tools:adjustColors.name"
> >
Adjust Colors Adjust Colors Free Online - PDF Color Correction Tool
</h1> </h1>
<p class="text-gray-400 mb-6" data-i18n="tools:adjustColors.subtitle"> <p class="text-gray-400 mb-6" data-i18n="tools:adjustColors.subtitle">
Fine-tune brightness, contrast, saturation and more in your PDF. Fine-tune brightness, contrast, saturation, hue and more in your PDF.
</p> </p>
<div <div
+3 -2
View File
@@ -132,10 +132,11 @@
class="text-2xl font-bold text-white mb-2" class="text-2xl font-bold text-white mb-2"
data-i18n="tools:alternateMix.name" data-i18n="tools:alternateMix.name"
> >
Alternate & Mix Pages Alternate Merge Free Online - Combine PDFs Instantly
</h1> </h1>
<p class="text-gray-400 mb-6" data-i18n="tools:alternateMix.subtitle"> <p class="text-gray-400 mb-6" data-i18n="tools:alternateMix.subtitle">
Merge PDFs by alternating pages from each PDF. Preserves Bookmarks. Upload multiple PDFs and interleave their pages. Drag to reorder the
files, then mix their pages alternately.
</p> </p>
<div <div
+2 -2
View File
@@ -134,13 +134,13 @@
class="text-2xl font-bold text-white mb-2" class="text-2xl font-bold text-white mb-2"
data-i18n="tools:backgroundColor.name" data-i18n="tools:backgroundColor.name"
> >
Background Color Background Color Free Online - Fast & Secure
</h1> </h1>
<p <p
class="text-gray-400 mb-6" class="text-gray-400 mb-6"
data-i18n="tools:backgroundColor.subtitle" data-i18n="tools:backgroundColor.subtitle"
> >
Change the background color of your PDF. Add or change the background color of all pages in your PDF document.
</p> </p>
<div <div
+2 -2
View File
@@ -120,10 +120,10 @@
class="text-2xl font-bold text-white mb-2" class="text-2xl font-bold text-white mb-2"
data-i18n="tools:bmpToPdf.name" data-i18n="tools:bmpToPdf.name"
> >
BMP to PDF Bmp To Pdf Converter Free Online - Convert Files Fast
</h1> </h1>
<p class="text-gray-400 mb-6" data-i18n="tools:bmpToPdf.subtitle"> <p class="text-gray-400 mb-6" data-i18n="tools:bmpToPdf.subtitle">
Create a PDF from one or more BMP images. Convert one or more BMP images into a single PDF file.
</p> </p>
<div <div
+1 -1
View File
@@ -115,7 +115,7 @@
class="text-2xl font-bold text-white mb-2" class="text-2xl font-bold text-white mb-2"
data-i18n="tools:editBookmarks.name" data-i18n="tools:editBookmarks.name"
> >
Edit Bookmarks Bookmark Free Online - Fast & Secure
</h1> </h1>
<p class="text-gray-400 mb-6" data-i18n="tools:editBookmarks.subtitle"> <p class="text-gray-400 mb-6" data-i18n="tools:editBookmarks.subtitle">
Add, edit, import, delete and extract PDF bookmarks. Add, edit, import, delete and extract PDF bookmarks.
+1 -1
View File
@@ -120,7 +120,7 @@
class="text-2xl font-bold text-white mb-2" class="text-2xl font-bold text-white mb-2"
data-i18n="tools:cbzToPdf.name" data-i18n="tools:cbzToPdf.name"
> >
CBZ to PDF Cbz To Pdf Converter Free Online - Convert Files Fast
</h1> </h1>
<p class="text-gray-400 mb-6" data-i18n="tools:cbzToPdf.subtitle"> <p class="text-gray-400 mb-6" data-i18n="tools:cbzToPdf.subtitle">
Convert comic book archives (CBZ/CBR) to PDF format. Supports multiple Convert comic book archives (CBZ/CBR) to PDF format. Supports multiple
+3 -2
View File
@@ -134,13 +134,14 @@
class="text-2xl font-bold text-white mb-2" class="text-2xl font-bold text-white mb-2"
data-i18n="tools:changePermissions.name" data-i18n="tools:changePermissions.name"
> >
Change Permissions Change Permissions Free Online - Fast & Secure
</h1> </h1>
<p <p
class="text-gray-400 mb-6" class="text-gray-400 mb-6"
data-i18n="tools:changePermissions.subtitle" data-i18n="tools:changePermissions.subtitle"
> >
Set or change user permissions on a PDF. Set or change user permissions on a PDF. Modify passwords and access
controls.
</p> </p>
<div <div
+3 -2
View File
@@ -134,13 +134,14 @@
class="text-2xl font-bold text-white mb-2" class="text-2xl font-bold text-white mb-2"
data-i18n="tools:combineToSinglePage.name" data-i18n="tools:combineToSinglePage.name"
> >
Combine to Single Page Combine Single Page Free Online - Combine PDFs Instantly
</h1> </h1>
<p <p
class="text-gray-400 mb-6" class="text-gray-400 mb-6"
data-i18n="tools:combineToSinglePage.subtitle" data-i18n="tools:combineToSinglePage.subtitle"
> >
Stitch all pages into one continuous scroll. Merge all pages of your PDF into one continuous page, either
horizontally or vertically.
</p> </p>
<div <div
+3 -2
View File
@@ -150,10 +150,11 @@
class="text-2xl font-bold text-white mb-2" class="text-2xl font-bold text-white mb-2"
data-i18n="tools:comparePdfs.name" data-i18n="tools:comparePdfs.name"
> >
Compare PDFs Compare Pdfs Free Online - Fast & Secure
</h1> </h1>
<p class="text-gray-400 mb-6" data-i18n="tools:comparePdfs.subtitle"> <p class="text-gray-400 mb-6" data-i18n="tools:comparePdfs.subtitle">
Compare two PDFs side by side. Upload two PDF files to compare them side by side or with overlay
mode.
</p> </p>
<!-- File Upload Areas --> <!-- File Upload Areas -->
+3 -2
View File
@@ -119,10 +119,11 @@
class="text-2xl font-bold text-white mb-2" class="text-2xl font-bold text-white mb-2"
data-i18n="tools:compressPdf.name" data-i18n="tools:compressPdf.name"
> >
Compress PDF Compress PDF Free Online - Reduce File Size Fast
</h1> </h1>
<p class="text-gray-400 mb-6" data-i18n="tools:compressPdf.subtitle"> <p class="text-gray-400 mb-6" data-i18n="tools:compressPdf.subtitle">
Reduce the file size of your PDF. Reduce file size by choosing the compression method that best suits
your document. Supports multiple PDFs.
</p> </p>
<div <div
+3 -2
View File
@@ -125,10 +125,11 @@
class="text-2xl font-bold text-white mb-2" class="text-2xl font-bold text-white mb-2"
data-i18n="tools:cropPdf.name" data-i18n="tools:cropPdf.name"
> >
Crop PDF Crop Pdf Free Online - Fast & Secure
</h1> </h1>
<p class="text-gray-400 mb-6" data-i18n="tools:cropPdf.subtitle"> <p class="text-gray-400 mb-6" data-i18n="tools:cropPdf.subtitle">
Trim the margins of every page in your PDF. Upload a PDF to visually crop one or more pages. This tool offers a
live preview and two distinct cropping modes.
</p> </p>
<!-- Drop Zone --> <!-- Drop Zone -->
+3 -2
View File
@@ -120,10 +120,11 @@
class="text-2xl font-bold text-white mb-2" class="text-2xl font-bold text-white mb-2"
data-i18n="tools:csvToPdf.name" data-i18n="tools:csvToPdf.name"
> >
CSV to PDF Csv To Pdf Converter Free Online - Convert Files Fast
</h1> </h1>
<p class="text-gray-400 mb-6" data-i18n="tools:csvToPdf.subtitle"> <p class="text-gray-400 mb-6" data-i18n="tools:csvToPdf.subtitle">
Convert CSV spreadsheet files to PDF format. Supports multiple files. Convert CSV (Comma-Separated Values) spreadsheet files to PDF format.
Supports multiple files.
</p> </p>
<div <div
+2 -2
View File
@@ -120,10 +120,10 @@
class="text-2xl font-bold text-white mb-2" class="text-2xl font-bold text-white mb-2"
data-i18n="tools:decryptPdf.name" data-i18n="tools:decryptPdf.name"
> >
Decrypt PDF Decrypt PDF Free - Remove Password Online
</h1> </h1>
<p class="text-gray-400 mb-6" data-i18n="tools:decryptPdf.subtitle"> <p class="text-gray-400 mb-6" data-i18n="tools:decryptPdf.subtitle">
Unlock PDF by removing password protection. Unlock password-protected PDF files by removing encryption.
</p> </p>
<div <div
+2 -2
View File
@@ -119,10 +119,10 @@
class="text-2xl font-bold text-white mb-2" class="text-2xl font-bold text-white mb-2"
data-i18n="tools:deletePages.name" data-i18n="tools:deletePages.name"
> >
Delete Pages Delete PDF Pages Free - Remove Pages Online
</h1> </h1>
<p class="text-gray-400 mb-6" data-i18n="tools:deletePages.subtitle"> <p class="text-gray-400 mb-6" data-i18n="tools:deletePages.subtitle">
Remove specific pages from your document. Remove specific pages or ranges of pages from your PDF file.
</p> </p>
<div <div
id="drop-zone" id="drop-zone"
+3 -2
View File
@@ -108,10 +108,11 @@
class="text-2xl font-bold text-white mb-2" class="text-2xl font-bold text-white mb-2"
data-i18n="tools:deskewPdf.name" data-i18n="tools:deskewPdf.name"
> >
Deskew PDF Deskew PDF Free Online - Straighten Tilted Scans
</h1> </h1>
<p class="text-gray-400 mb-6" data-i18n="tools:deskewPdf.subtitle"> <p class="text-gray-400 mb-6" data-i18n="tools:deskewPdf.subtitle">
Automatically straighten tilted scanned pages using OpenCV. Automatically detect and correct skewed pages in scanned PDFs. Uses
advanced image processing to straighten tilted documents.
</p> </p>
<div <div
+3 -2
View File
@@ -120,10 +120,11 @@
class="text-2xl font-bold text-white mb-2" class="text-2xl font-bold text-white mb-2"
data-i18n="tools:dividePages.name" data-i18n="tools:dividePages.name"
> >
Divide Pages Divide Pages Free Online - Fast & Secure
</h1> </h1>
<p class="text-gray-400 mb-6" data-i18n="tools:dividePages.subtitle"> <p class="text-gray-400 mb-6" data-i18n="tools:dividePages.subtitle">
Divide pages horizontally or vertically. Split each page of your PDF horizontally or vertically, turning one
page into two.
</p> </p>
<div <div
+2 -2
View File
@@ -134,13 +134,13 @@
class="text-2xl font-bold text-white mb-2" class="text-2xl font-bold text-white mb-2"
data-i18n="tools:editAttachments.name" data-i18n="tools:editAttachments.name"
> >
Edit Attachments Edit Attachments Free Online - Edit PDFs Securely
</h1> </h1>
<p <p
class="text-gray-400 mb-6" class="text-gray-400 mb-6"
data-i18n="tools:editAttachments.subtitle" data-i18n="tools:editAttachments.subtitle"
> >
View or remove attachments in your PDF. Upload a PDF to view and remove its embedded attachments.
</p> </p>
<div <div
+3 -2
View File
@@ -120,10 +120,11 @@
class="text-2xl font-bold text-white mb-2" class="text-2xl font-bold text-white mb-2"
data-i18n="tools:editMetadata.name" data-i18n="tools:editMetadata.name"
> >
Edit Metadata Edit Metadata Free Online - Edit PDFs Securely
</h1> </h1>
<p class="text-gray-400 mb-6" data-i18n="tools:editMetadata.subtitle"> <p class="text-gray-400 mb-6" data-i18n="tools:editMetadata.subtitle">
Change the author, title, and other properties. Edit metadata fields in your PDF document including title, author,
subject, and keywords.
</p> </p>
<div <div
+1 -1
View File
@@ -123,7 +123,7 @@
class="text-2xl font-bold text-white mb-2" class="text-2xl font-bold text-white mb-2"
data-i18n="tools:pdfEditor.name" data-i18n="tools:pdfEditor.name"
> >
PDF Editor Edit PDF Free Online - Modify PDFs Securely
</h1> </h1>
<p class="text-gray-400 mb-6" data-i18n="tools:pdfEditor.subtitle"> <p class="text-gray-400 mb-6" data-i18n="tools:pdfEditor.subtitle">
Annotate, highlight, redact, comment, add shapes/images, search, and Annotate, highlight, redact, comment, add shapes/images, search, and
+1 -1
View File
@@ -125,7 +125,7 @@
class="text-2xl font-bold text-white mb-2" class="text-2xl font-bold text-white mb-2"
data-i18n="tools:emailToPdf.name" data-i18n="tools:emailToPdf.name"
> >
Email to PDF Email to PDF Converter Free Online - Convert EML MSG Files
</h1> </h1>
<p class="text-gray-400 mb-6" data-i18n="tools:emailToPdf.subtitle"> <p class="text-gray-400 mb-6" data-i18n="tools:emailToPdf.subtitle">
Convert email files (EML, MSG) to PDF format. Supports Outlook exports Convert email files (EML, MSG) to PDF format. Supports Outlook exports
+3 -2
View File
@@ -123,10 +123,11 @@
class="text-2xl font-bold text-white mb-2" class="text-2xl font-bold text-white mb-2"
data-i18n="tools:encryptPdf.name" data-i18n="tools:encryptPdf.name"
> >
Encrypt PDF Encrypt PDF Free - Password Protect PDFs
</h1> </h1>
<p class="text-gray-400 mb-6" data-i18n="tools:encryptPdf.subtitle"> <p class="text-gray-400 mb-6" data-i18n="tools:encryptPdf.subtitle">
Lock your PDF by adding a password. Protect your PDF with 256-bit AES encryption. Add password protection
and set usage restrictions.
</p> </p>
<div <div
+1 -1
View File
@@ -120,7 +120,7 @@
class="text-2xl font-bold text-white mb-2" class="text-2xl font-bold text-white mb-2"
data-i18n="tools:epubToPdf.name" data-i18n="tools:epubToPdf.name"
> >
EPUB to PDF Epub To Pdf Converter Free Online - Convert Files Fast
</h1> </h1>
<p class="text-gray-400 mb-6" data-i18n="tools:epubToPdf.subtitle"> <p class="text-gray-400 mb-6" data-i18n="tools:epubToPdf.subtitle">
Convert EPUB e-books to PDF format. Supports multiple files. Convert EPUB e-books to PDF format. Supports multiple files.
+1 -1
View File
@@ -123,7 +123,7 @@
class="text-2xl font-bold text-white mb-2" class="text-2xl font-bold text-white mb-2"
data-i18n="tools:excelToPdf.name" data-i18n="tools:excelToPdf.name"
> >
Excel to PDF Excel to PDF Converter Free - Convert XLSX Online
</h1> </h1>
<p class="text-gray-400 mb-6" data-i18n="tools:excelToPdf.subtitle"> <p class="text-gray-400 mb-6" data-i18n="tools:excelToPdf.subtitle">
Convert Excel spreadsheets (XLSX, XLS, ODS, CSV) to PDF format. Convert Excel spreadsheets (XLSX, XLS, ODS, CSV) to PDF format.
+3 -2
View File
@@ -134,13 +134,14 @@
class="text-2xl font-bold text-white mb-2" class="text-2xl font-bold text-white mb-2"
data-i18n="tools:extractAttachments.name" data-i18n="tools:extractAttachments.name"
> >
Extract Attachments Extract Attachments Free Online - Extract PDF Content
</h1> </h1>
<p <p
class="text-gray-400 mb-6" class="text-gray-400 mb-6"
data-i18n="tools:extractAttachments.subtitle" data-i18n="tools:extractAttachments.subtitle"
> >
Extract all embedded files from PDF(s) as a ZIP. Upload PDF files to extract all embedded attachments. Files will be
downloaded as a ZIP archive.
</p> </p>
<div <div
+3 -2
View File
@@ -126,10 +126,11 @@
class="text-2xl font-bold text-white mb-2" class="text-2xl font-bold text-white mb-2"
data-i18n="tools:extractImages.name" data-i18n="tools:extractImages.name"
> >
Extract Images Extract Images Free Online - Extract PDF Content
</h1> </h1>
<p class="text-gray-400 mb-6" data-i18n="tools:extractImages.subtitle"> <p class="text-gray-400 mb-6" data-i18n="tools:extractImages.subtitle">
Extract all embedded images from your PDF files. Extract all embedded images from PDF files. Download individually or
as a ZIP archive.
</p> </p>
<div <div
+3 -2
View File
@@ -120,10 +120,11 @@
class="text-2xl font-bold text-white mb-2" class="text-2xl font-bold text-white mb-2"
data-i18n="tools:extractPages.name" data-i18n="tools:extractPages.name"
> >
Extract Pages Extract PDF Pages Free - Copy Pages Online
</h1> </h1>
<p class="text-gray-400 mb-6" data-i18n="tools:extractPages.subtitle"> <p class="text-gray-400 mb-6" data-i18n="tools:extractPages.subtitle">
Save a selection of pages as new files. Extract specific pages from a PDF into separate files. Your files will
download in a ZIP archive.
</p> </p>
<!-- Drop Zone --> <!-- Drop Zone -->
+1 -1
View File
@@ -126,7 +126,7 @@
class="text-2xl font-bold text-white mb-2" class="text-2xl font-bold text-white mb-2"
data-i18n="tools:extractTables.name" data-i18n="tools:extractTables.name"
> >
Extract PDF Tables Extract Tables Free Online - Extract PDF Content
</h1> </h1>
<p class="text-gray-400 mb-6" data-i18n="tools:extractTables.subtitle"> <p class="text-gray-400 mb-6" data-i18n="tools:extractTables.subtitle">
Extract tables from PDF files and export as CSV, JSON, or Markdown. Extract tables from PDF files and export as CSV, JSON, or Markdown.
+1 -1
View File
@@ -120,7 +120,7 @@
class="text-2xl font-bold text-white mb-2" class="text-2xl font-bold text-white mb-2"
data-i18n="tools:fb2ToPdf.name" data-i18n="tools:fb2ToPdf.name"
> >
FB2 to PDF Fb2 To Pdf Converter Free Online - Convert Files Fast
</h1> </h1>
<p class="text-gray-400 mb-6" data-i18n="tools:fb2ToPdf.subtitle"> <p class="text-gray-400 mb-6" data-i18n="tools:fb2ToPdf.subtitle">
Convert FictionBook (FB2) e-books to PDF format. Supports multiple Convert FictionBook (FB2) e-books to PDF format. Supports multiple
+3 -2
View File
@@ -120,10 +120,11 @@
class="text-2xl font-bold text-white mb-2" class="text-2xl font-bold text-white mb-2"
data-i18n="tools:fixPageSize.name" data-i18n="tools:fixPageSize.name"
> >
Fix Page Size Fix Page Size Free Online - Fast & Secure
</h1> </h1>
<p class="text-gray-400 mb-6" data-i18n="tools:fixPageSize.subtitle"> <p class="text-gray-400 mb-6" data-i18n="tools:fixPageSize.subtitle">
Standardize all pages to a uniform size. Standardize all pages in your PDF to a uniform size. Choose from
standard sizes or set custom dimensions.
</p> </p>
<div <div
+3 -2
View File
@@ -120,10 +120,11 @@
class="text-2xl font-bold text-white mb-2" class="text-2xl font-bold text-white mb-2"
data-i18n="tools:flattenPdf.name" data-i18n="tools:flattenPdf.name"
> >
Flatten PDF Flatten Pdf Free Online - Fast & Secure
</h1> </h1>
<p class="text-gray-400 mb-6" data-i18n="tools:flattenPdf.subtitle"> <p class="text-gray-400 mb-6" data-i18n="tools:flattenPdf.subtitle">
Make form fields and annotations non-editable. Make form fields and annotations non-editable by flattening them into
the PDF.
</p> </p>
<div <div
+4 -3
View File
@@ -119,11 +119,12 @@
class="text-2xl font-bold text-white mb-2" class="text-2xl font-bold text-white mb-2"
data-i18n="tools:fontToOutline.name" data-i18n="tools:fontToOutline.name"
> >
Font to Outline Font to Outline Free Online - Convert Fonts to Paths
</h1> </h1>
<p class="text-gray-400 mb-6" data-i18n="tools:fontToOutline.subtitle"> <p class="text-gray-400 mb-6" data-i18n="tools:fontToOutline.subtitle">
Convert all fonts to vector outlines for consistent rendering across Convert all fonts in your PDF to vector outlines/paths. Ensures
all devices. consistent rendering across all devices regardless of font
availability.
</p> </p>
<div <div
+5 -3
View File
@@ -120,10 +120,11 @@
class="text-2xl font-bold text-white mb-2" class="text-2xl font-bold text-white mb-2"
data-i18n="tools:createPdfForm.name" data-i18n="tools:createPdfForm.name"
> >
Create PDF Form Form Creator Free Online - Fast & Secure
</h1> </h1>
<p class="text-gray-400 mb-6" data-i18n="tools:createPdfForm.subtitle"> <p class="text-gray-400 mb-6" data-i18n="tools:createPdfForm.subtitle">
Create fillable PDF forms with drag-and-drop text fields. Upload an existing PDF or create a blank PDF to start adding form
fields.
</p> </p>
<div <div
@@ -261,7 +262,8 @@
Create PDF Form Create PDF Form
</h1> </h1>
<p class="text-gray-400 mb-6" data-i18n="tools:createPdfForm.subtitle"> <p class="text-gray-400 mb-6" data-i18n="tools:createPdfForm.subtitle">
Create fillable PDF forms with drag-and-drop text fields. Drag and drop fields onto the canvas to create a fillable PDF form.
Customize field properties and download your form.
</p> </p>
<!-- Main Form Creator Area --> <!-- Main Form Creator Area -->
+1 -1
View File
@@ -120,7 +120,7 @@
class="text-2xl font-bold text-white mb-2" class="text-2xl font-bold text-white mb-2"
data-i18n="tools:pdfFormFiller.name" data-i18n="tools:pdfFormFiller.name"
> >
PDF Form Filler Form Filler Free Online - Fast & Secure
</h1> </h1>
<p class="text-gray-400 mb-4"> <p class="text-gray-400 mb-4">
Upload a PDF with form fields. Fill them directly in the viewer below, Upload a PDF with form fields. Fill them directly in the viewer below,
+3 -2
View File
@@ -120,10 +120,11 @@
class="text-2xl font-bold text-white mb-2" class="text-2xl font-bold text-white mb-2"
data-i18n="tools:headerFooter.name" data-i18n="tools:headerFooter.name"
> >
Header & Footer Header Footer Free Online - Fast & Secure
</h1> </h1>
<p class="text-gray-400 mb-6" data-i18n="tools:headerFooter.subtitle"> <p class="text-gray-400 mb-6" data-i18n="tools:headerFooter.subtitle">
Add text to the top and bottom of pages. Add customizable headers and footers to your PDF documents with
dynamic page numbers.
</p> </p>
<div <div
+3 -2
View File
@@ -120,10 +120,11 @@
class="text-2xl font-bold text-white mb-2" class="text-2xl font-bold text-white mb-2"
data-i18n="tools:heicToPdf.name" data-i18n="tools:heicToPdf.name"
> >
HEIC to PDF Heic To Pdf Converter Free Online - Convert Files Fast
</h1> </h1>
<p class="text-gray-400 mb-6" data-i18n="tools:heicToPdf.subtitle"> <p class="text-gray-400 mb-6" data-i18n="tools:heicToPdf.subtitle">
Create a PDF from one or more HEIC images. Convert one or more HEIC (High Efficiency) images from your iPhone or
camera into a single PDF file.
</p> </p>
<div <div
+2 -3
View File
@@ -121,11 +121,10 @@
class="text-2xl font-bold text-white mb-2" class="text-2xl font-bold text-white mb-2"
data-i18n="tools:imageToPdf.name" data-i18n="tools:imageToPdf.name"
> >
Images to PDF Image To Pdf Converter Free Online - Convert Files Fast
</h1> </h1>
<p class="text-gray-400 mb-6" data-i18n="tools:imageToPdf.subtitle"> <p class="text-gray-400 mb-6" data-i18n="tools:imageToPdf.subtitle">
Convert JPG, PNG, BMP, GIF, TIFF, PNM, PGM, PBM, PPM, PAM, JXR, JPX, Convert one or more images into a single PDF file.
JP2, PSD, SVG, HEIC, WebP to PDF.
</p> </p>
<div <div
+3 -2
View File
@@ -120,10 +120,11 @@
class="text-2xl font-bold text-white mb-2" class="text-2xl font-bold text-white mb-2"
data-i18n="tools:invertColors.name" data-i18n="tools:invertColors.name"
> >
Invert Colors Invert Colors Free Online - Fast & Secure
</h1> </h1>
<p class="text-gray-400 mb-6" data-i18n="tools:invertColors.subtitle"> <p class="text-gray-400 mb-6" data-i18n="tools:invertColors.subtitle">
Create a "dark mode" version of your PDF. Invert all colors in your PDF document, creating a negative image
effect.
</p> </p>
<div <div
+1 -1
View File
@@ -123,7 +123,7 @@
class="text-2xl font-bold text-white mb-2" class="text-2xl font-bold text-white mb-2"
data-i18n="tools:jpgToPdf.name" data-i18n="tools:jpgToPdf.name"
> >
JPG to PDF JPG to PDF Converter Free - Convert Images Online
</h1> </h1>
<p class="text-gray-400 mb-6" data-i18n="tools:jpgToPdf.subtitle"> <p class="text-gray-400 mb-6" data-i18n="tools:jpgToPdf.subtitle">
Create a PDF from JPG, JPEG, and JPEG2000 (JP2/JPX) images. Create a PDF from JPG, JPEG, and JPEG2000 (JP2/JPX) images.
+3 -2
View File
@@ -112,10 +112,11 @@
class="text-2xl font-bold text-white mb-2" class="text-2xl font-bold text-white mb-2"
data-i18n="tools:jsonToPdf.name" data-i18n="tools:jsonToPdf.name"
> >
JSON to PDF Json To Pdf Converter Free Online - Convert Files Fast
</h1> </h1>
<p class="text-gray-400 mb-6" data-i18n="tools:jsonToPdf.subtitle"> <p class="text-gray-400 mb-6" data-i18n="tools:jsonToPdf.subtitle">
Convert JSON files to PDF format. Upload multiple JSON files to convert them all to PDF format. Files
will be downloaded as a ZIP archive.
</p> </p>
<div <div
class="bg-yellow-900/30 border border-yellow-700 rounded-lg p-3 mb-6" class="bg-yellow-900/30 border border-yellow-700 rounded-lg p-3 mb-6"
+3 -2
View File
@@ -120,10 +120,11 @@
class="text-2xl font-bold text-white mb-2" class="text-2xl font-bold text-white mb-2"
data-i18n="tools:linearizePdf.name" data-i18n="tools:linearizePdf.name"
> >
Linearize PDF Linearize Pdf Free Online - Fast & Secure
</h1> </h1>
<p class="text-gray-400 mb-6" data-i18n="tools:linearizePdf.subtitle"> <p class="text-gray-400 mb-6" data-i18n="tools:linearizePdf.subtitle">
Optimize PDF for fast web viewing. Optimize PDF files for fast web viewing. Linearized PDFs load
progressively in browsers.
</p> </p>
<div <div
+3 -3
View File
@@ -130,14 +130,14 @@
class="text-2xl font-bold text-white mb-2" class="text-2xl font-bold text-white mb-2"
data-i18n="tools:markdownToPdf.name" data-i18n="tools:markdownToPdf.name"
> >
Markdown to PDF Markdown To Pdf Converter Free Online - Convert Files Fast
</h1> </h1>
<p <p
class="text-gray-400 mb-6" class="text-gray-400 mb-6"
data-i18n="tools:markdownToPdf.subtitle" data-i18n="tools:markdownToPdf.subtitle"
> >
Write or paste Markdown and export it as a beautifully formatted Write markdown with live preview. Supports syntax highlighting,
PDF. tables, emoji, and more. Print to save as PDF.
</p> </p>
<!-- Editor container --> <!-- Editor container -->
+1 -1
View File
@@ -119,7 +119,7 @@
class="text-2xl font-bold text-white mb-2" class="text-2xl font-bold text-white mb-2"
data-i18n="tools:mergePdf.name" data-i18n="tools:mergePdf.name"
> >
Merge PDF Merge PDF Files Free - Combine PDFs Instantly
</h1> </h1>
<p class="text-gray-400 mb-6" data-i18n="tools:mergePdf.subtitle"> <p class="text-gray-400 mb-6" data-i18n="tools:mergePdf.subtitle">
Combine whole files, or select specific pages to merge into a new Combine whole files, or select specific pages to merge into a new
+1 -1
View File
@@ -120,7 +120,7 @@
class="text-2xl font-bold text-white mb-2" class="text-2xl font-bold text-white mb-2"
data-i18n="tools:mobiToPdf.name" data-i18n="tools:mobiToPdf.name"
> >
MOBI to PDF Mobi To Pdf Converter Free Online - Convert Files Fast
</h1> </h1>
<p class="text-gray-400 mb-6" data-i18n="tools:mobiToPdf.subtitle"> <p class="text-gray-400 mb-6" data-i18n="tools:mobiToPdf.subtitle">
Convert MOBI e-books to PDF format. Supports multiple files. Convert MOBI e-books to PDF format. Supports multiple files.
+3 -2
View File
@@ -120,10 +120,11 @@
class="text-2xl font-bold text-white mb-2" class="text-2xl font-bold text-white mb-2"
data-i18n="tools:nUpPdf.name" data-i18n="tools:nUpPdf.name"
> >
N-Up PDF N Up Pdf Free Online - Fast & Secure
</h1> </h1>
<p class="text-gray-400 mb-6" data-i18n="tools:nUpPdf.subtitle"> <p class="text-gray-400 mb-6" data-i18n="tools:nUpPdf.subtitle">
Arrange multiple pages onto a single sheet. Arrange multiple pages onto a single sheet. Perfect for printing
handouts or saving paper.
</p> </p>
<div <div
+3 -2
View File
@@ -123,10 +123,11 @@
class="text-2xl font-bold text-white mb-2" class="text-2xl font-bold text-white mb-2"
data-i18n="tools:ocrPdf.name" data-i18n="tools:ocrPdf.name"
> >
OCR PDF OCR PDF Free Online - Extract Text from Scans
</h1> </h1>
<p class="text-gray-400 mb-6" data-i18n="tools:ocrPdf.subtitle"> <p class="text-gray-400 mb-6" data-i18n="tools:ocrPdf.subtitle">
Make a PDF searchable and copyable. Convert scanned PDFs into searchable documents. Select one or more
languages present in your file for the best results.
</p> </p>
<!-- How it works info box --> <!-- How it works info box -->
+1 -1
View File
@@ -120,7 +120,7 @@
class="text-2xl font-bold text-white mb-2" class="text-2xl font-bold text-white mb-2"
data-i18n="tools:odgToPdf.name" data-i18n="tools:odgToPdf.name"
> >
ODG to PDF Odg To Pdf Converter Free Online - Convert Files Fast
</h1> </h1>
<p class="text-gray-400 mb-6" data-i18n="tools:odgToPdf.subtitle"> <p class="text-gray-400 mb-6" data-i18n="tools:odgToPdf.subtitle">
Convert OpenDocument Graphics (ODG) files to PDF format. Supports Convert OpenDocument Graphics (ODG) files to PDF format. Supports
+1 -1
View File
@@ -122,7 +122,7 @@
class="text-2xl font-bold text-white mb-2" class="text-2xl font-bold text-white mb-2"
data-i18n="tools:odpToPdf.name" data-i18n="tools:odpToPdf.name"
> >
ODP to PDF Odp To Pdf Converter Free Online - Convert Files Fast
</h1> </h1>
<p class="text-gray-400 mb-6" data-i18n="tools:odpToPdf.subtitle"> <p class="text-gray-400 mb-6" data-i18n="tools:odpToPdf.subtitle">
Convert OpenDocument Presentation (ODP) files to PDF format. Supports Convert OpenDocument Presentation (ODP) files to PDF format. Supports
+1 -1
View File
@@ -122,7 +122,7 @@
class="text-2xl font-bold text-white mb-2" class="text-2xl font-bold text-white mb-2"
data-i18n="tools:odsToPdf.name" data-i18n="tools:odsToPdf.name"
> >
ODS to PDF Ods To Pdf Converter Free Online - Convert Files Fast
</h1> </h1>
<p class="text-gray-400 mb-6" data-i18n="tools:odsToPdf.subtitle"> <p class="text-gray-400 mb-6" data-i18n="tools:odsToPdf.subtitle">
Convert OpenDocument Spreadsheet (ODS) files to PDF format. Supports Convert OpenDocument Spreadsheet (ODS) files to PDF format. Supports
+3 -3
View File
@@ -120,11 +120,11 @@
class="text-2xl font-bold text-white mb-2" class="text-2xl font-bold text-white mb-2"
data-i18n="tools:odtToPdf.name" data-i18n="tools:odtToPdf.name"
> >
ODT to PDF Odt To Pdf Converter Free Online - Convert Files Fast
</h1> </h1>
<p class="text-gray-400 mb-6" data-i18n="tools:odtToPdf.subtitle"> <p class="text-gray-400 mb-6" data-i18n="tools:odtToPdf.subtitle">
Convert OpenDocument Text files to PDF format. Supports multiple Convert OpenDocument Text (.odt) files to PDF format. Supports
files. multiple files.
</p> </p>
<div <div
+12 -2
View File
@@ -119,13 +119,23 @@
class="text-2xl font-bold text-white mb-2" class="text-2xl font-bold text-white mb-2"
data-i18n="tools:duplicateOrganize.name" data-i18n="tools:duplicateOrganize.name"
> >
Duplicate & Organize Organize PDF Pages Free - Reorder PDFs Online
</h1> </h1>
<p <p
class="text-gray-400 mb-6" class="text-gray-400 mb-6"
data-i18n="tools:duplicateOrganize.subtitle" data-i18n="tools:duplicateOrganize.subtitle"
> >
Duplicate, reorder, and delete pages. Drag pages to reorder them. Use the
<i
data-lucide="copy-plus"
class="inline-block w-4 h-4 mx-1 align-text-bottom text-green-500"
></i>
icon to duplicate a page or the
<i
data-lucide="x-circle"
class="inline-block w-4 h-4 mx-1 align-text-bottom text-red-400"
></i>
icon to delete it.
</p> </p>
<!-- Drop Zone --> <!-- Drop Zone -->
+3 -2
View File
@@ -132,10 +132,11 @@
class="text-2xl font-bold text-white mb-2" class="text-2xl font-bold text-white mb-2"
data-i18n="tools:pageDimensions.name" data-i18n="tools:pageDimensions.name"
> >
Page Dimensions Page Dimensions Free Online - Fast & Secure
</h1> </h1>
<p class="text-gray-400 mb-6" data-i18n="tools:pageDimensions.subtitle"> <p class="text-gray-400 mb-6" data-i18n="tools:pageDimensions.subtitle">
Analyze page size, orientation, and units. Analyze PDF page dimensions and sizes. View detailed information about
each page.
</p> </p>
<div <div
+3 -2
View File
@@ -120,10 +120,11 @@
class="text-2xl font-bold text-white mb-2" class="text-2xl font-bold text-white mb-2"
data-i18n="tools:pageNumbers.name" data-i18n="tools:pageNumbers.name"
> >
Page Numbers Page Numbers Free Online - Fast & Secure
</h1> </h1>
<p class="text-gray-400 mb-6" data-i18n="tools:pageNumbers.subtitle"> <p class="text-gray-400 mb-6" data-i18n="tools:pageNumbers.subtitle">
Insert page numbers into your document. Add page numbers to your PDF documents with customizable position,
format, and styling.
</p> </p>
<div <div
+1 -1
View File
@@ -120,7 +120,7 @@
class="text-2xl font-bold text-white mb-2" class="text-2xl font-bold text-white mb-2"
data-i18n="tools:pagesToPdf.name" data-i18n="tools:pagesToPdf.name"
> >
Pages to PDF Pages To Pdf Converter Free Online - Convert Files Fast
</h1> </h1>
<p class="text-gray-400 mb-6" data-i18n="tools:pagesToPdf.subtitle"> <p class="text-gray-400 mb-6" data-i18n="tools:pagesToPdf.subtitle">
Convert Apple Pages documents to PDF format. Supports multiple files. Convert Apple Pages documents to PDF format. Supports multiple files.
+1 -1
View File
@@ -120,7 +120,7 @@
class="text-2xl font-bold text-white mb-2" class="text-2xl font-bold text-white mb-2"
data-i18n="tools:pdfBooklet.name" data-i18n="tools:pdfBooklet.name"
> >
PDF Booklet Pdf Booklet Free Online - Fast & Secure
</h1> </h1>
<p class="text-gray-400 mb-6" data-i18n="tools:pdfBooklet.subtitle"> <p class="text-gray-400 mb-6" data-i18n="tools:pdfBooklet.subtitle">
Rearrange pages for double-sided booklet printing. Fold and staple to Rearrange pages for double-sided booklet printing. Fold and staple to
+3 -2
View File
@@ -239,10 +239,11 @@
class="text-2xl font-bold text-white mb-2" class="text-2xl font-bold text-white mb-2"
data-i18n="tools:pdfOcg.name" data-i18n="tools:pdfOcg.name"
> >
PDF OCG Pdf Layers Free Online - Fast & Secure
</h1> </h1>
<p class="text-gray-400 mb-6" data-i18n="tools:pdfOcg.subtitle"> <p class="text-gray-400 mb-6" data-i18n="tools:pdfOcg.subtitle">
View, toggle, add, and delete OCG layers in your PDF. Manage Optional Content Groups (OCG) in your PDF. View, toggle
visibility, add new layers, or delete existing ones.
</p> </p>
<div <div
+2 -2
View File
@@ -120,10 +120,10 @@
class="text-2xl font-bold text-white mb-2" class="text-2xl font-bold text-white mb-2"
data-i18n="tools:pdfToBmp.name" data-i18n="tools:pdfToBmp.name"
> >
PDF to BMP Pdf To Bmp Converter Free Online - Convert Files Fast
</h1> </h1>
<p class="text-gray-400 mb-6" data-i18n="tools:pdfToBmp.subtitle"> <p class="text-gray-400 mb-6" data-i18n="tools:pdfToBmp.subtitle">
Convert each PDF page into a BMP image. Convert each page of a PDF file into a BMP image.
</p> </p>
<div <div
+1 -1
View File
@@ -118,7 +118,7 @@
class="text-2xl font-bold text-white mb-2" class="text-2xl font-bold text-white mb-2"
data-i18n="tools:pdfToCsv.name" data-i18n="tools:pdfToCsv.name"
> >
PDF to CSV Pdf To Csv Converter Free Online - Convert Files Fast
</h1> </h1>
<p class="text-gray-400 mb-6" data-i18n="tools:pdfToCsv.subtitle"> <p class="text-gray-400 mb-6" data-i18n="tools:pdfToCsv.subtitle">
Extract tables from PDF and convert to CSV format. Extract tables from PDF and convert to CSV format.
+3 -2
View File
@@ -123,10 +123,11 @@
class="text-2xl font-bold text-white mb-2" class="text-2xl font-bold text-white mb-2"
data-i18n="tools:pdfToWord.name" data-i18n="tools:pdfToWord.name"
> >
PDF to Word PDF to Word Converter Free - Convert PDF to DOCX
</h1> </h1>
<p class="text-gray-400 mb-6" data-i18n="tools:pdfToWord.subtitle"> <p class="text-gray-400 mb-6" data-i18n="tools:pdfToWord.subtitle">
Convert PDF files to editable Word documents. Convert PDF files to editable Word documents. Preserves text,
formatting, and layout.
</p> </p>
<div <div
+1 -1
View File
@@ -121,7 +121,7 @@
class="text-2xl font-bold text-white mb-2" class="text-2xl font-bold text-white mb-2"
data-i18n="tools:pdfToExcel.name" data-i18n="tools:pdfToExcel.name"
> >
PDF to Excel PDF to Excel Converter Free - Extract Tables
</h1> </h1>
<p class="text-gray-400 mb-6" data-i18n="tools:pdfToExcel.subtitle"> <p class="text-gray-400 mb-6" data-i18n="tools:pdfToExcel.subtitle">
Extract tables from PDF and convert to Excel (XLSX) format. Extract tables from PDF and convert to Excel (XLSX) format.
+2 -2
View File
@@ -134,10 +134,10 @@
class="text-2xl font-bold text-white mb-2" class="text-2xl font-bold text-white mb-2"
data-i18n="tools:pdfToGreyscale.name" data-i18n="tools:pdfToGreyscale.name"
> >
PDF to Greyscale Pdf To Greyscale Converter Free Online - Convert Files Fast
</h1> </h1>
<p class="text-gray-400 mb-6" data-i18n="tools:pdfToGreyscale.subtitle"> <p class="text-gray-400 mb-6" data-i18n="tools:pdfToGreyscale.subtitle">
Convert all colors to black and white. Convert all colors in a PDF to black and white.
</p> </p>
<div <div
+2 -2
View File
@@ -123,10 +123,10 @@
class="text-2xl font-bold text-white mb-2" class="text-2xl font-bold text-white mb-2"
data-i18n="tools:pdfToJpg.name" data-i18n="tools:pdfToJpg.name"
> >
PDF to JPG PDF to JPG Converter Free - Convert PDF to Images
</h1> </h1>
<p class="text-gray-400 mb-6" data-i18n="tools:pdfToJpg.subtitle"> <p class="text-gray-400 mb-6" data-i18n="tools:pdfToJpg.subtitle">
Convert each PDF page into a JPG image. Convert each page of a PDF file into a high-quality JPG image.
</p> </p>
<div <div
+3 -2
View File
@@ -112,10 +112,11 @@
class="text-2xl font-bold text-white mb-2" class="text-2xl font-bold text-white mb-2"
data-i18n="tools:pdfToJson.name" data-i18n="tools:pdfToJson.name"
> >
PDF to JSON Pdf To Json Converter Free Online - Convert Files Fast
</h1> </h1>
<p class="text-gray-400 mb-6" data-i18n="tools:pdfToJson.subtitle"> <p class="text-gray-400 mb-6" data-i18n="tools:pdfToJson.subtitle">
Convert PDF files to JSON format. Upload multiple PDF files to convert them all to JSON format. Files
will be downloaded as a ZIP archive.
</p> </p>
<div class="upload-section mb-6"> <div class="upload-section mb-6">
+3 -2
View File
@@ -132,10 +132,11 @@
class="text-2xl font-bold text-white mb-2" class="text-2xl font-bold text-white mb-2"
data-i18n="tools:pdfToMarkdown.name" data-i18n="tools:pdfToMarkdown.name"
> >
PDF to Markdown Pdf To Markdown Converter Free Online - Convert Files Fast
</h1> </h1>
<p class="text-gray-400 mb-6" data-i18n="tools:pdfToMarkdown.subtitle"> <p class="text-gray-400 mb-6" data-i18n="tools:pdfToMarkdown.subtitle">
Convert PDF text and tables to Markdown format. Convert PDF files to Markdown format. Preserves text structure with
optional image embedding.
</p> </p>
<div <div
+3 -2
View File
@@ -120,10 +120,11 @@
class="text-2xl font-bold text-white mb-2" class="text-2xl font-bold text-white mb-2"
data-i18n="tools:pdfToPdfa.name" data-i18n="tools:pdfToPdfa.name"
> >
PDF to PDF/A Pdf To Pdfa Converter Free Online - Convert Files Fast
</h1> </h1>
<p class="text-gray-400 mb-6" data-i18n="tools:pdfToPdfa.subtitle"> <p class="text-gray-400 mb-6" data-i18n="tools:pdfToPdfa.subtitle">
Convert PDF to PDF/A for long-term archiving. Convert your PDF documents to PDF/A format for long-term archiving and
preservation.
</p> </p>
<div <div
+3 -2
View File
@@ -120,10 +120,11 @@
class="text-2xl font-bold text-white mb-2" class="text-2xl font-bold text-white mb-2"
data-i18n="tools:pdfToPng.name" data-i18n="tools:pdfToPng.name"
> >
PDF to PNG PDF to PNG Converter Free - High Quality Images
</h1> </h1>
<p class="text-gray-400 mb-6" data-i18n="tools:pdfToPng.subtitle"> <p class="text-gray-400 mb-6" data-i18n="tools:pdfToPng.subtitle">
Convert each PDF page into a PNG image. Convert each page of a PDF file into a high-quality PNG image with
transparency support.
</p> </p>
<div <div
+1 -1
View File
@@ -120,7 +120,7 @@
class="text-2xl font-bold text-white mb-2" class="text-2xl font-bold text-white mb-2"
data-i18n="tools:pdfToSvg.name" data-i18n="tools:pdfToSvg.name"
> >
PDF to SVG Pdf To Svg Converter Free Online - Convert Files Fast
</h1> </h1>
<p class="text-gray-400 mb-6" data-i18n="tools:pdfToSvg.subtitle"> <p class="text-gray-400 mb-6" data-i18n="tools:pdfToSvg.subtitle">
Convert each page of a PDF file into a scalable vector graphic (SVG) Convert each page of a PDF file into a scalable vector graphic (SVG)
+3 -3
View File
@@ -120,11 +120,11 @@
class="text-2xl font-bold text-white mb-2" class="text-2xl font-bold text-white mb-2"
data-i18n="tools:pdfToText.name" data-i18n="tools:pdfToText.name"
> >
PDF to Text PDF to Text Converter Free - Extract Text Online
</h1> </h1>
<p class="text-gray-400 mb-4" data-i18n="tools:pdfToText.subtitle"> <p class="text-gray-400 mb-4" data-i18n="tools:pdfToText.subtitle">
Extract text from PDF files and save as plain text (.txt). Supports Extract all text from PDF files and save as plain text (.txt).
multiple files. Supports multiple files.
</p> </p>
<div <div
class="bg-amber-900/30 border border-amber-700/50 rounded-lg p-3 mb-6" class="bg-amber-900/30 border border-amber-700/50 rounded-lg p-3 mb-6"
+2 -2
View File
@@ -118,10 +118,10 @@
class="text-2xl font-bold text-white mb-2" class="text-2xl font-bold text-white mb-2"
data-i18n="tools:pdfToTiff.name" data-i18n="tools:pdfToTiff.name"
> >
PDF to TIFF Pdf To Tiff Converter Free Online - Convert Files Fast
</h1> </h1>
<p class="text-gray-400 mb-6" data-i18n="tools:pdfToTiff.subtitle"> <p class="text-gray-400 mb-6" data-i18n="tools:pdfToTiff.subtitle">
Convert each PDF page into a TIFF image. Convert each page of a PDF file into a TIFF image.
</p> </p>
<div <div
id="drop-zone" id="drop-zone"
+3 -2
View File
@@ -120,10 +120,11 @@
class="text-2xl font-bold text-white mb-2" class="text-2xl font-bold text-white mb-2"
data-i18n="tools:pdfToWebp.name" data-i18n="tools:pdfToWebp.name"
> >
PDF to WebP Pdf To Webp Converter Free Online - Convert Files Fast
</h1> </h1>
<p class="text-gray-400 mb-6" data-i18n="tools:pdfToWebp.subtitle"> <p class="text-gray-400 mb-6" data-i18n="tools:pdfToWebp.subtitle">
Convert each PDF page into a WebP image. Convert each page of a PDF file into a modern WebP image format with
smaller file sizes.
</p> </p>
<div <div
+3 -2
View File
@@ -120,10 +120,11 @@
class="text-2xl font-bold text-white mb-2" class="text-2xl font-bold text-white mb-2"
data-i18n="tools:pdfsToZip.name" data-i18n="tools:pdfsToZip.name"
> >
PDFs to ZIP Pdf To Zip Converter Free Online - Convert Files Fast
</h1> </h1>
<p class="text-gray-400 mb-6" data-i18n="tools:pdfsToZip.subtitle"> <p class="text-gray-400 mb-6" data-i18n="tools:pdfsToZip.subtitle">
Package multiple PDF files into a ZIP archive. Package multiple PDF files into a single ZIP archive for easy sharing
and storage.
</p> </p>
<div <div
+2 -2
View File
@@ -120,10 +120,10 @@
class="text-2xl font-bold text-white mb-2" class="text-2xl font-bold text-white mb-2"
data-i18n="tools:pngToPdf.name" data-i18n="tools:pngToPdf.name"
> >
PNG to PDF PNG to PDF Converter Free - Convert Images Fast
</h1> </h1>
<p class="text-gray-400 mb-6" data-i18n="tools:pngToPdf.subtitle"> <p class="text-gray-400 mb-6" data-i18n="tools:pngToPdf.subtitle">
Create a PDF from one or more PNG images. Convert one or more PNG images into a single PDF file.
</p> </p>
<!-- Drop Zone --> <!-- Drop Zone -->
+3 -2
View File
@@ -120,10 +120,11 @@
class="text-2xl font-bold text-white mb-2" class="text-2xl font-bold text-white mb-2"
data-i18n="tools:posterizePdf.name" data-i18n="tools:posterizePdf.name"
> >
Posterize PDF Posterize Pdf Free Online - Fast & Secure
</h1> </h1>
<p class="text-gray-400 mb-6" data-i18n="tools:posterizePdf.subtitle"> <p class="text-gray-400 mb-6" data-i18n="tools:posterizePdf.subtitle">
Split a large page into multiple smaller pages. Split pages into multiple smaller sheets to print as a poster.
Navigate the preview and see the grid update based on your settings.
</p> </p>
<div <div
+1 -1
View File
@@ -134,7 +134,7 @@
class="text-2xl font-bold text-white mb-2" class="text-2xl font-bold text-white mb-2"
data-i18n="tools:powerpointToPdf.name" data-i18n="tools:powerpointToPdf.name"
> >
PowerPoint to PDF PowerPoint to PDF Converter - Convert PPT Free
</h1> </h1>
<p <p
class="text-gray-400 mb-6" class="text-gray-400 mb-6"
+3 -2
View File
@@ -134,13 +134,14 @@
class="text-2xl font-bold text-white mb-2" class="text-2xl font-bold text-white mb-2"
data-i18n="tools:preparePdfForAi.name" data-i18n="tools:preparePdfForAi.name"
> >
Prepare PDF for AI Prepare Pdf For Ai Free Online - Fast & Secure
</h1> </h1>
<p <p
class="text-gray-400 mb-6" class="text-gray-400 mb-6"
data-i18n="tools:preparePdfForAi.subtitle" data-i18n="tools:preparePdfForAi.subtitle"
> >
Extract PDF content as LlamaIndex JSON for RAG/LLM pipelines. Extract PDF content as LlamaIndex-compatible JSON documents. Perfect
for RAG pipelines, LangChain, and other LLM frameworks.
</p> </p>
<div <div
+1 -1
View File
@@ -120,7 +120,7 @@
class="text-2xl font-bold text-white mb-2" class="text-2xl font-bold text-white mb-2"
data-i18n="tools:psdToPdf.name" data-i18n="tools:psdToPdf.name"
> >
PSD to PDF Psd To Pdf Converter Free Online - Convert Files Fast
</h1> </h1>
<p class="text-gray-400 mb-6" data-i18n="tools:psdToPdf.subtitle"> <p class="text-gray-400 mb-6" data-i18n="tools:psdToPdf.subtitle">
Convert Adobe Photoshop (PSD) files to PDF format. Supports multiple Convert Adobe Photoshop (PSD) files to PDF format. Supports multiple
+1 -1
View File
@@ -120,7 +120,7 @@
class="text-2xl font-bold text-white mb-2" class="text-2xl font-bold text-white mb-2"
data-i18n="tools:pubToPdf.name" data-i18n="tools:pubToPdf.name"
> >
PUB to PDF Pub To Pdf Converter Free Online - Convert Files Fast
</h1> </h1>
<p class="text-gray-400 mb-6" data-i18n="tools:pubToPdf.subtitle"> <p class="text-gray-400 mb-6" data-i18n="tools:pubToPdf.subtitle">
Convert Microsoft Publisher (PUB) files to PDF format. Supports Convert Microsoft Publisher (PUB) files to PDF format. Supports
+3 -3
View File
@@ -120,11 +120,11 @@
class="text-2xl font-bold text-white mb-2" class="text-2xl font-bold text-white mb-2"
data-i18n="tools:rasterizePdf.name" data-i18n="tools:rasterizePdf.name"
> >
Rasterize PDF Rasterize Pdf Free Online - Fast & Secure
</h1> </h1>
<p class="text-gray-400 mb-6" data-i18n="tools:rasterizePdf.subtitle"> <p class="text-gray-400 mb-6" data-i18n="tools:rasterizePdf.subtitle">
Convert PDF to image-based PDF. Flatten layers and remove selectable Convert vector graphics and text to images. Useful for flattening
text. layers, removing selectable text, or creating print-ready files.
</p> </p>
<div <div
+2 -2
View File
@@ -134,13 +134,13 @@
class="text-2xl font-bold text-white mb-2" class="text-2xl font-bold text-white mb-2"
data-i18n="tools:removeAnnotations.name" data-i18n="tools:removeAnnotations.name"
> >
Remove Annotations Remove Annotations Free Online - Fast & Secure
</h1> </h1>
<p <p
class="text-gray-400 mb-6" class="text-gray-400 mb-6"
data-i18n="tools:removeAnnotations.subtitle" data-i18n="tools:removeAnnotations.subtitle"
> >
Strip comments, highlights, and links. Remove all comments, highlights, and markup from your PDF document.
</p> </p>
<div <div
+3 -2
View File
@@ -134,13 +134,14 @@
class="text-2xl font-bold text-white mb-2" class="text-2xl font-bold text-white mb-2"
data-i18n="tools:removeBlankPages.name" data-i18n="tools:removeBlankPages.name"
> >
Remove Blank Pages Remove Blank Pages Free Online - Fast & Secure
</h1> </h1>
<p <p
class="text-gray-400 mb-6" class="text-gray-400 mb-6"
data-i18n="tools:removeBlankPages.subtitle" data-i18n="tools:removeBlankPages.subtitle"
> >
Automatically detect and delete blank pages. Automatically detect and remove all blank pages from your PDF
document.
</p> </p>
<div <div
+3 -2
View File
@@ -132,10 +132,11 @@
class="text-2xl font-bold text-white mb-2" class="text-2xl font-bold text-white mb-2"
data-i18n="tools:removeMetadata.name" data-i18n="tools:removeMetadata.name"
> >
Remove Metadata Remove Metadata Free Online - Fast & Secure
</h1> </h1>
<p class="text-gray-400 mb-6" data-i18n="tools:removeMetadata.subtitle"> <p class="text-gray-400 mb-6" data-i18n="tools:removeMetadata.subtitle">
Strip hidden data from your PDF. Strip all hidden data from your PDF including author, title, creation
date, and XMP metadata.
</p> </p>
<div <div
+3 -3
View File
@@ -136,14 +136,14 @@
class="text-2xl font-bold text-white mb-2" class="text-2xl font-bold text-white mb-2"
data-i18n="tools:removeRestrictions.name" data-i18n="tools:removeRestrictions.name"
> >
Remove Restrictions Remove Restrictions Free Online - Fast & Secure
</h1> </h1>
<p <p
class="text-gray-400 mb-6" class="text-gray-400 mb-6"
data-i18n="tools:removeRestrictions.subtitle" data-i18n="tools:removeRestrictions.subtitle"
> >
Remove password protection and security restrictions associated with Remove password protection and security restrictions from PDF files.
digitally signed PDF files. Make PDFs fully editable and printable.
</p> </p>
<div <div
+1 -1
View File
@@ -115,7 +115,7 @@
class="text-2xl font-bold text-white mb-2" class="text-2xl font-bold text-white mb-2"
data-i18n="tools:repairPdf.name" data-i18n="tools:repairPdf.name"
> >
Repair PDF Repair Pdf Free Online - Fast & Secure
</h1> </h1>
<p class="text-gray-400 mb-6" data-i18n="tools:repairPdf.subtitle"> <p class="text-gray-400 mb-6" data-i18n="tools:repairPdf.subtitle">
Recover data from corrupted or damaged PDF files. Recover data from corrupted or damaged PDF files.
+3 -2
View File
@@ -120,10 +120,11 @@
class="text-2xl font-bold text-white mb-2" class="text-2xl font-bold text-white mb-2"
data-i18n="tools:reversePages.name" data-i18n="tools:reversePages.name"
> >
Reverse Pages Reverse Pages Free Online - Fast & Secure
</h1> </h1>
<p class="text-gray-400 mb-6" data-i18n="tools:reversePages.subtitle"> <p class="text-gray-400 mb-6" data-i18n="tools:reversePages.subtitle">
Flip the order of all pages in your document. Flip the order of all pages in your PDF document. The last page
becomes the first, and so on.
</p> </p>
<!-- Drop Zone for PDF Upload --> <!-- Drop Zone for PDF Upload -->
+3 -2
View File
@@ -119,10 +119,11 @@
class="text-2xl font-bold text-white mb-2" class="text-2xl font-bold text-white mb-2"
data-i18n="tools:rotateCustom.name" data-i18n="tools:rotateCustom.name"
> >
Rotate by Custom Degrees Rotate Custom Free Online - Fast & Secure
</h1> </h1>
<p class="text-gray-400 mb-6" data-i18n="tools:rotateCustom.subtitle"> <p class="text-gray-400 mb-6" data-i18n="tools:rotateCustom.subtitle">
Rotate pages by any custom angle. Rotate pages by any custom angle. Enter degrees (positive =
counter-clockwise, negative = clockwise).
</p> </p>
<div <div
+3 -2
View File
@@ -120,10 +120,11 @@
class="text-2xl font-bold text-white mb-2" class="text-2xl font-bold text-white mb-2"
data-i18n="tools:rotatePdf.name" data-i18n="tools:rotatePdf.name"
> >
Rotate PDF Rotate PDF Pages Free - Turn PDFs Online
</h1> </h1>
<p class="text-gray-400 mb-6" data-i18n="tools:rotatePdf.subtitle"> <p class="text-gray-400 mb-6" data-i18n="tools:rotatePdf.subtitle">
Turn pages in 90-degree increments. Rotate individual pages or all pages at once. Click on page thumbnails
to rotate them.
</p> </p>
<div <div
+3 -2
View File
@@ -120,10 +120,11 @@
class="text-2xl font-bold text-white mb-2" class="text-2xl font-bold text-white mb-2"
data-i18n="tools:rtfToPdf.name" data-i18n="tools:rtfToPdf.name"
> >
RTF to PDF Rtf To Pdf Converter Free Online - Convert Files Fast
</h1> </h1>
<p class="text-gray-400 mb-6" data-i18n="tools:rtfToPdf.subtitle"> <p class="text-gray-400 mb-6" data-i18n="tools:rtfToPdf.subtitle">
Convert Rich Text Format documents to PDF. Supports multiple files. Convert RTF (Rich Text Format) document files to PDF format. Supports
multiple files.
</p> </p>
<div <div
+3 -2
View File
@@ -120,10 +120,11 @@
class="text-2xl font-bold text-white mb-2" class="text-2xl font-bold text-white mb-2"
data-i18n="tools:sanitizePdf.name" data-i18n="tools:sanitizePdf.name"
> >
Sanitize PDF Sanitize Pdf Free Online - Fast & Secure
</h1> </h1>
<p class="text-gray-400 mb-6" data-i18n="tools:sanitizePdf.subtitle"> <p class="text-gray-400 mb-6" data-i18n="tools:sanitizePdf.subtitle">
Remove metadata, annotations, scripts, and more. Remove sensitive content from PDF files. Clean metadata, JavaScript,
embedded files, and more.
</p> </p>
<div <div
+1 -1
View File
@@ -119,7 +119,7 @@
class="text-2xl font-bold text-white mb-2" class="text-2xl font-bold text-white mb-2"
data-i18n="tools:scannerEffect.name" data-i18n="tools:scannerEffect.name"
> >
Scanner Effect Scanner Effect Free Online - Make PDFs Look Scanned
</h1> </h1>
<p class="text-gray-400 mb-6" data-i18n="tools:scannerEffect.subtitle"> <p class="text-gray-400 mb-6" data-i18n="tools:scannerEffect.subtitle">
Make your PDF look like a scanned document. Make your PDF look like a scanned document.
+4 -2
View File
@@ -123,10 +123,12 @@
class="text-2xl font-bold text-white mb-2" class="text-2xl font-bold text-white mb-2"
data-i18n="tools:signPdf.name" data-i18n="tools:signPdf.name"
> >
Sign PDF Sign PDF Free Online - Add Digital Signature
</h1> </h1>
<p class="text-gray-400 mb-6" data-i18n="tools:signPdf.subtitle"> <p class="text-gray-400 mb-6" data-i18n="tools:signPdf.subtitle">
Draw, type, or upload your signature. Upload a PDF to sign it using the built-in PDF.js viewer. Look for the
<strong>signature / pen tool</strong> in the toolbar to add your
signature.
</p> </p>
<!-- Drop Zone --> <!-- Drop Zone -->

Some files were not shown because too many files have changed in this diff Show More