Stirling-PDF/frontend/src/core/hooks
Balázs Szücs 182eb504de
[V2] feat(convert): add support for CBR to PDF and PDF to CBR conversions (#4833)
# Description of Changes
TLDR:
- Introduced `ConvertFromCbrSettings` and `ConvertToCbrSettings`
components for handling conversion-specific settings.
- Updated `ConvertSettings` to include CBR-related configurations.
- Updated `useConvertParameters` with new parameters: `cbrOptions` and
`pdfToCbrOptions`.
- Updated locales with CBR-related translations.
- Added endpoints and updated conversion matrix for CBR formats in
`convertConstants`.
- Modified `useConvertOperation` to handle CBR-specific parameters
during form data preparation.


For backend see this PR: #4581

This pull request adds support for converting between CBR (Comic Book
Archive) and PDF formats in the frontend. It introduces new UI
components for configuring conversion options, updates the conversion
constants and logic, and ensures parameters for these conversions are
handled correctly throughout the app.

**CBR/PDF Conversion Features:**

* Added new UI components: `ConvertFromCbrSettings` for CBR to PDF
conversions (option to optimize for ebook readers), and
`ConvertToCbrSettings` for PDF to CBR conversions (DPI selection for
image rendering). These are conditionally rendered in
`ConvertSettings.tsx` based on selected formats.

**Conversion Logic and Constants:**

* Extended conversion endpoints, format options, conversion matrix, and
endpoint mappings to support CBR to PDF and PDF to CBR conversions.
* Updated `shouldProcessFilesSeparately` logic to handle PDF to CBR
conversions, ensuring each PDF generates its own archive.

**Parameter Handling:**

* Added new parameters (`cbrOptions` and `pdfToCbrOptions`) to the
conversion parameter interface and default values, ensuring they are
set/reset appropriately during format changes
* Modified form data construction to include new options for CBR/PDF
conversions (optimize for ebook, DPI).

### Frontend
<img width="1291" height="861" alt="image"
src="https://github.com/user-attachments/assets/fb63be66-6f40-4dde-8235-86c9ddfa1f7c"
/>


<img width="1411" height="1000" alt="image"
src="https://github.com/user-attachments/assets/529593c4-6f32-4b11-9754-7f334f40d32e"
/>


Note on RAR5. You can go back-and-forth with this converter due to the
fact on default pdf to cbr makes RAR5 meanwhile, cbr to pdf can only
RAR4 and below. This is unfortunate limitation of JunRAR library. In the
real world, generally RAR5s are not that common, and they mostly
unsupported by open-source software.

<!--
Please provide a summary of the changes, including:

- What was changed
- Why the change was made
- Any challenges encountered

Closes #(issue_number)
-->

---

## Checklist

### General

- [X] I have read the [Contribution
Guidelines](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/CONTRIBUTING.md)
- [X] 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)
- [X] I have performed a self-review of my own code
- [X] 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)

### Translations (if applicable)

- [ ] I ran
[`scripts/counter_translation.py`](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/docs/counter_translation.md)

### UI Changes (if applicable)

- [X] Screenshots or videos demonstrating the UI changes are attached
(e.g., as comments or direct attachments in the PR)

### Testing (if applicable)

- [X] 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.

---------

