mirror of
https://github.com/Stirling-Tools/Stirling-PDF.git
synced 2026-09-03 05:10:16 +03:00
Compare commits
40
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
39710b6bda | ||
|
|
58e10dd4c7 | ||
|
|
aa9af3cefa | ||
|
|
9acc51285d | ||
|
|
94e3b44f13 | ||
|
|
1c76097d64 | ||
|
|
8188535847 | ||
|
|
552cd48025 | ||
|
|
8557411672 | ||
|
|
275a8cbe80 | ||
|
|
36326f8b66 | ||
|
|
c99accc33f | ||
|
|
b0f25bf21d | ||
|
|
d52a0c0b19 | ||
|
|
d6d0001ea1 | ||
|
|
2edba48529 | ||
|
|
d69fecf587 | ||
|
|
c8bf43ea6b | ||
|
|
4a5f7e9c49 | ||
|
|
de4724a291 | ||
|
|
2c491c6bf4 | ||
|
|
306117ed4b | ||
|
|
1ea4b137f1 | ||
|
|
3855a3ccc4 | ||
|
|
3e198309f5 | ||
|
|
2525e70abc | ||
|
|
7fe93674a0 | ||
|
|
b978f1848a | ||
|
|
0692fe97d0 | ||
|
|
365c0a7829 | ||
|
|
3179fc29d4 | ||
|
|
6a3fa31317 | ||
|
|
2fdae11a36 | ||
|
|
75ff6ed441 | ||
|
|
a86ece0473 | ||
|
|
f6063c1e74 | ||
|
|
fad16f6ed0 | ||
|
|
fe23952828 | ||
|
|
1767b755b6 | ||
|
|
1bc8e7613f |
@@ -1262,10 +1262,44 @@
|
||||
"addImage": {
|
||||
"tags": "img,jpg,picture,photo",
|
||||
"title": "Add Image",
|
||||
"header": "Add image to PDF",
|
||||
"everyPage": "Every Page?",
|
||||
"upload": "Add image",
|
||||
"submit": "Add image"
|
||||
"header": "Add images to PDFs",
|
||||
"image": {
|
||||
"name": "Image",
|
||||
"placeholder": "Upload an image",
|
||||
"label": "Image file"
|
||||
},
|
||||
"steps": {
|
||||
"configure": "Configure Image"
|
||||
},
|
||||
"step": {
|
||||
"createDesc": "Upload the image you want to add",
|
||||
"place": "Place image",
|
||||
"placeDesc": "Click on the PDF to add your image"
|
||||
},
|
||||
"instructions": {
|
||||
"title": "How to add images",
|
||||
"text": "After uploading your image above, click anywhere on the PDF to place it.",
|
||||
"paused": "Placement paused",
|
||||
"resumeHint": "Resume placement to click and add your image.",
|
||||
"noSignature": "Upload an image above to enable placement."
|
||||
},
|
||||
"mode": {
|
||||
"move": "Move Image",
|
||||
"place": "Place Image",
|
||||
"pause": "Pause placement",
|
||||
"resume": "Resume placement"
|
||||
},
|
||||
"results": {
|
||||
"title": "Add Image Results"
|
||||
},
|
||||
"error": {
|
||||
"failed": "An error occurred while adding image to the PDF."
|
||||
},
|
||||
"saved": {
|
||||
"defaultLabel": "Image",
|
||||
"defaultImageLabel": "Uploaded image"
|
||||
},
|
||||
"applySignatures": "Apply Images"
|
||||
},
|
||||
"attachments": {
|
||||
"tags": "attachments,add,remove,embed,file",
|
||||
@@ -5799,6 +5833,7 @@
|
||||
"error": {
|
||||
"failed": "An error occurred while adding text to the PDF."
|
||||
},
|
||||
"tags": "text,annotation,label"
|
||||
"tags": "text,annotation,label",
|
||||
"applySignatures": "Apply Text"
|
||||
}
|
||||
}
|
||||
@@ -43,16 +43,18 @@ export const ImageUploader: React.FC<ImageUploaderProps> = ({
|
||||
<Stack gap="sm">
|
||||
<PrivateContent>
|
||||
<FileInput
|
||||
label={label || t('sign.image.label', 'Upload signature image')}
|
||||
label={label}
|
||||
placeholder={placeholder || t('sign.image.placeholder', 'Select image file')}
|
||||
accept="image/*"
|
||||
onChange={handleImageChange}
|
||||
disabled={disabled}
|
||||
/>
|
||||
</PrivateContent>
|
||||
<Text size="sm" c="dimmed">
|
||||
{hint || t('sign.image.hint', 'Upload an image of your signature')}
|
||||
</Text>
|
||||
{hint && (
|
||||
<Text size="sm" c="dimmed">
|
||||
{hint}
|
||||
</Text>
|
||||
)}
|
||||
</Stack>
|
||||
);
|
||||
};
|
||||
@@ -83,7 +83,7 @@ const EmbedPdfViewerContent = ({
|
||||
// Check if we're in signature mode OR viewer annotation mode
|
||||
const { selectedTool } = useNavigationState();
|
||||
// Tools that use the stamp/signature placement system with hover preview
|
||||
const isSignatureMode = selectedTool === 'sign' || selectedTool === 'addText';
|
||||
const isSignatureMode = selectedTool === 'sign' || selectedTool === 'addText' || selectedTool === 'addImage';
|
||||
|
||||
// Enable annotations when: in sign mode, OR annotation mode is active, OR we want to show existing annotations
|
||||
const shouldEnableAnnotations = isSignatureMode || isAnnotationMode || isAnnotationsVisible;
|
||||
|
||||
@@ -47,6 +47,7 @@ import ChangeMetadata from "@app/tools/ChangeMetadata";
|
||||
import Crop from "@app/tools/Crop";
|
||||
import Sign from "@app/tools/Sign";
|
||||
import AddText from "@app/tools/AddText";
|
||||
import AddImage from "@app/tools/AddImage";
|
||||
import { compressOperationConfig } from "@app/hooks/tools/compress/useCompressOperation";
|
||||
import { splitOperationConfig } from "@app/hooks/tools/split/useSplitOperation";
|
||||
import { addPasswordOperationConfig } from "@app/hooks/tools/addPassword/useAddPasswordOperation";
|
||||
@@ -213,6 +214,18 @@ export function useTranslatedToolCatalog(): TranslatedToolCatalog {
|
||||
synonyms: getSynonyms(t, 'addText'),
|
||||
supportsAutomate: false,
|
||||
},
|
||||
addImage: {
|
||||
icon: <LocalIcon icon="image-rounded" width="1.5rem" height="1.5rem" />,
|
||||
name: t('home.addImage.title', 'Add Image'),
|
||||
component: AddImage,
|
||||
description: t('home.addImage.desc', 'Add images anywhere in your PDF'),
|
||||
categoryId: ToolCategoryId.STANDARD_TOOLS,
|
||||
subcategoryId: SubcategoryId.GENERAL,
|
||||
operationConfig: signOperationConfig,
|
||||
automationSettings: null,
|
||||
synonyms: getSynonyms(t, 'addImage'),
|
||||
supportsAutomate: false,
|
||||
},
|
||||
|
||||
// Document Security
|
||||
|
||||
@@ -717,17 +730,6 @@ export function useTranslatedToolCatalog(): TranslatedToolCatalog {
|
||||
automationSettings: ReplaceColorSettings,
|
||||
synonyms: getSynonyms(t, "replaceColor"),
|
||||
},
|
||||
addImage: {
|
||||
icon: <LocalIcon icon="image-rounded" width="1.5rem" height="1.5rem" />,
|
||||
name: t("home.addImage.title", "Add Image"),
|
||||
component: null,
|
||||
description: t("home.addImage.desc", "Add images to PDF documents"),
|
||||
categoryId: ToolCategoryId.ADVANCED_TOOLS,
|
||||
subcategoryId: SubcategoryId.ADVANCED_FORMATTING,
|
||||
endpoints: ["add-image"],
|
||||
synonyms: getSynonyms(t, "addImage"),
|
||||
automationSettings: null
|
||||
},
|
||||
scannerEffect: {
|
||||
icon: <LocalIcon icon="scanner-rounded" width="1.5rem" height="1.5rem" />,
|
||||
name: t("home.scannerEffect.title", "Scanner Effect"),
|
||||
|
||||
@@ -0,0 +1,13 @@
|
||||
import { createStampTool } from '@app/tools/stamp/createStampTool';
|
||||
|
||||
// AddImage allows users to place image-only stamps
|
||||
const AddImage = createStampTool({
|
||||
toolId: 'addImage',
|
||||
translationScope: 'addImage',
|
||||
allowedSignatureSources: ['image'],
|
||||
defaultSignatureSource: 'image',
|
||||
defaultSignatureType: 'image',
|
||||
enableApplyAction: true,
|
||||
});
|
||||
|
||||
export default AddImage;
|
||||
@@ -7,6 +7,7 @@ const AddText = createStampTool({
|
||||
allowedSignatureSources: ['text'],
|
||||
defaultSignatureSource: 'text',
|
||||
defaultSignatureType: 'text',
|
||||
enableApplyAction: true,
|
||||
});
|
||||
|
||||
export default AddText;
|
||||
|
||||
Reference in New Issue
Block a user