{"id":502,"date":"2024-08-09T19:04:51","date_gmt":"2024-08-09T17:04:51","guid":{"rendered":"https:\/\/honadi.com\/outils\/?page_id=502"},"modified":"2024-09-27T17:17:53","modified_gmt":"2024-09-27T15:17:53","slug":"separateur-de-pdf","status":"publish","type":"page","link":"https:\/\/honadi.com\/outils\/separateur-de-pdf\/","title":{"rendered":"S\u00e9parateur de PDF"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-post\" data-elementor-id=\"502\" class=\"elementor elementor-502\" data-elementor-post-type=\"page\">\n\t\t\t\t<div class=\"elementor-element elementor-element-13e3ece e-flex e-con-boxed wpr-particle-no wpr-jarallax-no wpr-parallax-no wpr-sticky-section-no e-con e-parent\" data-id=\"13e3ece\" data-element_type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-12002b2 elementor-widget elementor-widget-html\" data-id=\"12002b2\" data-element_type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<div id=\"pdf-splitter\">\n    <style>\n        #pdf-splitter {\n            font-family: Arial, sans-serif;\n            max-width: 800px;\n            margin: 0 auto;\n            padding: 20px;\n            color: #030E41;\n        }\n        #pdf-splitter .upload-area {\n            border: 3px dashed #A0616A;\n            border-radius: 20px;\n            padding: 20px;\n            text-align: center;\n            margin-bottom: 20px;\n            background-color: #FFFFFF;\n        }\n        #pdf-splitter .upload-area.highlight {\n            border-color: #F9B200;\n            background-color: rgba(249, 178, 0, 0.1);\n        }\n        #pdf-splitter #file-input {\n            display: none;\n        }\n        #pdf-splitter label {\n            background-color: #F9B200;\n            color: #030E41;\n            padding: 10px 20px;\n            border-radius: 5px;\n            cursor: pointer;\n        }\n        #pdf-splitter #page-ranges {\n            width: 100%;\n            margin-bottom: 10px;\n        }\n        #pdf-splitter button {\n            background-color: #F9B200;\n            color: #030E41;\n            border: none;\n            padding: 10px 20px;\n            font-size: 16px;\n            border-radius: 5px;\n            cursor: pointer;\n        }\n        #pdf-splitter #result {\n            margin-top: 20px;\n        }\n        #pdf-splitter .download-link {\n            display: inline-block;\n            margin: 5px;\n            padding: 5px 10px;\n            background-color: #A0616A;\n            color: #FFFFFF;\n            text-decoration: none;\n            border-radius: 3px;\n        }\n    <\/style>\n    <div id=\"upload-area\" class=\"upload-area\">\n        <p>Glissez et d\u00e9posez votre fichier PDF ici ou cliquez pour s\u00e9lectionner<\/p>\n        <input type=\"file\" id=\"file-input\" accept=\".pdf\">\n        <label for=\"file-input\">Choisir un fichier<\/label>\n    <\/div>\n    <div>\n        <p>Entrez les plages de pages \u00e0 extraire (ex: 1-3, 4-5, 6-10):<\/p>\n        <input type=\"text\" id=\"page-ranges\" placeholder=\"1-3, 4-5, 6-10\">\n    <\/div>\n    <button id=\"split-button\">Diviser le PDF<\/button>\n    <div id=\"result\"><\/div>\n\n    <script src=\"https:\/\/unpkg.com\/pdf-lib@1.17.1\"><\/script>\n    <script src=\"https:\/\/unpkg.com\/downloadjs@1.4.7\"><\/script>\n    <script>\n        (function() {\n            const fileInput = document.getElementById('file-input');\n            const uploadArea = document.getElementById('upload-area');\n            const pageRanges = document.getElementById('page-ranges');\n            const splitButton = document.getElementById('split-button');\n            const resultDiv = document.getElementById('result');\n\n            let pdfFile = null;\n\n            \/\/ Prevent default drag behaviors\n            ['dragenter', 'dragover', 'dragleave', 'drop'].forEach(eventName => {\n                uploadArea.addEventListener(eventName, preventDefaults, false);\n                document.body.addEventListener(eventName, preventDefaults, false);\n            });\n\n            \/\/ Highlight drop area when item is dragged over it\n            ['dragenter', 'dragover'].forEach(eventName => {\n                uploadArea.addEventListener(eventName, highlight, false);\n            });\n\n            ['dragleave', 'drop'].forEach(eventName => {\n                uploadArea.addEventListener(eventName, unhighlight, false);\n            });\n\n            \/\/ Handle dropped files\n            uploadArea.addEventListener('drop', handleDrop, false);\n\n            function preventDefaults(e) {\n                e.preventDefault();\n                e.stopPropagation();\n            }\n\n            function highlight() {\n                uploadArea.classList.add('highlight');\n            }\n\n            function unhighlight() {\n                uploadArea.classList.remove('highlight');\n            }\n\n            function handleDrop(e) {\n                const dt = e.dataTransfer;\n                const files = dt.files;\n                handleFiles(files);\n            }\n\n            fileInput.addEventListener('change', (e) => {\n                handleFiles(e.target.files);\n            });\n\n            function handleFiles(files) {\n                if (files.length > 0 && files[0].type === 'application\/pdf') {\n                    pdfFile = files[0];\n                    uploadArea.textContent = `Fichier s\u00e9lectionn\u00e9 : ${pdfFile.name}`;\n                } else {\n                    alert('Veuillez s\u00e9lectionner un fichier PDF valide.');\n                }\n            }\n\n            splitButton.addEventListener('click', async () => {\n                if (!pdfFile) {\n                    alert('Veuillez d\\'abord s\u00e9lectionner un fichier PDF.');\n                    return;\n                }\n\n                const ranges = parsePageRanges(pageRanges.value);\n                if (ranges.length === 0) {\n                    alert('Veuillez entrer des plages de pages valides.');\n                    return;\n                }\n\n                try {\n                    const pdfBytes = await pdfFile.arrayBuffer();\n                    const pdfDoc = await PDFLib.PDFDocument.load(pdfBytes);\n                    const totalPages = pdfDoc.getPageCount();\n\n                    for (let i = 0; i < ranges.length; i++) {\n                        const [start, end] = ranges[i];\n                        if (start > totalPages || end > totalPages) {\n                            alert(`La plage ${start}-${end} d\u00e9passe le nombre total de pages (${totalPages}).`);\n                            continue;\n                        }\n\n                        const newPdfDoc = await PDFLib.PDFDocument.create();\n                        const copiedPages = await newPdfDoc.copyPages(pdfDoc, Array.from({length: end - start + 1}, (_, i) => start - 1 + i));\n                        copiedPages.forEach(page => newPdfDoc.addPage(page));\n\n                        const pdfBytes = await newPdfDoc.save();\n                        const blob = new Blob([pdfBytes], { type: 'application\/pdf' });\n                        const url = URL.createObjectURL(blob);\n\n                        const link = document.createElement('a');\n                        link.href = url;\n                        link.download = `${pdfFile.name.replace('.pdf', '')}_pages_${start}-${end}.pdf`;\n                        link.classList.add('download-link');\n                        link.textContent = `T\u00e9l\u00e9charger les pages ${start}-${end}`;\n                        resultDiv.appendChild(link);\n                    }\n                } catch (error) {\n                    console.error('Erreur lors de la division du PDF:', error);\n                    alert('Une erreur est survenue lors de la division du PDF. Veuillez r\u00e9essayer.');\n                }\n            });\n\n            function parsePageRanges(input) {\n                const ranges = input.split(',').map(range => range.trim());\n                return ranges.map(range => {\n                    const [start, end] = range.split('-').map(num => parseInt(num.trim(), 10));\n                    return [start, end || start];\n                }).filter(range => !isNaN(range[0]) && !isNaN(range[1]) && range[0] <= range[1]);\n            }\n        })();\n    <\/script>\n<\/div>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>Glissez et d\u00e9posez votre fichier PDF ici ou cliquez pour s\u00e9lectionner Choisir un fichier Entrez les plages de pages \u00e0 extraire (ex: 1-3, 4-5, 6-10): Diviser le PDF<\/p>\n","protected":false},"author":1,"featured_media":3006,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"site-sidebar-layout":"no-sidebar","site-content-layout":"","ast-site-content-layout":"full-width-container","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"disabled","ast-breadcrumbs-content":"","ast-featured-img":"disabled","footer-sml-layout":"","theme-transparent-header-meta":"","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"default","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"footnotes":""},"class_list":["post-502","page","type-page","status-publish","has-post-thumbnail","hentry"],"_links":{"self":[{"href":"https:\/\/honadi.com\/outils\/wp-json\/wp\/v2\/pages\/502","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/honadi.com\/outils\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/honadi.com\/outils\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/honadi.com\/outils\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/honadi.com\/outils\/wp-json\/wp\/v2\/comments?post=502"}],"version-history":[{"count":7,"href":"https:\/\/honadi.com\/outils\/wp-json\/wp\/v2\/pages\/502\/revisions"}],"predecessor-version":[{"id":512,"href":"https:\/\/honadi.com\/outils\/wp-json\/wp\/v2\/pages\/502\/revisions\/512"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/honadi.com\/outils\/wp-json\/wp\/v2\/media\/3006"}],"wp:attachment":[{"href":"https:\/\/honadi.com\/outils\/wp-json\/wp\/v2\/media?parent=502"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}