2024-02-16 22:49:06 +01:00
<!DOCTYPE html>
2024-05-05 13:19:53 +02:00
< html th:lang = "${#locale.language}" th:dir = "#{language.direction}" th:data-language = "${#locale.toString()}"
2024-05-22 22:48:23 +02:00
xmlns:th="https://www.thymeleaf.org">
2024-02-16 22:49:06 +01:00
2024-05-05 13:19:53 +02:00
< head >
< th:block th:insert = "~{fragments/common :: head(title='')}" > < / th:block >
< / head >
< body >
< div id = "page-container" >
< div id = "content-wrap" >
< th:block th:insert = "~{fragments/navbar.html :: navbar}" > < / th:block >
<!-- Jumbotron -->
< div class = "p-5 rounded d-none d-md-block" id = "jumbotron" >
< div class = "container" >
< h1 class = "display-4 fw-normal" th:text = "${@appName}" > < / h1 >
< p class = "lead fs-4"
th:text="${@homeText != 'null' and @homeText != null and @homeText != ''} ? ${@homeText} : #{home.desc}">
< / p >
2023-10-31 18:58:40 +01:00
< / div >
2024-05-05 13:19:53 +02:00
< / div >
< br class = "d-md-none" >
<!-- Features -->
2024-06-15 23:07:09 +02:00
< script th:src = "@{'/js/homecard.js'}" > < / script >
2024-05-05 13:19:53 +02:00
< div class = " container" >
< br >
< span class = "material-symbols-rounded search-icon" >
search
< / span >
< input type = "text" id = "searchBar" onkeyup = "filterCards()" th:placeholder = "#{home.searchBar}" autofocus >
2024-09-20 13:29:00 +02:00
< div id = "filtersContainer" >
< span class = "material-symbols-rounded filter-button" onclick = "toggleFavoritesOnly()" >
star
< / span >
< span class = "material-symbols-rounded filter-button" onclick = "expandCollapseAll(true)" >
expand_all
< / span >
< span class = "material-symbols-rounded filter-button" onclick = "expandCollapseAll(false)" >
collapse_all
< / span >
< span class = "material-symbols-rounded filter-button hidden" onclick = "switchViewMode()" >
dashboard
< / span >
< / div >
2024-05-05 13:19:53 +02:00
< div class = "features-container" >
2024-05-09 15:31:12 +02:00
2024-09-20 13:29:00 +02:00
< div th:if = "${@shouldShow}" class = "feature-card favorite update-notice" id = "update-link"
style="display: none;">
2024-05-09 15:31:12 +02:00
< a href = "https://github.com/Stirling-Tools/Stirling-PDF/releases" target = "_blank" rel = "noopener" >
< div class = "d-flex align-items-center" >
< div id = "tool-icon" class = "advance" alt = "icon" >
< span class = "material-symbols-rounded nav-icon" > update< / span >
< / div >
< div id = "tool-text" >
< h5 class = "card-title" th:text = "#{settings.update}" > < / h5 >
< p class = "card-text" id = "app-update" > < / p >
< / div >
< / div >
< / a >
< / div >
2024-05-05 21:28:25 +02:00
2024-09-20 13:29:00 +02:00
< div id = "groupFavorites" class = "feature-group" >
< div th:replace = "~{fragments/featureGroupHeader :: featureGroupHeader(groupTitle=#{navbar.favorite})}" >
< / div >
< div class = "feature-group-container" >
< / div >
2024-05-05 13:19:53 +02:00
< / div >
2024-02-16 22:49:06 +01:00
2024-10-14 23:34:41 +02:00
< div id = "popularTools" class = "feature-group" >
< div
th:replace="~{fragments/featureGroupHeader :: featureGroupHeader(groupTitle=#{navbar.sections.popular})}">
< / div >
< div class = "feature-group-container" >
< div
th:replace="~{fragments/card :: card(id='view-pdf', cardTitle=#{home.viewPdf.title}, cardText=#{home.viewPdf.desc}, cardLink='view-pdf', toolIcon='menu_book', tags=#{viewPdf.tags}, toolGroup='other')}">
< / div >
< div
th:replace="~{fragments/card :: card(id='multi-tool', cardTitle=#{home.multiTool.title}, cardText=#{home.multiTool.desc}, cardLink='multi-tool', toolIcon='construction', tags=#{multiTool.tags}, toolGroup='organize')}">
< / div >
< div
th:replace="~{fragments/card :: card(id='pipeline', cardTitle=#{home.pipeline.title}, cardText=#{home.pipeline.desc}, cardLink='pipeline', toolIcon='family_history', tags=#{pipeline.tags}, toolGroup='advance')}">
< / div >
< div
th:replace="~{fragments/card :: card(id='compress-pdf', cardTitle=#{home.compressPdfs.title}, cardText=#{home.compressPdfs.desc}, cardLink='compress-pdf', toolIcon='zoom_in_map', tags=#{compressPdfs.tags}, toolGroup='advance')}">
< / div >
< / div >
< / div >
2024-09-20 13:29:00 +02:00
< div id = "groupOrganize" class = "feature-group" >
< div
th:replace="~{fragments/featureGroupHeader :: featureGroupHeader(groupTitle=#{navbar.sections.organize})}">
< / div >
< div class = "feature-group-container" >
2024-10-14 23:34:41 +02:00
< div
th:replace="~{fragments/card :: card(id='multi-tool', cardTitle=#{home.multiTool.title}, cardText=#{home.multiTool.desc}, cardLink='multi-tool', toolIcon='construction', tags=#{multiTool.tags}, toolGroup='organize')}">
< / div >
2024-09-20 13:29:00 +02:00
< div
th:replace="~{fragments/card :: card(id='merge-pdfs', cardTitle=#{home.merge.title}, cardText=#{home.merge.desc}, cardLink='merge-pdfs', toolIcon='add_to_photos', tags=#{merge.tags}, toolGroup='organize')}">
< / div >
< div
th:replace="~{fragments/card :: card(id='split-pdfs', cardTitle=#{home.split.title}, cardText=#{home.split.desc}, cardLink='split-pdfs', toolIcon='cut', tags=#{split.tags}, toolGroup='organize')}">
< / div >
< div
th:replace="~{fragments/card :: card(id='rotate-pdf', cardTitle=#{home.rotate.title}, cardText=#{home.rotate.desc}, cardLink='rotate-pdf', toolIcon='rotate_right', tags=#{rotate.tags}, toolGroup='organize')}">
< / div >
< div
th:replace="~{fragments/card :: card(id='crop', cardTitle=#{home.crop.title}, cardText=#{home.crop.desc}, cardLink='crop', toolIcon='crop', tags=#{crop.tags}, toolGroup='organize')}">
< / div >
< div
th:replace="~{fragments/card :: card(id='pdf-organizer', cardTitle=#{home.pdfOrganiser.title}, cardText=#{home.pdfOrganiser.desc}, cardLink='pdf-organizer', toolIcon='format_list_bulleted', tags=#{pdfOrganiser.tags}, toolGroup='organize')}">
< / div >
< div
th:replace="~{fragments/card :: card(id='remove-pages', cardTitle=#{home.removePages.title}, cardText=#{home.removePages.desc}, cardLink='remove-pages', toolIcon='delete', tags=#{removePages.tags}, toolGroup='organize')}">
< / div >
< div
th:replace="~{fragments/card :: card(id='multi-page-layout', cardTitle=#{home.pageLayout.title}, cardText=#{home.pageLayout.desc}, cardLink='multi-page-layout', toolIcon='dashboard', tags=#{pageLayout.tags}, toolGroup='organize')}">
< / div >
< div
th:replace="~{fragments/card :: card(id='scale-pages', cardTitle=#{home.scalePages.title}, cardText=#{home.scalePages.desc}, cardLink='scale-pages', toolIcon='fullscreen', tags=#{scalePages.tags}, toolGroup='organize')}">
< / div >
< div
th:replace="~{fragments/card :: card(id='extract-page', cardTitle=#{home.extractPage.title}, cardText=#{home.extractPage.desc}, cardLink='extract-page', toolIcon='upload', tags=#{extractPage.tags}, toolGroup='organize')}">
< / div >
< div
th:replace="~{fragments/card :: card(id='pdf-to-single-page', cardTitle=#{home.PdfToSinglePage.title}, cardText=#{home.PdfToSinglePage.desc}, cardLink='pdf-to-single-page', toolIcon='looks_one', tags=#{PdfToSinglePage.tags}, toolGroup='organize')}">
< / div >
< / div >
2024-05-05 13:19:53 +02:00
< / div >
2024-02-16 22:49:06 +01:00
2024-09-20 13:29:00 +02:00
< div id = "groupConvertTo" class = "feature-group" >
< div
th:replace="~{fragments/featureGroupHeader :: featureGroupHeader(groupTitle=#{navbar.sections.convertTo})}">
< / div >
< div class = "feature-group-container" >
< div
th:replace="~{fragments/card :: card(id='img-to-pdf', cardTitle=#{home.imageToPdf.title}, cardText=#{home.imageToPdf.desc}, cardLink='img-to-pdf', toolIcon='image', tags=#{imageToPdf.tags}, toolGroup='image')}">
< / div >
< div
th:replace="~{fragments/card :: card(id='file-to-pdf', cardTitle=#{home.fileToPDF.title}, cardText=#{home.fileToPDF.desc}, cardLink='file-to-pdf', toolIcon='draft', tags=#{fileToPDF.tags}, toolGroup='convert')}">
< / div >
< div
th:replace="~{fragments/card :: card(id='url-to-pdf', cardTitle=#{home.URLToPDF.title}, cardText=#{home.URLToPDF.desc}, cardLink='url-to-pdf', toolIcon='link', tags=#{URLToPDF.tags}, toolGroup='convert')}">
< / div >
< div
th:replace="~{fragments/card :: card(id='html-to-pdf', cardTitle=#{home.HTMLToPDF.title}, cardText=#{home.HTMLToPDF.desc}, cardLink='html-to-pdf', toolIcon='html', tags=#{HTMLToPDF.tags}, toolGroup='convert')}">
< / div >
< div
th:replace="~{fragments/card :: card(id='markdown-to-pdf', cardTitle=#{home.MarkdownToPDF.title}, cardText=#{home.MarkdownToPDF.desc}, cardLink='markdown-to-pdf', toolIcon='markdown', tags=#{MarkdownToPDF.tags}, toolGroup='convert')}">
< / div >
< div
th:replace="~{fragments/card :: card(id='book-to-pdf', cardTitle=#{home.BookToPDF.title}, cardText=#{home.BookToPDF.desc}, cardLink='book-to-pdf', toolIcon='book', tags=#{BookToPDF.tags}, toolGroup='convert')}">
< / div >
< / div >
2024-05-05 13:19:53 +02:00
< / div >
2024-02-16 22:49:06 +01:00
2024-09-20 13:29:00 +02:00
< div id = "groupConvertFrom" class = "feature-group" >
< div
th:replace="~{fragments/featureGroupHeader :: featureGroupHeader(groupTitle=#{navbar.sections.convertFrom})}">
< / div >
< div class = "feature-group-container" >
< div
th:replace="~{fragments/card :: card(id='pdf-to-img', cardTitle=#{home.pdfToImage.title}, cardText=#{home.pdfToImage.desc}, cardLink='pdf-to-img', toolIcon='image', tags=#{pdfToImage.tags}, toolGroup='image')}">
< / div >
< div
th:replace="~{fragments/card :: card(id='pdf-to-pdfa', cardTitle=#{home.pdfToPDFA.title}, cardText=#{home.pdfToPDFA.desc}, cardLink='pdf-to-pdfa', toolIcon='picture_as_pdf', tags=#{pdfToPDFA.tags}, toolGroup='convert')}">
< / div >
< div
th:replace="~{fragments/card :: card(id='pdf-to-word', cardTitle=#{home.PDFToWord.title}, cardText=#{home.PDFToWord.desc}, cardLink='pdf-to-word', toolIcon='description', tags=#{PDFToWord.tags}, toolGroup='word')}">
< / div >
< div
th:replace="~{fragments/card :: card(id='pdf-to-presentation', cardTitle=#{home.PDFToPresentation.title}, cardText=#{home.PDFToPresentation.desc}, cardLink='pdf-to-presentation', toolIcon='slideshow', tags=#{PDFToPresentation.tags}, toolGroup='ppt')}">
< / div >
< div
th:replace="~{fragments/card :: card(id='pdf-to-text', cardTitle=#{home.PDFToText.title}, cardText=#{home.PDFToText.desc}, cardLink='pdf-to-text', toolIcon='text_fields', tags=#{PDFToText.tags}, toolGroup='convert')}">
< / div >
< div
th:replace="~{fragments/card :: card(id='pdf-to-html', cardTitle=#{home.PDFToHTML.title}, cardText=#{home.PDFToHTML.desc}, cardLink='pdf-to-html', toolIcon='html', tags=#{PDFToHTML.tags}, toolGroup='convert')}">
< / div >
< div
th:replace="~{fragments/card :: card(id='pdf-to-xml', cardTitle=#{home.PDFToXML.title}, cardText=#{home.PDFToXML.desc}, cardLink='pdf-to-xml', toolIcon='code', tags=#{PDFToXML.tags}, toolGroup='convert')}">
< / div >
< div
th:replace="~{fragments/card :: card(id='pdf-to-csv', cardTitle=#{home.tableExtraxt.title}, cardText=#{home.tableExtraxt.desc}, cardLink='pdf-to-csv', toolIcon='csv', tags=#{tableExtraxt.tags}, toolGroup='convert')}">
< / div >
< div
th:replace="~{fragments/card :: card(id='pdf-to-book', cardTitle=#{home.PDFToBook.title}, cardText=#{home.PDFToBook.desc}, cardLink='pdf-to-book', toolIcon='book', tags=#{PDFToBook.tags}, toolGroup='convert')}">
< / div >
< / div >
2024-05-05 13:19:53 +02:00
< / div >
2024-02-16 22:49:06 +01:00
2024-09-20 13:29:00 +02:00
< div id = "groupSecurity" class = "feature-group" >
< div
th:replace="~{fragments/featureGroupHeader :: featureGroupHeader(groupTitle=#{navbar.sections.security})}">
< / div >
< div class = "feature-group-container" >
< div
th:replace="~{fragments/card :: card(id='add-password', cardTitle=#{home.addPassword.title}, cardText=#{home.addPassword.desc}, cardLink='add-password', toolIcon='lock', tags=#{addPassword.tags}, toolGroup='security')}">
< / div >
< div
th:replace="~{fragments/card :: card(id='remove-password', cardTitle=#{home.removePassword.title}, cardText=#{home.removePassword.desc}, cardLink='remove-password', toolIcon='lock_open_right', tags=#{removePassword.tags}, toolGroup='security')}">
< / div >
< div
th:replace="~{fragments/card :: card(id='change-permissions', cardTitle=#{home.permissions.title}, cardText=#{home.permissions.desc}, cardLink='change-permissions', toolIcon='encrypted', tags=#{permissions.tags}, toolGroup='security')}">
< / div >
< div
th:replace="~{fragments/card :: card(id='sign', cardTitle=#{home.sign.title}, cardText=#{home.sign.desc}, cardLink='sign', toolIcon='signature', tags=#{sign.tags}, toolGroup='sign')}">
< / div >
< div
th:replace="~{fragments/card :: card(id='cert-sign', cardTitle=#{home.certSign.title}, cardText=#{home.certSign.desc}, cardLink='cert-sign', toolIcon='workspace_premium', tags=#{certSign.tags}, toolGroup='security')}">
< / div >
< div
th:replace="~{fragments/card :: card(id='remove-cert-sign', cardTitle=#{home.removeCertSign.title}, cardText=#{home.removeCertSign.desc}, cardLink='remove-cert-sign', toolIcon='remove_moderator', tags=#{removeCertSign.tags}, toolGroup='security')}">
< / div >
< div
th:replace="~{fragments/card :: card(id='sanitize-pdf', cardTitle=#{home.sanitizePdf.title}, cardText=#{home.sanitizePdf.desc}, cardLink='sanitize-pdf', toolIcon='sanitizer', tags=#{sanitizePdf.tags}, toolGroup='security')}">
< / div >
< div
th:replace="~{fragments/card :: card(id='auto-redact', cardTitle=#{home.autoRedact.title}, cardText=#{home.autoRedact.desc}, cardLink='auto-redact', toolIcon='ink_eraser', tags=#{autoRedact.tags}, toolGroup='security')}">
< / div >
< div
th:replace="~{fragments/card :: card(id='stamp', cardTitle=#{home.AddStampRequest.title}, cardText=#{home.AddStampRequest.desc}, cardLink='stamp', toolIcon='approval', tags=#{AddStampRequest.tags}, toolGroup='security')}">
< / div >
2024-10-14 23:34:41 +02:00
< div
th:replace="~{fragments/card :: card(id='add-watermark', cardTitle=#{home.watermark.title}, cardText=#{home.watermark.desc}, cardLink='add-watermark', toolIcon='water_drop', tags=#{watermark.tags}, toolGroup='security')}">
< / div >
2024-09-20 13:29:00 +02:00
< / div >
2024-05-05 13:19:53 +02:00
< / div >
2024-02-16 22:49:06 +01:00
2024-09-20 13:29:00 +02:00
< div id = "groupView" class = "feature-group" >
< div th:replace = "~{fragments/featureGroupHeader :: featureGroupHeader(groupTitle=#{navbar.sections.edit})}" >
< / div >
< div class = "feature-group-container" >
< div
th:replace="~{fragments/card :: card(id='view-pdf', cardTitle=#{home.viewPdf.title}, cardText=#{home.viewPdf.desc}, cardLink='view-pdf', toolIcon='menu_book', tags=#{viewPdf.tags}, toolGroup='other')}">
< / div >
< div
th:replace="~{fragments/card :: card(id='add-page-numbers', cardTitle=#{home.add-page-numbers.title}, cardText=#{home.add-page-numbers.desc}, cardLink='add-page-numbers', toolIcon='123', tags=#{add-page-numbers.tags}, toolGroup='other')}">
< / div >
< div
th:replace="~{fragments/card :: card(id='add-image', cardTitle=#{home.addImage.title}, cardText=#{home.addImage.desc}, cardLink='add-image', toolIcon='text_fields', tags=#{addImage.tags}, toolGroup='other')}">
< / div >
2024-10-14 23:34:41 +02:00
2024-09-20 13:29:00 +02:00
< div
th:replace="~{fragments/card :: card(id='change-metadata', cardTitle=#{home.changeMetadata.title}, cardText=#{home.changeMetadata.desc}, cardLink='change-metadata', toolIcon='assignment', tags=#{changeMetadata.tags}, toolGroup='other')}">
< / div >
< div
th:replace="~{fragments/card :: card(id='ocr-pdf', cardTitle=#{home.ocr.title}, cardText=#{home.ocr.desc}, cardLink='ocr-pdf', toolIcon='quick_reference_all', tags=#{ocr.tags}, toolGroup='other')}">
< / div >
< div
th:replace="~{fragments/card :: card(id='extract-images', cardTitle=#{home.extractImages.title}, cardText=#{home.extractImages.desc}, cardLink='extract-images', toolIcon='photo_library', tags=#{extractImages.tags}, toolGroup='other')}">
< / div >
< div
th:replace="~{fragments/card :: card(id='flatten', cardTitle=#{home.flatten.title}, cardText=#{home.flatten.desc}, cardLink='flatten', toolIcon='layers_clear', tags=#{flatten.tags}, toolGroup='other')}">
< / div >
< div
th:replace="~{fragments/card :: card(id='remove-blanks', cardTitle=#{home.removeBlanks.title}, cardText=#{home.removeBlanks.desc}, cardLink='remove-blanks', toolIcon='scan_delete', tags=#{removeBlanks.tags}, toolGroup='other')}">
< / div >
< div
th:replace="~{fragments/card :: card(id='remove-annotations', cardTitle=#{home.removeAnnotations.title}, cardText=#{home.removeAnnotations.desc}, cardLink='remove-annotations', toolIcon='thread_unread', tags=#{removeAnnotations.tags}, toolGroup='other')}">
< / div >
< div
th:replace="~{fragments/card :: card(id='compare', cardTitle=#{home.compare.title}, cardText=#{home.compare.desc}, cardLink='compare', toolIcon='compare', tags=#{compare.tags}, toolGroup='other')}">
< / div >
< div
th:replace="~{fragments/card :: card(id='get-info-on-pdf', cardTitle=#{home.getPdfInfo.title}, cardText=#{home.getPdfInfo.desc}, cardLink='get-info-on-pdf', toolIcon='info', tags=#{getPdfInfo.tags}, toolGroup='other')}">
< / div >
< div
th:replace="~{fragments/card :: card(id='remove-image-pdf', cardTitle=#{home.removeImagePdf.title}, cardText=#{home.removeImagePdf.desc}, cardLink='remove-image-pdf', toolIcon='remove_selection', tags=#{removeImagePdf.tags}, toolGroup='other')}">
< / div >
2024-10-04 17:53:00 +02:00
< div
th:replace="~{fragments/card :: card(id='replace-color-pdf', cardTitle=#{home.replaceColorPdf.title}, cardText=#{home.replaceColorPdf.desc}, cardLink='replace-and-invert-color-pdf', toolIcon='format_color_fill', tags=#{replaceColorPdf.tags}, toolGroup='other')}">
< / div >
2024-09-20 13:29:00 +02:00
< / div >
2024-05-05 13:19:53 +02:00
< / div >
2024-10-04 17:53:00 +02:00
< div id = "groupAdvanced" class = "feature-group" >
< div
2024-02-16 22:49:06 +01:00
2024-09-20 13:29:00 +02:00
th:replace="~{fragments/featureGroupHeader :: featureGroupHeader(groupTitle=#{navbar.sections.advance})}">
< / div >
< div class = "feature-group-container" >
< div
th:replace="~{fragments/card :: card(id='pipeline', cardTitle=#{home.pipeline.title}, cardText=#{home.pipeline.desc}, cardLink='pipeline', toolIcon='family_history', tags=#{pipeline.tags}, toolGroup='advance')}">
< / div >
< div
th:replace="~{fragments/card :: card(id='adjust-contrast', cardTitle=#{home.adjust-contrast.title}, cardText=#{home.adjust-contrast.desc}, cardLink='adjust-contrast', toolIcon='palette', tags=#{adjust-contrast.tags}, toolGroup='advance')}">
< / div >
< div
th:replace="~{fragments/card :: card(id='compress-pdf', cardTitle=#{home.compressPdfs.title}, cardText=#{home.compressPdfs.desc}, cardLink='compress-pdf', toolIcon='zoom_in_map', tags=#{compressPdfs.tags}, toolGroup='advance')}">
< / div >
2024-10-14 23:34:41 +02:00
< div
th:replace="~{fragments/card :: card(id='extract-image-scans', cardTitle=#{home.ScannerImageSplit.title}, cardText=#{home.ScannerImageSplit.desc}, cardLink='extract-image-scans', toolIcon='scanner', tags=#{ScannerImageSplit.tags}, toolGroup='advance')}">
< / div >
2024-09-20 13:29:00 +02:00
< div
th:replace="~{fragments/card :: card(id='repair', cardTitle=#{home.repair.title}, cardText=#{home.repair.desc}, cardLink='repair', toolIcon='build', tags=#{repair.tags}, toolGroup='advance')}">
< / div >
< div
th:replace="~{fragments/card :: card(id='auto-rename', cardTitle=#{home.auto-rename.title}, cardText=#{home.auto-rename.desc}, cardLink='auto-rename', toolIcon='text_fields_alt', tags=#{auto-rename.tags}, toolGroup='advance')}">
< / div >
< div
th:replace="~{fragments/card :: card(id='auto-split-pdf', cardTitle=#{home.autoSplitPDF.title}, cardText=#{home.autoSplitPDF.desc}, cardLink='auto-split-pdf', toolIcon='cut', tags=#{autoSplitPDF.tags}, toolGroup='advance')}">
< / div >
< div
th:replace="~{fragments/card :: card(id='show-javascript', cardTitle=#{home.showJS.title}, cardText=#{home.showJS.desc}, cardLink='show-javascript', toolIcon='javascript', tags=#{showJS.tags}, toolGroup='advance')}">
< / div >
< div
th:replace="~{fragments/card :: card(id='split-by-size-or-count', cardTitle=#{home.autoSizeSplitPDF.title}, cardText=#{home.autoSizeSplitPDF.desc}, cardLink='split-by-size-or-count', toolIcon='vertical_split', tags=#{autoSizeSplitPDF.tags}, toolGroup='advance')}">
< / div >
< div
th:replace="~{fragments/card :: card(id='overlay-pdf', cardTitle=#{home.overlay-pdfs.title}, cardText=#{home.overlay-pdfs.desc}, cardLink='overlay-pdf', toolIcon='layers', tags=#{overlay-pdfs.tags}, toolGroup='advance')}">
< / div >
< div
th:replace="~{fragments/card :: card(id='split-pdf-by-sections', cardTitle=#{home.split-by-sections.title}, cardText=#{home.split-by-sections.desc}, cardLink='split-pdf-by-sections', toolIcon='grid_on', tags=#{split-by-sections.tags}, toolGroup='advance')}">
< / div >
2024-10-14 23:34:41 +02:00
< div
th:replace="~{fragments/card :: card(id='split-pdf-by-chapters', cardTitle=#{home.splitPdfByChapters.title}, cardText=#{home.splitPdfByChapters.desc}, cardLink='split-pdf-by-chapters', toolIcon='book', tags=#{splitPdfByChapters.tags}, toolGroup='advance')}">
< / div >
2024-09-20 13:29:00 +02:00
< / div >
2024-08-08 21:38:36 +02:00
< / div >
2024-02-16 22:49:06 +01:00
< / div >
< / div >
< / div >
2024-05-05 13:19:53 +02:00
< th:block th:insert = "~{fragments/footer.html :: footer}" > < / th:block >
< / div >
2024-09-20 13:29:00 +02:00
2024-06-15 23:07:09 +02:00
<!-- Survey Modal -->
2024-10-14 23:34:41 +02:00
< div class = "modal fade" id = "surveyModal" tabindex = "-1" role = "dialog" aria-labelledby = "surveyModalLabel" aria-hidden = "true" >
2024-06-15 23:07:09 +02:00
< div class = "modal-dialog modal-dialog-centered" role = "document" >
< div class = "modal-content" >
< div class = "modal-header" >
< h5 class = "modal-title" id = "surveyModalLabel" th:text = "#{survey.title}" > Stirling-PDF Survey< / h5 >
< button type = "button" class = "btn-close" data-bs-dismiss = "modal" aria-label = "Close" > < / button >
< / div >
< div class = "modal-body" >
2024-10-14 23:34:41 +02:00
< p > < span th:text = "#{survey.changes}" > Stirling-PDF has changed since the last survey! To find out more please check our blog post here: < / span > < a href = "https://www.stirlingpdf.com/blog/stirling-pdf-future" target = "_blank" > Stirling PDF< / a > < / p >
< p th:text = "#{survey.changes2}" > With these changes we are getting paid business support and funding< / p >
2024-06-15 23:07:09 +02:00
< p th:text = "#{survey.please}" > Please consider taking our survey!< / p >
2024-10-14 23:34:41 +02:00
< p th:text = "#{survey.disabled}" > Survey popup will be disabled in following updates but available at foot of page)< / p >
< a href = "https://stirlingpdf.info/s/cm28y3niq000o56dv7liv8wsu" target = "_blank" class = "btn btn-primary" id = "takeSurvey" th:text = "#{survey.button}" > Take Survey< / a >
2024-06-15 23:07:09 +02:00
< / div >
< div class = "modal-footer" >
< div class = "form-check mb-3" >
< input type = "checkbox" id = "dontShowAgain" >
< label for = "dontShowAgain" th:text = "#{survey.dontShowAgain}" > Don't show again< / label >
< / div >
2024-09-20 13:29:00 +02:00
2024-06-15 23:07:09 +02:00
< button type = "button" class = "btn btn-secondary" data-bs-dismiss = "modal" th:text = "#{close}" > Close< / button >
2024-09-20 13:29:00 +02:00
2024-06-15 23:07:09 +02:00
< / div >
< / div >
< / div >
< / div >
2024-06-12 23:12:42 +02:00
2024-10-14 23:34:41 +02:00
<!-- Analytics Modal -->
< div class = "modal fade" id = "analyticsModal" tabindex = "-1" role = "dialog" aria-labelledby = "analyticsModalLabel" aria-hidden = "true" th:if = "${@analyticsPrompt}" >
< div class = "modal-dialog modal-dialog-centered" role = "document" >
< div class = "modal-content" >
< div class = "modal-header" >
< h5 class = "modal-title" id = "analyticsModalLabel" th:text = "#{analytics.title}" > Do you want make Stirling PDF better?< / h5 >
< button type = "button" class = "btn-close" data-bs-dismiss = "modal" aria-label = "Close" > < / button >
< / div >
< div class = "modal-body" >
< p th:text = "#{analytics.paragraph1}" > Stirling PDF has opt in analytics to help us improve the product. We do not track any personal information or file contents.< / p >
< p th:text = "#{analytics.paragraph2}" > Please consider enabling analytics to help Stirling-PDF grow and to allow us to understand our users better.< / p >
< p th:text = "#{analytics.settings}" > You can change the settings for analytics in the config/settings.yml file< / p >
< / div >
2024-10-22 12:10:09 +02:00
< div class = "modal-footer justify-content-between" >
< button type = "button" class = "btn btn-secondary" data-bs-dismiss = "modal" onclick = "setAnalytics(false)" th:text = "#{analytics.disable}" > Disable analytics< / button >
< button type = "button" class = "btn btn-primary" th:text = "#{analytics.enable}" onclick = "setAnalytics(true)" > Enable analytics< / button >
< / div >
2024-10-14 23:34:41 +02:00
< / div >
< / div >
< / div >
< script th:inline = "javascript" >
/*< ![CDATA[*/
const analyticsPromptBoolean = /*[[${@analyticsPrompt}]]*/ false;
document.addEventListener('DOMContentLoaded', function() {
if (analyticsPromptBoolean) {
const analyticsModal = new bootstrap.Modal(document.getElementById('analyticsModal'));
analyticsModal.show();
}
});
/*]]>*/
function setAnalytics(enabled) {
fetch('api/v1/settings/update-enable-analytics', {
method: 'POST',
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify(enabled)
})
.then(response => {
if (response.status === 200) {
console.log('Analytics setting updated successfully');
bootstrap.Modal.getInstance(document.getElementById('analyticsModal')).hide();
} else if (response.status === 208) {
console.log('Analytics setting has already been set. Please edit /config/settings.yml to change it.', response);
alert('Analytics setting has already been set. Please edit /config/settings.yml to change it.');
} else {
throw new Error('Unexpected response status: ' + response.status);
}
})
.catch(error => {
console.error('Error updating analytics setting:', error);
alert('An error occurred while updating the analytics setting. Please try again.');
});
}
2024-10-22 12:10:09 +02:00
document.addEventListener("DOMContentLoaded", function() {
const surveyVersion = "2.0";
const modal = new bootstrap.Modal(document.getElementById('surveyModal'));
const dontShowAgain = document.getElementById('dontShowAgain');
const takeSurveyButton = document.getElementById('takeSurvey');
const viewThresholds = [5, 10, 15, 22, 30, 50, 75, 100, 150, 200];
// Check if survey version changed and reset page views if it did
const storedVersion = localStorage.getItem('surveyVersion');
if (storedVersion & & storedVersion !== surveyVersion) {
localStorage.setItem('pageViews', '0');
}
2024-09-20 13:29:00 +02:00
2024-10-22 12:10:09 +02:00
let pageViews = parseInt(localStorage.getItem('pageViews') || '0');
2024-10-14 23:34:41 +02:00
2024-10-22 12:10:09 +02:00
pageViews++;
localStorage.setItem('pageViews', pageViews.toString());
2024-10-14 23:34:41 +02:00
2024-10-22 12:10:09 +02:00
function shouldShowSurvey() {
if (localStorage.getItem('dontShowSurvey') === 'true' ||
localStorage.getItem('surveyTaken') === 'true') {
return false;
2024-10-14 23:34:41 +02:00
}
2024-10-22 12:10:09 +02:00
// If survey version changed and we hit a threshold, show the survey
if (localStorage.getItem('surveyVersion') !== surveyVersion & &
viewThresholds.includes(pageViews)) {
return true;
2024-10-14 23:34:41 +02:00
}
return viewThresholds.includes(pageViews);
2024-10-22 12:10:09 +02:00
}
2024-06-12 23:12:42 +02:00
2024-10-22 12:10:09 +02:00
if (shouldShowSurvey()) {
2024-10-14 23:34:41 +02:00
modal.show();
2024-10-22 12:10:09 +02:00
}
2024-09-20 13:29:00 +02:00
2024-10-22 12:10:09 +02:00
dontShowAgain.addEventListener('change', function() {
2024-06-15 23:07:09 +02:00
if (this.checked) {
2024-10-22 12:10:09 +02:00
localStorage.setItem('dontShowSurvey', 'true');
localStorage.setItem('surveyVersion', surveyVersion);
2024-06-15 23:07:09 +02:00
} else {
2024-10-22 12:10:09 +02:00
localStorage.removeItem('dontShowSurvey');
localStorage.removeItem('surveyVersion');
2024-06-15 23:07:09 +02:00
}
2024-10-22 12:10:09 +02:00
});
2024-09-20 13:29:00 +02:00
2024-10-22 12:10:09 +02:00
takeSurveyButton.addEventListener('click', function() {
2024-10-14 23:34:41 +02:00
localStorage.setItem('surveyTaken', 'true');
2024-06-15 23:07:09 +02:00
localStorage.setItem('surveyVersion', surveyVersion);
modal.hide();
2024-10-14 23:34:41 +02:00
});
2024-10-22 12:10:09 +02:00
});
2024-06-15 23:07:09 +02:00
< / script >
2024-06-12 23:12:42 +02:00
2024-05-05 13:19:53 +02:00
< / body >
2024-10-14 23:34:41 +02:00
< / html >