From bdb3c887f360d5fd61d81548a8bfa03e59b9fc6f Mon Sep 17 00:00:00 2001
From: Anthony Stirling <77850077+Frooodle@users.noreply.github.com>
Date: Wed, 3 Dec 2025 12:55:34 +0000
Subject: [PATCH] opensource text editor (#5146)
# Description of Changes
---
## Checklist
### General
- [ ] I have read the [Contribution
Guidelines](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/CONTRIBUTING.md)
- [ ] I have read the [Stirling-PDF Developer
Guide](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/devGuide/DeveloperGuide.md)
(if applicable)
- [ ] I have read the [How to add new languages to
Stirling-PDF](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/devGuide/HowToAddNewLanguage.md)
(if applicable)
- [ ] I have performed a self-review of my own code
- [ ] My changes generate no new warnings
### Documentation
- [ ] I have updated relevant docs on [Stirling-PDF's doc
repo](https://github.com/Stirling-Tools/Stirling-Tools.github.io/blob/main/docs/)
(if functionality has heavily changed)
- [ ] I have read the section [Add New Translation
Tags](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/devGuide/HowToAddNewLanguage.md#add-new-translation-tags)
(for new translation tags only)
### UI Changes (if applicable)
- [ ] Screenshots or videos demonstrating the UI changes are attached
(e.g., as comments or direct attachments in the PR)
### Testing (if applicable)
- [ ] I have tested my changes locally. Refer to the [Testing
Guide](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/devGuide/DeveloperGuide.md#6-testing)
for more details.
---
.../converters/ConvertPdfJsonController.java | 2 --
.../model/api/PdfJsonConversionProgress.java | 0
.../SPDF/model/json/PdfJsonAnnotation.java | 0
.../SPDF/model/json/PdfJsonCosValue.java | 0
.../SPDF/model/json/PdfJsonDocument.java | 0
.../model/json/PdfJsonDocumentMetadata.java | 0
.../software/SPDF/model/json/PdfJsonFont.java | 0
.../model/json/PdfJsonFontCidSystemInfo.java | 0
.../json/PdfJsonFontConversionCandidate.java | 0
.../json/PdfJsonFontConversionStatus.java | 0
.../model/json/PdfJsonFontType3Glyph.java | 0
.../SPDF/model/json/PdfJsonFormField.java | 0
.../SPDF/model/json/PdfJsonImageElement.java | 0
.../SPDF/model/json/PdfJsonMetadata.java | 0
.../software/SPDF/model/json/PdfJsonPage.java | 0
.../SPDF/model/json/PdfJsonPageDimension.java | 0
.../SPDF/model/json/PdfJsonStream.java | 0
.../SPDF/model/json/PdfJsonTextColor.java | 0
.../SPDF/model/json/PdfJsonTextElement.java | 0
.../service/PdfJsonConversionService.java | 0
.../SPDF/service/PdfJsonCosMapper.java | 0
.../service/PdfJsonFallbackFontService.java | 0
.../pdfjson/JobOwnershipServiceImpl.java | 0
.../pdfjson/NoOpJobOwnershipService.java | 0
.../service/pdfjson/PdfJsonFontService.java | 0
.../service/pdfjson/PdfJsonImageService.java | 0
.../pdfjson/PdfJsonMetadataService.java | 0
.../pdfjson/PdfLazyLoadingService.java | 0
.../pdfjson/type3/Type3ConversionRequest.java | 0
.../type3/Type3ConversionStrategy.java | 0
.../type3/Type3FontConversionService.java | 0
.../type3/Type3FontSignatureCalculator.java | 0
.../pdfjson/type3/Type3GlyphContext.java | 0
.../pdfjson/type3/Type3GlyphExtractor.java | 0
.../pdfjson/type3/Type3GraphicsEngine.java | 0
.../pdfjson/type3/Type3LibraryStrategy.java | 0
.../type3/library/Type3FontLibrary.java | 0
.../type3/library/Type3FontLibraryEntry.java | 0
.../type3/library/Type3FontLibraryMatch.java | 0
.../library/Type3FontLibraryPayload.java | 0
.../type3/model/Type3GlyphOutline.java | 0
.../type3/tool/Type3SignatureTool.java | 0
.../tools/pdfTextEditor/FontStatusPanel.tsx | 0
.../tools/pdfTextEditor/PdfTextEditorView.tsx | 12 +++++--
.../core/data/useTranslatedToolRegistry.tsx | 18 ++++++++++
.../tools/pdfTextEditor/PdfTextEditor.tsx | 2 +-
.../tools/pdfTextEditor/fontAnalysis.ts | 0
.../tools/pdfTextEditor/pdfTextEditorTypes.ts | 0
.../tools/pdfTextEditor/pdfTextEditorUtils.ts | 0
frontend/src/core/types/toolId.ts | 1 +
frontend/src/core/utils/urlMapping.ts | 1 +
.../data/useProprietaryToolRegistry.tsx | 33 ++-----------------
.../proprietary/types/proprietaryToolId.ts | 1 -
frontend/src/proprietary/utils/urlMapping.ts | 4 +--
54 files changed, 33 insertions(+), 41 deletions(-)
rename app/{proprietary => core}/src/main/java/stirling/software/SPDF/controller/api/converters/ConvertPdfJsonController.java (99%)
rename app/{proprietary => core}/src/main/java/stirling/software/SPDF/model/api/PdfJsonConversionProgress.java (100%)
rename app/{proprietary => core}/src/main/java/stirling/software/SPDF/model/json/PdfJsonAnnotation.java (100%)
rename app/{proprietary => core}/src/main/java/stirling/software/SPDF/model/json/PdfJsonCosValue.java (100%)
rename app/{proprietary => core}/src/main/java/stirling/software/SPDF/model/json/PdfJsonDocument.java (100%)
rename app/{proprietary => core}/src/main/java/stirling/software/SPDF/model/json/PdfJsonDocumentMetadata.java (100%)
rename app/{proprietary => core}/src/main/java/stirling/software/SPDF/model/json/PdfJsonFont.java (100%)
rename app/{proprietary => core}/src/main/java/stirling/software/SPDF/model/json/PdfJsonFontCidSystemInfo.java (100%)
rename app/{proprietary => core}/src/main/java/stirling/software/SPDF/model/json/PdfJsonFontConversionCandidate.java (100%)
rename app/{proprietary => core}/src/main/java/stirling/software/SPDF/model/json/PdfJsonFontConversionStatus.java (100%)
rename app/{proprietary => core}/src/main/java/stirling/software/SPDF/model/json/PdfJsonFontType3Glyph.java (100%)
rename app/{proprietary => core}/src/main/java/stirling/software/SPDF/model/json/PdfJsonFormField.java (100%)
rename app/{proprietary => core}/src/main/java/stirling/software/SPDF/model/json/PdfJsonImageElement.java (100%)
rename app/{proprietary => core}/src/main/java/stirling/software/SPDF/model/json/PdfJsonMetadata.java (100%)
rename app/{proprietary => core}/src/main/java/stirling/software/SPDF/model/json/PdfJsonPage.java (100%)
rename app/{proprietary => core}/src/main/java/stirling/software/SPDF/model/json/PdfJsonPageDimension.java (100%)
rename app/{proprietary => core}/src/main/java/stirling/software/SPDF/model/json/PdfJsonStream.java (100%)
rename app/{proprietary => core}/src/main/java/stirling/software/SPDF/model/json/PdfJsonTextColor.java (100%)
rename app/{proprietary => core}/src/main/java/stirling/software/SPDF/model/json/PdfJsonTextElement.java (100%)
rename app/{proprietary => core}/src/main/java/stirling/software/SPDF/service/PdfJsonConversionService.java (100%)
rename app/{proprietary => core}/src/main/java/stirling/software/SPDF/service/PdfJsonCosMapper.java (100%)
rename app/{proprietary => core}/src/main/java/stirling/software/SPDF/service/PdfJsonFallbackFontService.java (100%)
rename app/{proprietary => core}/src/main/java/stirling/software/SPDF/service/pdfjson/JobOwnershipServiceImpl.java (100%)
rename app/{proprietary => core}/src/main/java/stirling/software/SPDF/service/pdfjson/NoOpJobOwnershipService.java (100%)
rename app/{proprietary => core}/src/main/java/stirling/software/SPDF/service/pdfjson/PdfJsonFontService.java (100%)
rename app/{proprietary => core}/src/main/java/stirling/software/SPDF/service/pdfjson/PdfJsonImageService.java (100%)
rename app/{proprietary => core}/src/main/java/stirling/software/SPDF/service/pdfjson/PdfJsonMetadataService.java (100%)
rename app/{proprietary => core}/src/main/java/stirling/software/SPDF/service/pdfjson/PdfLazyLoadingService.java (100%)
rename app/{proprietary => core}/src/main/java/stirling/software/SPDF/service/pdfjson/type3/Type3ConversionRequest.java (100%)
rename app/{proprietary => core}/src/main/java/stirling/software/SPDF/service/pdfjson/type3/Type3ConversionStrategy.java (100%)
rename app/{proprietary => core}/src/main/java/stirling/software/SPDF/service/pdfjson/type3/Type3FontConversionService.java (100%)
rename app/{proprietary => core}/src/main/java/stirling/software/SPDF/service/pdfjson/type3/Type3FontSignatureCalculator.java (100%)
rename app/{proprietary => core}/src/main/java/stirling/software/SPDF/service/pdfjson/type3/Type3GlyphContext.java (100%)
rename app/{proprietary => core}/src/main/java/stirling/software/SPDF/service/pdfjson/type3/Type3GlyphExtractor.java (100%)
rename app/{proprietary => core}/src/main/java/stirling/software/SPDF/service/pdfjson/type3/Type3GraphicsEngine.java (100%)
rename app/{proprietary => core}/src/main/java/stirling/software/SPDF/service/pdfjson/type3/Type3LibraryStrategy.java (100%)
rename app/{proprietary => core}/src/main/java/stirling/software/SPDF/service/pdfjson/type3/library/Type3FontLibrary.java (100%)
rename app/{proprietary => core}/src/main/java/stirling/software/SPDF/service/pdfjson/type3/library/Type3FontLibraryEntry.java (100%)
rename app/{proprietary => core}/src/main/java/stirling/software/SPDF/service/pdfjson/type3/library/Type3FontLibraryMatch.java (100%)
rename app/{proprietary => core}/src/main/java/stirling/software/SPDF/service/pdfjson/type3/library/Type3FontLibraryPayload.java (100%)
rename app/{proprietary => core}/src/main/java/stirling/software/SPDF/service/pdfjson/type3/model/Type3GlyphOutline.java (100%)
rename app/{proprietary => core}/src/main/java/stirling/software/SPDF/service/pdfjson/type3/tool/Type3SignatureTool.java (100%)
rename frontend/src/{proprietary => core}/components/tools/pdfTextEditor/FontStatusPanel.tsx (100%)
rename frontend/src/{proprietary => core}/components/tools/pdfTextEditor/PdfTextEditorView.tsx (99%)
rename frontend/src/{proprietary => core}/tools/pdfTextEditor/PdfTextEditor.tsx (99%)
rename frontend/src/{proprietary => core}/tools/pdfTextEditor/fontAnalysis.ts (100%)
rename frontend/src/{proprietary => core}/tools/pdfTextEditor/pdfTextEditorTypes.ts (100%)
rename frontend/src/{proprietary => core}/tools/pdfTextEditor/pdfTextEditorUtils.ts (100%)
diff --git a/app/proprietary/src/main/java/stirling/software/SPDF/controller/api/converters/ConvertPdfJsonController.java b/app/core/src/main/java/stirling/software/SPDF/controller/api/converters/ConvertPdfJsonController.java
similarity index 99%
rename from app/proprietary/src/main/java/stirling/software/SPDF/controller/api/converters/ConvertPdfJsonController.java
rename to app/core/src/main/java/stirling/software/SPDF/controller/api/converters/ConvertPdfJsonController.java
index ef29c72e5..3b9f98c8c 100644
--- a/app/proprietary/src/main/java/stirling/software/SPDF/controller/api/converters/ConvertPdfJsonController.java
+++ b/app/core/src/main/java/stirling/software/SPDF/controller/api/converters/ConvertPdfJsonController.java
@@ -31,12 +31,10 @@ import stirling.software.common.model.api.PDFFile;
import stirling.software.common.service.JobOwnershipService;
import stirling.software.common.util.ExceptionUtils;
import stirling.software.common.util.WebResponseUtils;
-import stirling.software.proprietary.security.config.PremiumEndpoint;
@Slf4j
@ConvertApi
@RequiredArgsConstructor
-@PremiumEndpoint
public class ConvertPdfJsonController {
private final PdfJsonConversionService pdfJsonConversionService;
diff --git a/app/proprietary/src/main/java/stirling/software/SPDF/model/api/PdfJsonConversionProgress.java b/app/core/src/main/java/stirling/software/SPDF/model/api/PdfJsonConversionProgress.java
similarity index 100%
rename from app/proprietary/src/main/java/stirling/software/SPDF/model/api/PdfJsonConversionProgress.java
rename to app/core/src/main/java/stirling/software/SPDF/model/api/PdfJsonConversionProgress.java
diff --git a/app/proprietary/src/main/java/stirling/software/SPDF/model/json/PdfJsonAnnotation.java b/app/core/src/main/java/stirling/software/SPDF/model/json/PdfJsonAnnotation.java
similarity index 100%
rename from app/proprietary/src/main/java/stirling/software/SPDF/model/json/PdfJsonAnnotation.java
rename to app/core/src/main/java/stirling/software/SPDF/model/json/PdfJsonAnnotation.java
diff --git a/app/proprietary/src/main/java/stirling/software/SPDF/model/json/PdfJsonCosValue.java b/app/core/src/main/java/stirling/software/SPDF/model/json/PdfJsonCosValue.java
similarity index 100%
rename from app/proprietary/src/main/java/stirling/software/SPDF/model/json/PdfJsonCosValue.java
rename to app/core/src/main/java/stirling/software/SPDF/model/json/PdfJsonCosValue.java
diff --git a/app/proprietary/src/main/java/stirling/software/SPDF/model/json/PdfJsonDocument.java b/app/core/src/main/java/stirling/software/SPDF/model/json/PdfJsonDocument.java
similarity index 100%
rename from app/proprietary/src/main/java/stirling/software/SPDF/model/json/PdfJsonDocument.java
rename to app/core/src/main/java/stirling/software/SPDF/model/json/PdfJsonDocument.java
diff --git a/app/proprietary/src/main/java/stirling/software/SPDF/model/json/PdfJsonDocumentMetadata.java b/app/core/src/main/java/stirling/software/SPDF/model/json/PdfJsonDocumentMetadata.java
similarity index 100%
rename from app/proprietary/src/main/java/stirling/software/SPDF/model/json/PdfJsonDocumentMetadata.java
rename to app/core/src/main/java/stirling/software/SPDF/model/json/PdfJsonDocumentMetadata.java
diff --git a/app/proprietary/src/main/java/stirling/software/SPDF/model/json/PdfJsonFont.java b/app/core/src/main/java/stirling/software/SPDF/model/json/PdfJsonFont.java
similarity index 100%
rename from app/proprietary/src/main/java/stirling/software/SPDF/model/json/PdfJsonFont.java
rename to app/core/src/main/java/stirling/software/SPDF/model/json/PdfJsonFont.java
diff --git a/app/proprietary/src/main/java/stirling/software/SPDF/model/json/PdfJsonFontCidSystemInfo.java b/app/core/src/main/java/stirling/software/SPDF/model/json/PdfJsonFontCidSystemInfo.java
similarity index 100%
rename from app/proprietary/src/main/java/stirling/software/SPDF/model/json/PdfJsonFontCidSystemInfo.java
rename to app/core/src/main/java/stirling/software/SPDF/model/json/PdfJsonFontCidSystemInfo.java
diff --git a/app/proprietary/src/main/java/stirling/software/SPDF/model/json/PdfJsonFontConversionCandidate.java b/app/core/src/main/java/stirling/software/SPDF/model/json/PdfJsonFontConversionCandidate.java
similarity index 100%
rename from app/proprietary/src/main/java/stirling/software/SPDF/model/json/PdfJsonFontConversionCandidate.java
rename to app/core/src/main/java/stirling/software/SPDF/model/json/PdfJsonFontConversionCandidate.java
diff --git a/app/proprietary/src/main/java/stirling/software/SPDF/model/json/PdfJsonFontConversionStatus.java b/app/core/src/main/java/stirling/software/SPDF/model/json/PdfJsonFontConversionStatus.java
similarity index 100%
rename from app/proprietary/src/main/java/stirling/software/SPDF/model/json/PdfJsonFontConversionStatus.java
rename to app/core/src/main/java/stirling/software/SPDF/model/json/PdfJsonFontConversionStatus.java
diff --git a/app/proprietary/src/main/java/stirling/software/SPDF/model/json/PdfJsonFontType3Glyph.java b/app/core/src/main/java/stirling/software/SPDF/model/json/PdfJsonFontType3Glyph.java
similarity index 100%
rename from app/proprietary/src/main/java/stirling/software/SPDF/model/json/PdfJsonFontType3Glyph.java
rename to app/core/src/main/java/stirling/software/SPDF/model/json/PdfJsonFontType3Glyph.java
diff --git a/app/proprietary/src/main/java/stirling/software/SPDF/model/json/PdfJsonFormField.java b/app/core/src/main/java/stirling/software/SPDF/model/json/PdfJsonFormField.java
similarity index 100%
rename from app/proprietary/src/main/java/stirling/software/SPDF/model/json/PdfJsonFormField.java
rename to app/core/src/main/java/stirling/software/SPDF/model/json/PdfJsonFormField.java
diff --git a/app/proprietary/src/main/java/stirling/software/SPDF/model/json/PdfJsonImageElement.java b/app/core/src/main/java/stirling/software/SPDF/model/json/PdfJsonImageElement.java
similarity index 100%
rename from app/proprietary/src/main/java/stirling/software/SPDF/model/json/PdfJsonImageElement.java
rename to app/core/src/main/java/stirling/software/SPDF/model/json/PdfJsonImageElement.java
diff --git a/app/proprietary/src/main/java/stirling/software/SPDF/model/json/PdfJsonMetadata.java b/app/core/src/main/java/stirling/software/SPDF/model/json/PdfJsonMetadata.java
similarity index 100%
rename from app/proprietary/src/main/java/stirling/software/SPDF/model/json/PdfJsonMetadata.java
rename to app/core/src/main/java/stirling/software/SPDF/model/json/PdfJsonMetadata.java
diff --git a/app/proprietary/src/main/java/stirling/software/SPDF/model/json/PdfJsonPage.java b/app/core/src/main/java/stirling/software/SPDF/model/json/PdfJsonPage.java
similarity index 100%
rename from app/proprietary/src/main/java/stirling/software/SPDF/model/json/PdfJsonPage.java
rename to app/core/src/main/java/stirling/software/SPDF/model/json/PdfJsonPage.java
diff --git a/app/proprietary/src/main/java/stirling/software/SPDF/model/json/PdfJsonPageDimension.java b/app/core/src/main/java/stirling/software/SPDF/model/json/PdfJsonPageDimension.java
similarity index 100%
rename from app/proprietary/src/main/java/stirling/software/SPDF/model/json/PdfJsonPageDimension.java
rename to app/core/src/main/java/stirling/software/SPDF/model/json/PdfJsonPageDimension.java
diff --git a/app/proprietary/src/main/java/stirling/software/SPDF/model/json/PdfJsonStream.java b/app/core/src/main/java/stirling/software/SPDF/model/json/PdfJsonStream.java
similarity index 100%
rename from app/proprietary/src/main/java/stirling/software/SPDF/model/json/PdfJsonStream.java
rename to app/core/src/main/java/stirling/software/SPDF/model/json/PdfJsonStream.java
diff --git a/app/proprietary/src/main/java/stirling/software/SPDF/model/json/PdfJsonTextColor.java b/app/core/src/main/java/stirling/software/SPDF/model/json/PdfJsonTextColor.java
similarity index 100%
rename from app/proprietary/src/main/java/stirling/software/SPDF/model/json/PdfJsonTextColor.java
rename to app/core/src/main/java/stirling/software/SPDF/model/json/PdfJsonTextColor.java
diff --git a/app/proprietary/src/main/java/stirling/software/SPDF/model/json/PdfJsonTextElement.java b/app/core/src/main/java/stirling/software/SPDF/model/json/PdfJsonTextElement.java
similarity index 100%
rename from app/proprietary/src/main/java/stirling/software/SPDF/model/json/PdfJsonTextElement.java
rename to app/core/src/main/java/stirling/software/SPDF/model/json/PdfJsonTextElement.java
diff --git a/app/proprietary/src/main/java/stirling/software/SPDF/service/PdfJsonConversionService.java b/app/core/src/main/java/stirling/software/SPDF/service/PdfJsonConversionService.java
similarity index 100%
rename from app/proprietary/src/main/java/stirling/software/SPDF/service/PdfJsonConversionService.java
rename to app/core/src/main/java/stirling/software/SPDF/service/PdfJsonConversionService.java
diff --git a/app/proprietary/src/main/java/stirling/software/SPDF/service/PdfJsonCosMapper.java b/app/core/src/main/java/stirling/software/SPDF/service/PdfJsonCosMapper.java
similarity index 100%
rename from app/proprietary/src/main/java/stirling/software/SPDF/service/PdfJsonCosMapper.java
rename to app/core/src/main/java/stirling/software/SPDF/service/PdfJsonCosMapper.java
diff --git a/app/proprietary/src/main/java/stirling/software/SPDF/service/PdfJsonFallbackFontService.java b/app/core/src/main/java/stirling/software/SPDF/service/PdfJsonFallbackFontService.java
similarity index 100%
rename from app/proprietary/src/main/java/stirling/software/SPDF/service/PdfJsonFallbackFontService.java
rename to app/core/src/main/java/stirling/software/SPDF/service/PdfJsonFallbackFontService.java
diff --git a/app/proprietary/src/main/java/stirling/software/SPDF/service/pdfjson/JobOwnershipServiceImpl.java b/app/core/src/main/java/stirling/software/SPDF/service/pdfjson/JobOwnershipServiceImpl.java
similarity index 100%
rename from app/proprietary/src/main/java/stirling/software/SPDF/service/pdfjson/JobOwnershipServiceImpl.java
rename to app/core/src/main/java/stirling/software/SPDF/service/pdfjson/JobOwnershipServiceImpl.java
diff --git a/app/proprietary/src/main/java/stirling/software/SPDF/service/pdfjson/NoOpJobOwnershipService.java b/app/core/src/main/java/stirling/software/SPDF/service/pdfjson/NoOpJobOwnershipService.java
similarity index 100%
rename from app/proprietary/src/main/java/stirling/software/SPDF/service/pdfjson/NoOpJobOwnershipService.java
rename to app/core/src/main/java/stirling/software/SPDF/service/pdfjson/NoOpJobOwnershipService.java
diff --git a/app/proprietary/src/main/java/stirling/software/SPDF/service/pdfjson/PdfJsonFontService.java b/app/core/src/main/java/stirling/software/SPDF/service/pdfjson/PdfJsonFontService.java
similarity index 100%
rename from app/proprietary/src/main/java/stirling/software/SPDF/service/pdfjson/PdfJsonFontService.java
rename to app/core/src/main/java/stirling/software/SPDF/service/pdfjson/PdfJsonFontService.java
diff --git a/app/proprietary/src/main/java/stirling/software/SPDF/service/pdfjson/PdfJsonImageService.java b/app/core/src/main/java/stirling/software/SPDF/service/pdfjson/PdfJsonImageService.java
similarity index 100%
rename from app/proprietary/src/main/java/stirling/software/SPDF/service/pdfjson/PdfJsonImageService.java
rename to app/core/src/main/java/stirling/software/SPDF/service/pdfjson/PdfJsonImageService.java
diff --git a/app/proprietary/src/main/java/stirling/software/SPDF/service/pdfjson/PdfJsonMetadataService.java b/app/core/src/main/java/stirling/software/SPDF/service/pdfjson/PdfJsonMetadataService.java
similarity index 100%
rename from app/proprietary/src/main/java/stirling/software/SPDF/service/pdfjson/PdfJsonMetadataService.java
rename to app/core/src/main/java/stirling/software/SPDF/service/pdfjson/PdfJsonMetadataService.java
diff --git a/app/proprietary/src/main/java/stirling/software/SPDF/service/pdfjson/PdfLazyLoadingService.java b/app/core/src/main/java/stirling/software/SPDF/service/pdfjson/PdfLazyLoadingService.java
similarity index 100%
rename from app/proprietary/src/main/java/stirling/software/SPDF/service/pdfjson/PdfLazyLoadingService.java
rename to app/core/src/main/java/stirling/software/SPDF/service/pdfjson/PdfLazyLoadingService.java
diff --git a/app/proprietary/src/main/java/stirling/software/SPDF/service/pdfjson/type3/Type3ConversionRequest.java b/app/core/src/main/java/stirling/software/SPDF/service/pdfjson/type3/Type3ConversionRequest.java
similarity index 100%
rename from app/proprietary/src/main/java/stirling/software/SPDF/service/pdfjson/type3/Type3ConversionRequest.java
rename to app/core/src/main/java/stirling/software/SPDF/service/pdfjson/type3/Type3ConversionRequest.java
diff --git a/app/proprietary/src/main/java/stirling/software/SPDF/service/pdfjson/type3/Type3ConversionStrategy.java b/app/core/src/main/java/stirling/software/SPDF/service/pdfjson/type3/Type3ConversionStrategy.java
similarity index 100%
rename from app/proprietary/src/main/java/stirling/software/SPDF/service/pdfjson/type3/Type3ConversionStrategy.java
rename to app/core/src/main/java/stirling/software/SPDF/service/pdfjson/type3/Type3ConversionStrategy.java
diff --git a/app/proprietary/src/main/java/stirling/software/SPDF/service/pdfjson/type3/Type3FontConversionService.java b/app/core/src/main/java/stirling/software/SPDF/service/pdfjson/type3/Type3FontConversionService.java
similarity index 100%
rename from app/proprietary/src/main/java/stirling/software/SPDF/service/pdfjson/type3/Type3FontConversionService.java
rename to app/core/src/main/java/stirling/software/SPDF/service/pdfjson/type3/Type3FontConversionService.java
diff --git a/app/proprietary/src/main/java/stirling/software/SPDF/service/pdfjson/type3/Type3FontSignatureCalculator.java b/app/core/src/main/java/stirling/software/SPDF/service/pdfjson/type3/Type3FontSignatureCalculator.java
similarity index 100%
rename from app/proprietary/src/main/java/stirling/software/SPDF/service/pdfjson/type3/Type3FontSignatureCalculator.java
rename to app/core/src/main/java/stirling/software/SPDF/service/pdfjson/type3/Type3FontSignatureCalculator.java
diff --git a/app/proprietary/src/main/java/stirling/software/SPDF/service/pdfjson/type3/Type3GlyphContext.java b/app/core/src/main/java/stirling/software/SPDF/service/pdfjson/type3/Type3GlyphContext.java
similarity index 100%
rename from app/proprietary/src/main/java/stirling/software/SPDF/service/pdfjson/type3/Type3GlyphContext.java
rename to app/core/src/main/java/stirling/software/SPDF/service/pdfjson/type3/Type3GlyphContext.java
diff --git a/app/proprietary/src/main/java/stirling/software/SPDF/service/pdfjson/type3/Type3GlyphExtractor.java b/app/core/src/main/java/stirling/software/SPDF/service/pdfjson/type3/Type3GlyphExtractor.java
similarity index 100%
rename from app/proprietary/src/main/java/stirling/software/SPDF/service/pdfjson/type3/Type3GlyphExtractor.java
rename to app/core/src/main/java/stirling/software/SPDF/service/pdfjson/type3/Type3GlyphExtractor.java
diff --git a/app/proprietary/src/main/java/stirling/software/SPDF/service/pdfjson/type3/Type3GraphicsEngine.java b/app/core/src/main/java/stirling/software/SPDF/service/pdfjson/type3/Type3GraphicsEngine.java
similarity index 100%
rename from app/proprietary/src/main/java/stirling/software/SPDF/service/pdfjson/type3/Type3GraphicsEngine.java
rename to app/core/src/main/java/stirling/software/SPDF/service/pdfjson/type3/Type3GraphicsEngine.java
diff --git a/app/proprietary/src/main/java/stirling/software/SPDF/service/pdfjson/type3/Type3LibraryStrategy.java b/app/core/src/main/java/stirling/software/SPDF/service/pdfjson/type3/Type3LibraryStrategy.java
similarity index 100%
rename from app/proprietary/src/main/java/stirling/software/SPDF/service/pdfjson/type3/Type3LibraryStrategy.java
rename to app/core/src/main/java/stirling/software/SPDF/service/pdfjson/type3/Type3LibraryStrategy.java
diff --git a/app/proprietary/src/main/java/stirling/software/SPDF/service/pdfjson/type3/library/Type3FontLibrary.java b/app/core/src/main/java/stirling/software/SPDF/service/pdfjson/type3/library/Type3FontLibrary.java
similarity index 100%
rename from app/proprietary/src/main/java/stirling/software/SPDF/service/pdfjson/type3/library/Type3FontLibrary.java
rename to app/core/src/main/java/stirling/software/SPDF/service/pdfjson/type3/library/Type3FontLibrary.java
diff --git a/app/proprietary/src/main/java/stirling/software/SPDF/service/pdfjson/type3/library/Type3FontLibraryEntry.java b/app/core/src/main/java/stirling/software/SPDF/service/pdfjson/type3/library/Type3FontLibraryEntry.java
similarity index 100%
rename from app/proprietary/src/main/java/stirling/software/SPDF/service/pdfjson/type3/library/Type3FontLibraryEntry.java
rename to app/core/src/main/java/stirling/software/SPDF/service/pdfjson/type3/library/Type3FontLibraryEntry.java
diff --git a/app/proprietary/src/main/java/stirling/software/SPDF/service/pdfjson/type3/library/Type3FontLibraryMatch.java b/app/core/src/main/java/stirling/software/SPDF/service/pdfjson/type3/library/Type3FontLibraryMatch.java
similarity index 100%
rename from app/proprietary/src/main/java/stirling/software/SPDF/service/pdfjson/type3/library/Type3FontLibraryMatch.java
rename to app/core/src/main/java/stirling/software/SPDF/service/pdfjson/type3/library/Type3FontLibraryMatch.java
diff --git a/app/proprietary/src/main/java/stirling/software/SPDF/service/pdfjson/type3/library/Type3FontLibraryPayload.java b/app/core/src/main/java/stirling/software/SPDF/service/pdfjson/type3/library/Type3FontLibraryPayload.java
similarity index 100%
rename from app/proprietary/src/main/java/stirling/software/SPDF/service/pdfjson/type3/library/Type3FontLibraryPayload.java
rename to app/core/src/main/java/stirling/software/SPDF/service/pdfjson/type3/library/Type3FontLibraryPayload.java
diff --git a/app/proprietary/src/main/java/stirling/software/SPDF/service/pdfjson/type3/model/Type3GlyphOutline.java b/app/core/src/main/java/stirling/software/SPDF/service/pdfjson/type3/model/Type3GlyphOutline.java
similarity index 100%
rename from app/proprietary/src/main/java/stirling/software/SPDF/service/pdfjson/type3/model/Type3GlyphOutline.java
rename to app/core/src/main/java/stirling/software/SPDF/service/pdfjson/type3/model/Type3GlyphOutline.java
diff --git a/app/proprietary/src/main/java/stirling/software/SPDF/service/pdfjson/type3/tool/Type3SignatureTool.java b/app/core/src/main/java/stirling/software/SPDF/service/pdfjson/type3/tool/Type3SignatureTool.java
similarity index 100%
rename from app/proprietary/src/main/java/stirling/software/SPDF/service/pdfjson/type3/tool/Type3SignatureTool.java
rename to app/core/src/main/java/stirling/software/SPDF/service/pdfjson/type3/tool/Type3SignatureTool.java
diff --git a/frontend/src/proprietary/components/tools/pdfTextEditor/FontStatusPanel.tsx b/frontend/src/core/components/tools/pdfTextEditor/FontStatusPanel.tsx
similarity index 100%
rename from frontend/src/proprietary/components/tools/pdfTextEditor/FontStatusPanel.tsx
rename to frontend/src/core/components/tools/pdfTextEditor/FontStatusPanel.tsx
diff --git a/frontend/src/proprietary/components/tools/pdfTextEditor/PdfTextEditorView.tsx b/frontend/src/core/components/tools/pdfTextEditor/PdfTextEditorView.tsx
similarity index 99%
rename from frontend/src/proprietary/components/tools/pdfTextEditor/PdfTextEditorView.tsx
rename to frontend/src/core/components/tools/pdfTextEditor/PdfTextEditorView.tsx
index 3c9309e96..0dbe8c50e 100644
--- a/frontend/src/proprietary/components/tools/pdfTextEditor/PdfTextEditorView.tsx
+++ b/frontend/src/core/components/tools/pdfTextEditor/PdfTextEditorView.tsx
@@ -33,7 +33,7 @@ import MergeTypeIcon from '@mui/icons-material/MergeType';
import CallSplitIcon from '@mui/icons-material/CallSplit';
import MoreVertIcon from '@mui/icons-material/MoreVert';
import { Rnd } from 'react-rnd';
-import NavigationWarningModal from '@core/components/shared/NavigationWarningModal';
+import NavigationWarningModal from '@app/components/shared/NavigationWarningModal';
import {
PdfTextEditorViewData,
@@ -2147,14 +2147,20 @@ const selectionToolbarPosition = useMemo(() => {
// Determine text wrapping behavior based on whether text has been changed
const hasChanges = changed;
const widthExtended = resolvedWidth - baseWidth > 0.5;
- const enableWrap = isParagraphLayout || widthExtended || isEditing || hasChanges;
+ // Only enable wrapping if:
+ // 1. It's paragraph layout (multi-line groups should wrap)
+ // 2. Width was manually extended (user explicitly made space for wrapping)
+ // 3. Has changes AND was already wrapping (preserve existing wrap state)
+ // DO NOT enable wrapping just because isEditing - text should only wrap when it actually overflows
+ const wasWrapping = isParagraphLayout || widthExtended;
+ const enableWrap = wasWrapping || (hasChanges && wasWrapping);
const whiteSpace = enableWrap ? 'pre-wrap' : 'pre';
const wordBreak = enableWrap ? 'break-word' : 'normal';
const overflowWrap = enableWrap ? 'break-word' : 'normal';
// For paragraph mode, allow height to grow to accommodate lines without wrapping
// For single-line mode, maintain fixed height based on PDF bounds
- const useFlexibleHeight = isEditing || enableWrap || (isParagraphLayout && lineCount > 1);
+ const useFlexibleHeight = enableWrap || (isParagraphLayout && lineCount > 1);
// The renderGroupContainer wrapper adds 4px horizontal padding (2px left + 2px right)
// We need to add this to the container width to compensate, so the inner content
diff --git a/frontend/src/core/data/useTranslatedToolRegistry.tsx b/frontend/src/core/data/useTranslatedToolRegistry.tsx
index cda99dc40..5d0bcd622 100644
--- a/frontend/src/core/data/useTranslatedToolRegistry.tsx
+++ b/frontend/src/core/data/useTranslatedToolRegistry.tsx
@@ -43,6 +43,7 @@ import CertSign from "@app/tools/CertSign";
import BookletImposition from "@app/tools/BookletImposition";
import Flatten from "@app/tools/Flatten";
import Rotate from "@app/tools/Rotate";
+import PdfTextEditor from "@app/tools/pdfTextEditor/PdfTextEditor";
import ChangeMetadata from "@app/tools/ChangeMetadata";
import Crop from "@app/tools/Crop";
import Sign from "@app/tools/Sign";
@@ -890,6 +891,23 @@ export function useTranslatedToolCatalog(): TranslatedToolCatalog {
automationSettings: RedactSingleStepSettings,
synonyms: getSynonyms(t, "redact")
},
+ pdfTextEditor: {
+ icon: ,
+ name: t("home.pdfTextEditor.title", "PDF Text Editor"),
+ component: PdfTextEditor,
+ description: t(
+ "home.pdfTextEditor.desc",
+ "Review and edit text and images in PDFs with grouped text editing and PDF regeneration"
+ ),
+ categoryId: ToolCategoryId.RECOMMENDED_TOOLS,
+ subcategoryId: SubcategoryId.GENERAL,
+ maxFiles: 1,
+ endpoints: ["text-editor-pdf"],
+ synonyms: getSynonyms(t, "pdfTextEditor"),
+ supportsAutomate: false,
+ automationSettings: null,
+ versionStatus: "alpha",
+ },
};
const regularTools = {} as RegularToolRegistry;
diff --git a/frontend/src/proprietary/tools/pdfTextEditor/PdfTextEditor.tsx b/frontend/src/core/tools/pdfTextEditor/PdfTextEditor.tsx
similarity index 99%
rename from frontend/src/proprietary/tools/pdfTextEditor/PdfTextEditor.tsx
rename to frontend/src/core/tools/pdfTextEditor/PdfTextEditor.tsx
index 6337c23fd..571f3be09 100644
--- a/frontend/src/proprietary/tools/pdfTextEditor/PdfTextEditor.tsx
+++ b/frontend/src/core/tools/pdfTextEditor/PdfTextEditor.tsx
@@ -10,7 +10,7 @@ import { CONVERSION_ENDPOINTS } from '@app/constants/convertConstants';
import apiClient from '@app/services/apiClient';
import { downloadBlob, downloadTextAsFile } from '@app/utils/downloadUtils';
import { getFilenameFromHeaders } from '@app/utils/fileResponseUtils';
-import { pdfWorkerManager } from '@core/services/pdfWorkerManager';
+import { pdfWorkerManager } from '@app/services/pdfWorkerManager';
import { Util } from 'pdfjs-dist/legacy/build/pdf.mjs';
import {
PdfJsonDocument,
diff --git a/frontend/src/proprietary/tools/pdfTextEditor/fontAnalysis.ts b/frontend/src/core/tools/pdfTextEditor/fontAnalysis.ts
similarity index 100%
rename from frontend/src/proprietary/tools/pdfTextEditor/fontAnalysis.ts
rename to frontend/src/core/tools/pdfTextEditor/fontAnalysis.ts
diff --git a/frontend/src/proprietary/tools/pdfTextEditor/pdfTextEditorTypes.ts b/frontend/src/core/tools/pdfTextEditor/pdfTextEditorTypes.ts
similarity index 100%
rename from frontend/src/proprietary/tools/pdfTextEditor/pdfTextEditorTypes.ts
rename to frontend/src/core/tools/pdfTextEditor/pdfTextEditorTypes.ts
diff --git a/frontend/src/proprietary/tools/pdfTextEditor/pdfTextEditorUtils.ts b/frontend/src/core/tools/pdfTextEditor/pdfTextEditorUtils.ts
similarity index 100%
rename from frontend/src/proprietary/tools/pdfTextEditor/pdfTextEditorUtils.ts
rename to frontend/src/core/tools/pdfTextEditor/pdfTextEditorUtils.ts
diff --git a/frontend/src/core/types/toolId.ts b/frontend/src/core/types/toolId.ts
index 23b03a871..752be58f4 100644
--- a/frontend/src/core/types/toolId.ts
+++ b/frontend/src/core/types/toolId.ts
@@ -54,6 +54,7 @@ export const CORE_REGULAR_TOOL_IDS = [
'replaceColor',
'showJS',
'bookletImposition',
+ 'pdfTextEditor',
] as const;
export const CORE_SUPER_TOOL_IDS = [
diff --git a/frontend/src/core/utils/urlMapping.ts b/frontend/src/core/utils/urlMapping.ts
index aa2a3c57c..9cc5d1839 100644
--- a/frontend/src/core/utils/urlMapping.ts
+++ b/frontend/src/core/utils/urlMapping.ts
@@ -97,6 +97,7 @@ export const URL_TO_TOOL_MAP: Record = {
'/automate': 'automate',
'/sign': 'sign',
'/add-text': 'addText',
+ '/pdf-text-editor': 'pdfTextEditor',
// Developer tools
'/dev-api': 'devApi',
diff --git a/frontend/src/proprietary/data/useProprietaryToolRegistry.tsx b/frontend/src/proprietary/data/useProprietaryToolRegistry.tsx
index 154433438..7181598b9 100644
--- a/frontend/src/proprietary/data/useProprietaryToolRegistry.tsx
+++ b/frontend/src/proprietary/data/useProprietaryToolRegistry.tsx
@@ -1,13 +1,5 @@
import { useMemo } from "react";
-import LocalIcon from "@app/components/shared/LocalIcon";
-import { useTranslation } from "react-i18next";
-import { getSynonyms } from "@app/utils/toolSynonyms";
-import PdfTextEditor from "@app/tools/pdfTextEditor/PdfTextEditor";
-import {
- SubcategoryId,
- ToolCategoryId,
- type ProprietaryToolRegistry,
-} from "@app/data/toolsTaxonomy";
+import { type ProprietaryToolRegistry } from "@app/data/toolsTaxonomy";
/**
* Hook that provides the proprietary tool registry.
@@ -16,26 +8,5 @@ import {
* and will be included in the main tool registry.
*/
export function useProprietaryToolRegistry(): ProprietaryToolRegistry {
- const { t } = useTranslation();
-
- return useMemo(() => ({
- pdfTextEditor: {
- icon: ,
- name: t("home.pdfTextEditor.title", "PDF Text Editor"),
- component: PdfTextEditor,
- description: t(
- "home.pdfTextEditor.desc",
- "Review and edit text and images in PDFs with grouped text editing and PDF regeneration"
- ),
- categoryId: ToolCategoryId.RECOMMENDED_TOOLS,
- subcategoryId: SubcategoryId.GENERAL,
- maxFiles: 1,
- endpoints: ["text-editor-pdf"],
- synonyms: getSynonyms(t, "pdfTextEditor"),
- supportsAutomate: false,
- automationSettings: null,
- versionStatus: "alpha",
- requiresPremium: true,
- },
- }), [t]);
+ return useMemo(() => ({}), []);
}
diff --git a/frontend/src/proprietary/types/proprietaryToolId.ts b/frontend/src/proprietary/types/proprietaryToolId.ts
index 92e3548a3..084cffa29 100644
--- a/frontend/src/proprietary/types/proprietaryToolId.ts
+++ b/frontend/src/proprietary/types/proprietaryToolId.ts
@@ -5,7 +5,6 @@
*/
export const PROPRIETARY_REGULAR_TOOL_IDS = [
- 'pdfTextEditor',
] as const;
export const PROPRIETARY_SUPER_TOOL_IDS = [
diff --git a/frontend/src/proprietary/utils/urlMapping.ts b/frontend/src/proprietary/utils/urlMapping.ts
index 13bc379fb..969686ef5 100644
--- a/frontend/src/proprietary/utils/urlMapping.ts
+++ b/frontend/src/proprietary/utils/urlMapping.ts
@@ -8,9 +8,7 @@ import { ToolId } from '@app/types/toolId';
import { URL_TO_TOOL_MAP as CORE_URL_TO_TOOL_MAP } from '@core/utils/urlMapping';
// Proprietary URL mappings
-const PROPRIETARY_URL_MAPPINGS: Record = {
- '/pdf-text-editor': 'pdfTextEditor',
-};
+const PROPRIETARY_URL_MAPPINGS: Record = {};
// Merge core and proprietary mappings
export const URL_TO_TOOL_MAP: Record = {