Signed-off-by: Balázs Szücs <bszucs1209@gmail.com>
Co-authored-by: Anthony Stirling <77850077+Frooodle@users.noreply.github.com>
Co-authored-by: Reece Browne <74901996+reecebrowne@users.noreply.github.com>
2025-12-27 01:32:55 +00:00
..
tools [V2] feat(convert): add support for CBR to PDF and PDF to CBR conversions (#4833) 2025-12-27 01:32:55 +00:00
useAdminSettings.ts Fix settings loading (#4997) 2025-11-25 12:30:44 +00:00
useAppInitialization.ts Tidy Tauri code and enable "Open file in Stirling PDF" (#4836) 2025-11-10 12:15:39 +00:00
useAuditFilters.ts Audit viewer making api call when shouldnt (#5069) 2025-11-29 16:04:29 +00:00
useBackendHealth.ts Fix backend issues in desktop app (#4995) 2025-11-25 13:15:30 +00:00
useBackendProbe.ts Detect backend down (#5010) 2025-11-25 22:10:38 +00:00
useBaseUrl.ts Restructure frontend code to allow for extensions (#4721) 2025-10-28 10:29:36 +00:00
useCookieConsent.ts Chore/v2/onboarding flow cleanup (#5065) 2025-12-02 12:40:20 +00:00
useDocumentMeta.ts Restructure frontend code to allow for extensions (#4721) 2025-10-28 10:29:36 +00:00
useEndpointConfig.ts Differentiate unavailable tools by reason (#4916) 2025-11-21 13:19:53 +00:00
useEnhancedProcessedFiles.ts Restructure frontend code to allow for extensions (#4721) 2025-10-28 10:29:36 +00:00
useFileActionIcons.ts Various fixes for desktop (#4976) 2025-11-25 13:11:13 +00:00
useFileActionTerminology.ts Various fixes for desktop (#4976) 2025-11-25 13:11:13 +00:00
useFileHandler.ts Feature/v2/compare tool (#4751) 2025-11-12 14:54:01 +00:00
useFileManager.ts Restructure frontend code to allow for extensions (#4721) 2025-10-28 10:29:36 +00:00
useFileWithUrl.ts Restructure frontend code to allow for extensions (#4721) 2025-10-28 10:29:36 +00:00
useFocusTrap.ts Restructure frontend code to allow for extensions (#4721) 2025-10-28 10:29:36 +00:00
useFooterInfo.ts Cookie consent banner and footer on login screen (#5042) 2025-11-28 16:24:10 +00:00
useGoogleDrivePicker.ts Restructure frontend code to allow for extensions (#4721) 2025-10-28 10:29:36 +00:00
useIndexedDBThumbnail.ts Restructure frontend code to allow for extensions (#4721) 2025-10-28 10:29:36 +00:00
useIsMobile.ts Feature/v2/compare tool (#4751) 2025-11-12 14:54:01 +00:00
useIsOverflowing.ts Restructure frontend code to allow for extensions (#4721) 2025-10-28 10:29:36 +00:00
useLicenseAlert.ts Feature/onboarding slides (#4955) 2025-11-25 13:45:02 +00:00
useLoginRequired.ts Settings display demo and login fix (#4884) 2025-11-14 13:02:45 +00:00
useLogoAssets.test.ts UI/allow logo selection (#4982) 2025-11-25 15:22:14 +00:00
useLogoAssets.ts UI/allow logo selection (#4982) 2025-11-25 15:22:14 +00:00
useLogoPath.ts UI/allow logo selection (#4982) 2025-11-25 15:22:14 +00:00
useLogoVariant.ts UI/allow logo selection (#4982) 2025-11-25 15:22:14 +00:00
useOs.ts Feature/onboarding slides (#4955) 2025-11-25 13:45:02 +00:00
usePDFProcessor.ts Restructure frontend code to allow for extensions (#4721) 2025-10-28 10:29:36 +00:00
usePdfSignatureDetection.ts Restructure frontend code to allow for extensions (#4721) 2025-10-28 10:29:36 +00:00
useProcessedFiles.ts Restructure frontend code to allow for extensions (#4721) 2025-10-28 10:29:36 +00:00
useProgressivePagePreviews.ts Feature/v2/compare tool (#4751) 2025-11-12 14:54:01 +00:00
useRainbowTheme.ts Restructure frontend code to allow for extensions (#4721) 2025-10-28 10:29:36 +00:00
useRequestHeaders.ts Restructure frontend code to allow for extensions (#4721) 2025-10-28 10:29:36 +00:00
useRightRailButtons.ts Restructure frontend code to allow for extensions (#4721) 2025-10-28 10:29:36 +00:00
useRightRailTooltipSide.ts Bug/v2/fix rtl (#4958) 2025-11-24 16:57:36 +00:00
useScarfTracking.ts Restructure frontend code to allow for extensions (#4721) 2025-10-28 10:29:36 +00:00
useServerExperience.ts Shorten onbaording (#5198) 2025-12-15 09:31:41 +00:00
useShouldShowWelcomeModal.ts Feature/onboarding slides (#4955) 2025-11-25 13:45:02 +00:00
useSidebarNavigation.ts Restructure frontend code to allow for extensions (#4721) 2025-10-28 10:29:36 +00:00
useSuggestedTools.ts Restructure frontend code to allow for extensions (#4721) 2025-10-28 10:29:36 +00:00
useThumbnailGeneration.ts Restructure frontend code to allow for extensions (#4721) 2025-10-28 10:29:36 +00:00
useToolManagement.tsx Differentiate unavailable tools by reason (#4916) 2025-11-21 13:19:53 +00:00
useToolNavigation.ts Restructure frontend code to allow for extensions (#4721) 2025-10-28 10:29:36 +00:00
useToolParameters.ts Restructure frontend code to allow for extensions (#4721) 2025-10-28 10:29:36 +00:00
useToolSections.ts styling changes (#4894) 2025-11-14 14:52:32 +00:00
useTooltipPosition.ts Bug/v2/fix rtl (#4958) 2025-11-24 16:57:36 +00:00
useTranslation.ts Restructure frontend code to allow for extensions (#4721) 2025-10-28 10:29:36 +00:00
useUndoRedo.ts Restructure frontend code to allow for extensions (#4721) 2025-10-28 10:29:36 +00:00
useUrlSync.ts PDF Text editor (#4724) 2025-11-24 14:15:02 +00:00
useWheelZoom.ts Feature/v2/selected pageeditor rework (#4756) 2025-11-13 12:53:57 +00:00
useZipConfirmation.ts [V2] feat(unzip/front-end): Implement ZIP extraction confirmation for archives over 20 files (#4834) 2025-11-12 15:18:15 +00:00