{"id":3096,"date":"2025-09-26T03:39:24","date_gmt":"2025-09-26T03:39:24","guid":{"rendered":"https:\/\/yamuparkoti.com\/?page_id=3096"},"modified":"2025-09-26T03:41:39","modified_gmt":"2025-09-26T03:41:39","slug":"jpeg-pdf-dual-converter","status":"publish","type":"page","link":"https:\/\/yamuparkoti.com\/it\/jpeg-pdf-dual-converter\/","title":{"rendered":"Convertitore JPEG PDF"},"content":{"rendered":"<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n    <div class=\"wp-block-bplugins-custom-html\" id='bPluginsCustomHtml-1'>\r\n    <!DOCTYPE html>\n<html lang=\"en\">\n<head>\n    <meta charset=\"UTF-8\">\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n    <title>JPEG \u2194 PDF Converter<\/title>\n    <script src=\"https:\/\/cdnjs.cloudflare.com\/ajax\/libs\/jspdf\/2.5.1\/jspdf.umd.min.js\"><\/script>\n    <script src=\"https:\/\/cdnjs.cloudflare.com\/ajax\/libs\/pdf.js\/3.4.120\/pdf.min.js\"><\/script>\n    <script src=\"https:\/\/cdnjs.cloudflare.com\/ajax\/libs\/jszip\/3.10.1\/jszip.min.js\"><\/script>\n    <script src=\"https:\/\/cdnjs.cloudflare.com\/ajax\/libs\/FileSaver.js\/2.0.5\/FileSaver.min.js\"><\/script>\n    <style>\n        :root {\n            --primary-color: #e74c3c;\n            --primary-dark: #c0392b;\n            --secondary-color: #2c3e50;\n            --light-gray: #f5f5f5;\n            --medium-gray: #e0e0e0;\n            --dark-gray: #95a5a6;\n            --text-color: #333;\n            --white: #ffffff;\n            --shadow: 0 4px 6px rgba(0, 0, 0, 0.1);\n            --transition: all 0.3s ease;\n        }\n\n        .dark-mode {\n            --primary-color: #e74c3c;\n            --primary-dark: #c0392b;\n            --secondary-color: #34495e;\n            --light-gray: #2c3e50;\n            --medium-gray: #34495e;\n            --dark-gray: #7f8c8d;\n            --text-color: #ecf0f1;\n            --white: #2c3e50;\n            --shadow: 0 4px 6px rgba(0, 0, 0, 0.3);\n        }\n\n        * {\n            margin: 0;\n            padding: 0;\n            box-sizing: border-box;\n            font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;\n        }\n\n        body {\n            background-color: var(--light-gray);\n            color: var(--text-color);\n            transition: var(--transition);\n            line-height: 1.6;\n        }\n\n        .container {\n            max-width: 1200px;\n            margin: 0 auto;\n            padding: 20px;\n        }\n\n        header {\n            text-align: center;\n            margin-bottom: 30px;\n        }\n\n        h1 {\n            font-size: 2.5rem;\n            margin-bottom: 10px;\n            color: var(--secondary-color);\n        }\n\n        .subtitle {\n            font-size: 1.2rem;\n            color: var(--dark-gray);\n        }\n\n        .mode-toggle {\n            display: flex;\n            justify-content: center;\n            margin-bottom: 30px;\n            background-color: var(--white);\n            border-radius: 10px;\n            overflow: hidden;\n            box-shadow: var(--shadow);\n            max-width: 500px;\n            margin-left: auto;\n            margin-right: auto;\n        }\n\n        .mode-btn {\n            flex: 1;\n            padding: 15px 20px;\n            border: none;\n            background-color: var(--white);\n            color: var(--text-color);\n            font-size: 1.1rem;\n            font-weight: 600;\n            cursor: pointer;\n            transition: var(--transition);\n        }\n\n        .mode-btn.active {\n            background-color: var(--primary-color);\n            color: white;\n        }\n\n        .mode-btn:not(.active):hover {\n            background-color: var(--medium-gray);\n        }\n\n        .main-content {\n            display: flex;\n            flex-wrap: wrap;\n            gap: 20px;\n            margin-bottom: 30px;\n        }\n\n        .upload-section {\n            flex: 1;\n            min-width: 300px;\n            background-color: var(--white);\n            border-radius: 10px;\n            padding: 25px;\n            box-shadow: var(--shadow);\n            display: flex;\n            flex-direction: column;\n            align-items: center;\n        }\n\n        .upload-area {\n            width: 100%;\n            border: 2px dashed var(--medium-gray);\n            border-radius: 10px;\n            padding: 40px 20px;\n            text-align: center;\n            margin-bottom: 20px;\n            transition: var(--transition);\n            cursor: pointer;\n        }\n\n        .upload-area:hover, .upload-area.dragover {\n            border-color: var(--primary-color);\n            background-color: rgba(231, 76, 60, 0.05);\n        }\n\n        .upload-icon {\n            font-size: 48px;\n            color: var(--dark-gray);\n            margin-bottom: 15px;\n        }\n\n        .upload-text {\n            margin-bottom: 20px;\n            color: var(--dark-gray);\n        }\n\n        .btn {\n            padding: 12px 25px;\n            background-color: var(--primary-color);\n            color: white;\n            border: none;\n            border-radius: 5px;\n            font-size: 1rem;\n            font-weight: 600;\n            cursor: pointer;\n            transition: var(--transition);\n            display: inline-flex;\n            align-items: center;\n            justify-content: center;\n        }\n\n        .btn:hover {\n            background-color: var(--primary-dark);\n            transform: translateY(-2px);\n        }\n\n        .btn:active {\n            transform: translateY(0);\n        }\n\n        .cloud-services {\n            display: flex;\n            gap: 15px;\n            margin-top: 15px;\n        }\n\n        .cloud-btn {\n            padding: 8px 15px;\n            background-color: var(--light-gray);\n            border: none;\n            border-radius: 5px;\n            cursor: pointer;\n            transition: var(--transition);\n            display: flex;\n            align-items: center;\n            gap: 5px;\n        }\n\n        .cloud-btn:hover {\n            background-color: var(--medium-gray);\n        }\n\n        .options-section {\n            flex: 0 0 250px;\n            background-color: var(--white);\n            border-radius: 10px;\n            padding: 25px;\n            box-shadow: var(--shadow);\n        }\n\n        .options-title {\n            font-size: 1.2rem;\n            margin-bottom: 20px;\n            color: var(--secondary-color);\n            border-bottom: 1px solid var(--medium-gray);\n            padding-bottom: 10px;\n        }\n\n        .option-group {\n            margin-bottom: 20px;\n        }\n\n        .option-label {\n            display: block;\n            margin-bottom: 8px;\n            font-weight: 600;\n        }\n\n        .option-select, .option-radio-group {\n            width: 100%;\n            padding: 10px;\n            border: 1px solid var(--medium-gray);\n            border-radius: 5px;\n            background-color: var(--white);\n            color: var(--text-color);\n        }\n\n        .option-radio-group {\n            display: flex;\n            gap: 15px;\n            border: none;\n            padding: 0;\n        }\n\n        .radio-option {\n            display: flex;\n            align-items: center;\n            gap: 5px;\n        }\n\n        .preview-section {\n            width: 100%;\n            background-color: var(--white);\n            border-radius: 10px;\n            padding: 25px;\n            box-shadow: var(--shadow);\n            margin-top: 20px;\n        }\n\n        .preview-title {\n            font-size: 1.2rem;\n            margin-bottom: 20px;\n            color: var(--secondary-color);\n            border-bottom: 1px solid var(--medium-gray);\n            padding-bottom: 10px;\n        }\n\n        .preview-content {\n            min-height: 200px;\n            display: flex;\n            flex-wrap: wrap;\n            gap: 15px;\n        }\n\n        .preview-item {\n            position: relative;\n            width: 150px;\n            height: 200px;\n            border: 1px solid var(--medium-gray);\n            border-radius: 5px;\n            overflow: hidden;\n            display: flex;\n            flex-direction: column;\n        }\n\n        .preview-img {\n            flex: 1;\n            object-fit: cover;\n            width: 100%;\n            height: 150px;\n        }\n\n        .preview-info {\n            padding: 8px;\n            font-size: 0.8rem;\n            background-color: var(--light-gray);\n        }\n\n        .preview-actions {\n            position: absolute;\n            top: 5px;\n            right: 5px;\n            display: flex;\n            gap: 5px;\n        }\n\n        .preview-action-btn {\n            width: 25px;\n            height: 25px;\n            border-radius: 50%;\n            border: none;\n            background-color: rgba(0, 0, 0, 0.5);\n            color: white;\n            display: flex;\n            align-items: center;\n            justify-content: center;\n            cursor: pointer;\n            font-size: 0.8rem;\n        }\n\n        .convert-btn-container {\n            text-align: center;\n            margin-top: 30px;\n        }\n\n        #convertBtn {\n            padding: 15px 40px;\n            font-size: 1.2rem;\n        }\n\n        .empty-preview {\n            width: 100%;\n            text-align: center;\n            padding: 40px 0;\n            color: var(--dark-gray);\n        }\n\n        .dark-mode-toggle {\n            position: fixed;\n            top: 20px;\n            right: 20px;\n            background-color: var(--white);\n            border: none;\n            border-radius: 50%;\n            width: 50px;\n            height: 50px;\n            display: flex;\n            align-items: center;\n            justify-content: center;\n            box-shadow: var(--shadow);\n            cursor: pointer;\n            z-index: 100;\n        }\n\n        .loading {\n            display: none;\n            position: fixed;\n            top: 0;\n            left: 0;\n            width: 100%;\n            height: 100%;\n            background-color: rgba(0, 0, 0, 0.7);\n            z-index: 1000;\n            align-items: center;\n            justify-content: center;\n            flex-direction: column;\n            color: white;\n        }\n\n        .spinner {\n            width: 50px;\n            height: 50px;\n            border: 5px solid rgba(255, 255, 255, 0.3);\n            border-radius: 50%;\n            border-top-color: white;\n            animation: spin 1s ease-in-out infinite;\n            margin-bottom: 15px;\n        }\n\n        @keyframes spin {\n            to { transform: rotate(360deg); }\n        }\n\n        .drag-handle {\n            cursor: move;\n            padding: 5px;\n        }\n\n        .progress-bar {\n            width: 80%;\n            max-width: 300px;\n            height: 10px;\n            background-color: rgba(255, 255, 255, 0.3);\n            border-radius: 5px;\n            margin-top: 15px;\n            overflow: hidden;\n        }\n\n        .progress {\n            height: 100%;\n            background-color: var(--primary-color);\n            width: 0%;\n            transition: width 0.3s ease;\n        }\n\n        \/* Responsive adjustments *\/\n        @media (max-width: 768px) {\n            .main-content {\n                flex-direction: column;\n            }\n            \n            .options-section {\n                width: 100%;\n            }\n            \n            h1 {\n                font-size: 2rem;\n            }\n            \n            .preview-item {\n                width: 120px;\n                height: 160px;\n            }\n            \n            .preview-img {\n                height: 110px;\n            }\n        }\n\n        @media (max-width: 480px) {\n            .container {\n                padding: 10px;\n            }\n            \n            .upload-section, .options-section, .preview-section {\n                padding: 15px;\n            }\n            \n            .mode-btn {\n                padding: 12px 15px;\n                font-size: 1rem;\n            }\n            \n            .preview-item {\n                width: 100px;\n                height: 140px;\n            }\n            \n            .preview-img {\n                height: 90px;\n            }\n        }\n    <\/style>\n<\/head>\n<body>\n    <div class=\"loading\" id=\"loading\">\n        <div class=\"spinner\"><\/div>\n        <p id=\"loadingText\">Converting files, please wait&#8230;<\/p>\n        <div class=\"progress-bar\">\n            <div class=\"progress\" id=\"progressBar\"><\/div>\n        <\/div>\n    <\/div>\n\n    <button class=\"dark-mode-toggle\" id=\"darkModeToggle\">\ud83c\udf19<\/button>\n\n    <div class=\"container\">\n        <header>\n            <h1>Convertitore JPEG \u2194 PDF<\/h1>\n            <p class=\"subtitle\">Converti JPEG in PDF o PDF in JPEG in pochi secondi.<\/p>\n        <\/header>\n\n        <div class=\"mode-toggle\">\n            <button class=\"mode-btn active\" id=\"jpgToPdfBtn\">JPG \u2192 PDF<\/button>\n            <button class=\"mode-btn\" id=\"pdfToJpgBtn\">PDF \u2192 JPG<\/button>\n        <\/div>\n\n        <div class=\"main-content\">\n            <div class=\"upload-section\">\n                <div class=\"upload-area\" id=\"uploadArea\">\n                    <div class=\"upload-icon\">\ud83d\udcc1<\/div>\n                    <p class=\"upload-text\">Drag &#038; drop your files here<\/p>\n                    <input type=\"file\" id=\"fileInput\" style=\"display: none;\" accept=\".jpg,.jpeg,.png,.pdf\" multiple>\n                    <button class=\"btn\" id=\"selectFilesBtn\">Seleziona file<\/button>\n                <\/div>\n\n                <div class=\"cloud-services\">\n                    <button class=\"cloud-btn\">\n                        <span>Google Drive<\/span>\n                    <\/button>\n                    <button class=\"cloud-btn\">\n                        <span>Dropbox<\/span>\n                    <\/button>\n                <\/div>\n            <\/div>\n\n            <div class=\"options-section\" id=\"optionsSection\">\n                <h3 class=\"options-title\">Opzioni PDF<\/h3>\n                \n                <div class=\"option-group\">\n                    <label class=\"option-label\">Orientamento della pagina<\/label>\n                    <div class=\"option-radio-group\">\n                        <label class=\"radio-option\">\n                            <input type=\"radio\" name=\"orientation\" value=\"portrait\" checked>\n                            Ritratto\n                        <\/label>\n                        <label class=\"radio-option\">\n                            <input type=\"radio\" name=\"orientation\" value=\"landscape\">\n                            Paesaggio\n                        <\/label>\n                    <\/div>\n                <\/div>\n                \n                <div class=\"option-group\">\n                    <label class=\"option-label\">Dimensioni della pagina<\/label>\n                    <select class=\"option-select\" id=\"pageSize\">\n                        <option value=\"a4\">Formato A4<\/option>\n                        <option value=\"letter\">Lettera<\/option>\n                        <option value=\"legal\">Legal<\/option>\n                    <\/select>\n                <\/div>\n                \n                <div class=\"option-group\">\n                    <label class=\"option-label\">Margine<\/label>\n                    <select class=\"option-select\" id=\"margin\">\n                        <option value=\"0\">Nessun margine<\/option>\n                        <option value=\"10\">Piccolo<\/option>\n                        <option value=\"20\" selected>Medio<\/option>\n                        <option value=\"30\">Grande<\/option>\n                    <\/select>\n                <\/div>\n            <\/div>\n        <\/div>\n\n        <div class=\"preview-section\">\n            <h3 class=\"preview-title\" id=\"previewTitle\">Immagini selezionate<\/h3>\n            <div class=\"preview-content\" id=\"previewContent\">\n                <div class=\"empty-preview\">Nessun file selezionato. Carica alcuni file per vederne l&#039;anteprima.<\/div>\n            <\/div>\n        <\/div>\n\n        <div class=\"convert-btn-container\">\n            <button class=\"btn\" id=\"convertBtn\">Converti in PDF<\/button>\n        <\/div>\n    <\/div>\n\n    <script>\n        \/\/ Global variables\n        let currentMode = 'jpgToPdf';\n        let uploadedFiles = [];\n        let pdfDoc = null;\n\n        \/\/ DOM elements\n        const jpgToPdfBtn = document.getElementById('jpgToPdfBtn');\n        const pdfToJpgBtn = document.getElementById('pdfToJpgBtn');\n        const selectFilesBtn = document.getElementById('selectFilesBtn');\n        const fileInput = document.getElementById('fileInput');\n        const uploadArea = document.getElementById('uploadArea');\n        const optionsSection = document.getElementById('optionsSection');\n        const previewTitle = document.getElementById('previewTitle');\n        const previewContent = document.getElementById('previewContent');\n        const convertBtn = document.getElementById('convertBtn');\n        const darkModeToggle = document.getElementById('darkModeToggle');\n        const loading = document.getElementById('loading');\n        const loadingText = document.getElementById('loadingText');\n        const progressBar = document.getElementById('progressBar');\n\n        \/\/ Initialize the app\n        document.addEventListener('DOMContentLoaded', function() {\n            \/\/ Set up event listeners\n            jpgToPdfBtn.addEventListener('click', () => switchMode('jpgToPdf'));\n            pdfToJpgBtn.addEventListener('click', () => switchMode('pdfToJpg'));\n            selectFilesBtn.addEventListener('click', () => fileInput.click());\n            fileInput.addEventListener('change', handleFileSelect);\n            convertBtn.addEventListener('click', handleConversion);\n            darkModeToggle.addEventListener('click', toggleDarkMode);\n\n            \/\/ Drag and drop functionality\n            uploadArea.addEventListener('dragover', (e) => {\n                e.preventDefault();\n                uploadArea.classList.add('dragover');\n            });\n\n            uploadArea.addEventListener('dragleave', () => {\n                uploadArea.classList.remove('dragover');\n            });\n\n            uploadArea.addEventListener('drop', (e) => {\n                e.preventDefault();\n                uploadArea.classList.remove('dragover');\n                handleDroppedFiles(e.dataTransfer.files);\n            });\n\n            \/\/ Initialize PDF.js worker\n            pdfjsLib.GlobalWorkerOptions.workerSrc = 'https:\/\/cdnjs.cloudflare.com\/ajax\/libs\/pdf.js\/3.4.120\/pdf.worker.min.js';\n        });\n\n        \/\/ Switch between conversion modes\n        function switchMode(mode) {\n            currentMode = mode;\n            \n            \/\/ Update active button\n            jpgToPdfBtn.classList.toggle('active', mode === 'jpgToPdf');\n            pdfToJpgBtn.classList.toggle('active', mode === 'pdfToJpg');\n            \n            \/\/ Update file input accept attribute\n            fileInput.accept = mode === 'jpgToPdf' ? '.jpg,.jpeg,.png' : '.pdf';\n            fileInput.multiple = mode === 'jpgToPdf';\n            \n            \/\/ Show\/hide options section\n            optionsSection.style.display = mode === 'jpgToPdf' ? 'block' : 'none';\n            \n            \/\/ Update preview title and convert button text\n            if (mode === 'jpgToPdf') {\n                previewTitle.textContent = 'Selected Images';\n                convertBtn.textContent = 'Convert to PDF';\n            } else {\n                previewTitle.textContent = 'PDF Pages';\n                convertBtn.textContent = 'Convert to JPG';\n            }\n            \n            \/\/ Clear previous files\n            uploadedFiles = [];\n            updatePreview();\n        }\n\n        \/\/ Handle file selection via input\n        function handleFileSelect(e) {\n            handleDroppedFiles(e.target.files);\n            fileInput.value = ''; \/\/ Reset input to allow selecting same file again\n        }\n\n        \/\/ Handle dropped files\n        function handleDroppedFiles(files) {\n            if (files.length === 0) return;\n            \n            \/\/ Validate file types based on current mode\n            for (let i = 0; i < files.length; i++) {\n                const file = files[i];\n                \n                if (currentMode === 'jpgToPdf') {\n                    if (!file.type.match('image\/jpeg') &#038;&#038; !file.type.match('image\/png')) {\n                        alert('Please upload only JPEG or PNG images in JPG to PDF mode.');\n                        return;\n                    }\n                } else {\n                    if (!file.type.match('application\/pdf')) {\n                        alert('Please upload only PDF files in PDF to JPG mode.');\n                        return;\n                    }\n                    \n                    \/\/ In PDF to JPG mode, only one PDF file is allowed\n                    if (files.length > 1) {\n                        alert('Please upload only one PDF file at a time.');\n                        return;\n                    }\n                }\n            }\n            \n            \/\/ Process the files\n            if (currentMode === 'jpgToPdf') {\n                processImageFiles(files);\n            } else {\n                processPdfFile(files[0]);\n            }\n        }\n\n        \/\/ Process uploaded image files\n        function processImageFiles(files) {\n            Array.from(files).forEach(file => {\n                const reader = new FileReader();\n                \n                reader.onload = function(e) {\n                    uploadedFiles.push({\n                        file: file,\n                        dataUrl: e.target.result,\n                        id: Date.now() + Math.random()\n                    });\n                    \n                    updatePreview();\n                };\n                \n                reader.readAsDataURL(file);\n            });\n        }\n\n        \/\/ Process uploaded PDF file\n        function processPdfFile(file) {\n            showLoading(true, 'Loading PDF file...');\n            \n            const reader = new FileReader();\n            \n            reader.onload = function(e) {\n                const typedArray = new Uint8Array(e.target.result);\n                \n                \/\/ Use PDF.js to parse the PDF\n                pdfjsLib.getDocument(typedArray).promise.then(pdf => {\n                    pdfDoc = pdf;\n                    uploadedFiles = [];\n                    \n                    \/\/ Extract each page as an image\n                    const numPages = pdf.numPages;\n                    const pagePromises = [];\n                    \n                    for (let i = 1; i <= numPages; i++) {\n                        pagePromises.push(\n                            pdf.getPage(i).then(page => {\n                                const viewport = page.getViewport({ scale: 1.5 });\n                                \n                                const canvas = document.createElement('canvas');\n                                const context = canvas.getContext('2d');\n                                canvas.height = viewport.height;\n                                canvas.width = viewport.width;\n                                \n                                const renderContext = {\n                                    canvasContext: context,\n                                    viewport: viewport\n                                };\n                                \n                                return page.render(renderContext).promise.then(() => {\n                                    return {\n                                        pageNum: i,\n                                        dataUrl: canvas.toDataURL('image\/jpeg'),\n                                        fileName: `page-${i}.jpg`\n                                    };\n                                });\n                            })\n                        );\n                    }\n                    \n                    Promise.all(pagePromises).then(pages => {\n                        uploadedFiles = pages;\n                        updatePreview();\n                        showLoading(false);\n                    });\n                }).catch(error => {\n                    console.error('Error loading PDF:', error);\n                    alert('Error loading PDF file. Please try another file.');\n                    showLoading(false);\n                });\n            };\n            \n            reader.readAsArrayBuffer(file);\n        }\n\n        \/\/ Update the preview section\n        function updatePreview() {\n            previewContent.innerHTML = '';\n            \n            if (uploadedFiles.length === 0) {\n                previewContent.innerHTML = '<div class=\"empty-preview\">No files selected yet. Upload some files to see preview.<\/div>';\n                return;\n            }\n            \n            if (currentMode === 'jpgToPdf') {\n                \/\/ For JPG to PDF mode, show image thumbnails\n                uploadedFiles.forEach((file, index) => {\n                    const previewItem = document.createElement('div');\n                    previewItem.className = 'preview-item';\n                    previewItem.setAttribute('data-id', file.id);\n                    previewItem.draggable = true;\n                    \n                    previewItem.innerHTML = `\n                        <img decoding=\"async\" src=\"${file.dataUrl}\" alt=\"Preview\" class=\"preview-img\">\n                        <div class=\"preview-info\">\n                            <div>${file.file.name}<\/div>\n                            <div>${(file.file.size \/ 1024).toFixed(2)} KB<\/div>\n                        <\/div>\n                        <div class=\"preview-actions\">\n                            <button class=\"preview-action-btn remove-btn\">\u00d7<\/button>\n                            <button class=\"preview-action-btn drag-handle\">\u2261<\/button>\n                        <\/div>\n                    `;\n                    \n                    previewContent.appendChild(previewItem);\n                    \n                    \/\/ Add event listeners for the buttons\n                    const removeBtn = previewItem.querySelector('.remove-btn');\n                    removeBtn.addEventListener('click', () => removeFile(file.id));\n                    \n                    \/\/ Drag and drop for reordering\n                    previewItem.addEventListener('dragstart', (e) => {\n                        e.dataTransfer.setData('text\/plain', index);\n                        previewItem.classList.add('dragging');\n                    });\n                    \n                    previewItem.addEventListener('dragend', () => {\n                        previewItem.classList.remove('dragging');\n                    });\n                });\n                \n                \/\/ Make the preview area a drop zone for reordering\n                previewContent.addEventListener('dragover', (e) => {\n                    e.preventDefault();\n                });\n                \n                previewContent.addEventListener('drop', (e) => {\n                    e.preventDefault();\n                    const fromIndex = parseInt(e.dataTransfer.getData('text\/plain'));\n                    const toIndex = getDragAfterElement(previewContent, e.clientY);\n                    \n                    if (toIndex !== null && fromIndex !== toIndex) {\n                        const movedItem = uploadedFiles.splice(fromIndex, 1)[0];\n                        uploadedFiles.splice(toIndex, 0, movedItem);\n                        updatePreview();\n                    }\n                });\n            } else {\n                \/\/ For PDF to JPG mode, show page previews\n                uploadedFiles.forEach((page, index) => {\n                    const previewItem = document.createElement('div');\n                    previewItem.className = 'preview-item';\n                    \n                    previewItem.innerHTML = `\n                        <img decoding=\"async\" src=\"${page.dataUrl}\" alt=\"Page ${page.pageNum}\" class=\"preview-img\">\n                        <div class=\"preview-info\">\n                            <div>Page ${page.pageNum}<\/div>\n                        <\/div>\n                    `;\n                    \n                    previewContent.appendChild(previewItem);\n                });\n            }\n        }\n\n        \/\/ Helper function for drag and drop reordering\n        function getDragAfterElement(container, y) {\n            const draggableElements = [...container.querySelectorAll('.preview-item:not(.dragging)')];\n            \n            return draggableElements.reduce((closest, child, index) => {\n                const box = child.getBoundingClientRect();\n                const offset = y - box.top - box.height \/ 2;\n                \n                if (offset < 0 &#038;&#038; offset > closest.offset) {\n                    return { offset: offset, element: child, index: index };\n                } else {\n                    return closest;\n                }\n            }, { offset: Number.NEGATIVE_INFINITY }).index;\n        }\n\n        \/\/ Remove a file from the preview\n        function removeFile(id) {\n            uploadedFiles = uploadedFiles.filter(file => file.id !== id);\n            updatePreview();\n        }\n\n        \/\/ Handle the conversion process\n        function handleConversion() {\n            if (uploadedFiles.length === 0) {\n                alert('Please upload files first.');\n                return;\n            }\n            \n            if (currentMode === 'jpgToPdf') {\n                convertJpgToPdf();\n            } else {\n                convertPdfToJpg();\n            }\n        }\n\n        \/\/ Convert JPG images to PDF - FIXED VERSION\n        async function convertJpgToPdf() {\n            showLoading(true, 'Converting images to PDF...');\n            \n            try {\n                const { jsPDF } = window.jspdf;\n                const orientation = document.querySelector('input[name=\"orientation\"]:checked').value;\n                const pageSize = document.getElementById('pageSize').value;\n                const margin = parseInt(document.getElementById('margin').value);\n                \n                \/\/ Set page size and orientation\n                let pageWidth, pageHeight;\n                switch(pageSize) {\n                    case 'a4':\n                        pageWidth = 210;\n                        pageHeight = 297;\n                        break;\n                    case 'letter':\n                        pageWidth = 216;\n                        pageHeight = 279;\n                        break;\n                    case 'legal':\n                        pageWidth = 216;\n                        pageHeight = 356;\n                        break;\n                }\n                \n                if (orientation === 'landscape') {\n                    [pageWidth, pageHeight] = [pageHeight, pageWidth];\n                }\n                \n                \/\/ Create PDF document\n                const doc = new jsPDF({\n                    orientation: orientation,\n                    unit: 'mm',\n                    format: pageSize\n                });\n                \n                \/\/ Process images one by one with progress tracking\n                for (let i = 0; i < uploadedFiles.length; i++) {\n                    const file = uploadedFiles[i];\n                    \n                    \/\/ Update progress\n                    const progress = ((i + 1) \/ uploadedFiles.length) * 100;\n                    updateProgress(progress);\n                    loadingText.textContent = `Converting image ${i + 1} of ${uploadedFiles.length}...`;\n                    \n                    \/\/ Create a promise to handle image loading\n                    await new Promise((resolve, reject) => {\n                        const img = new Image();\n                        img.onload = function() {\n                            try {\n                                \/\/ Add new page if not the first image\n                                if (i > 0) {\n                                    doc.addPage();\n                                }\n                                \n                                const imgWidth = img.width;\n                                const imgHeight = img.height;\n                                \n                                \/\/ Calculate dimensions to fit the page with margins\n                                const contentWidth = pageWidth - (margin * 2);\n                                const contentHeight = pageHeight - (margin * 2);\n                                \n                                let width = contentWidth;\n                                let height = (imgHeight * contentWidth) \/ imgWidth;\n                                \n                                if (height > contentHeight) {\n                                    height = contentHeight;\n                                    width = (imgWidth * contentHeight) \/ imgHeight;\n                                }\n                                \n                                const x = (pageWidth - width) \/ 2;\n                                const y = (pageHeight - height) \/ 2;\n                                \n                                \/\/ Add image to PDF\n                                doc.addImage(img, 'JPEG', x, y, width, height);\n                                resolve();\n                            } catch (error) {\n                                reject(error);\n                            }\n                        };\n                        \n                        img.onerror = function() {\n                            reject(new Error(`Failed to load image: ${file.file.name}`));\n                        };\n                        \n                        img.src = file.dataUrl;\n                    });\n                }\n                \n                \/\/ Save the PDF\n                doc.save('converted.pdf');\n                showLoading(false);\n            } catch (error) {\n                console.error('Error converting images to PDF:', error);\n                alert('Error converting images to PDF. Please try again.');\n                showLoading(false);\n            }\n        }\n\n        \/\/ Convert PDF to JPG images\n        function convertPdfToJpg() {\n            if (uploadedFiles.length === 0) {\n                alert('No PDF pages to convert.');\n                return;\n            }\n            \n            showLoading(true, 'Preparing JPG files...');\n            \n            \/\/ Use setTimeout to allow the UI to update before the heavy processing\n            setTimeout(() => {\n                if (uploadedFiles.length === 1) {\n                    \/\/ Single page - download directly\n                    const link = document.createElement('a');\n                    link.href = uploadedFiles[0].dataUrl;\n                    link.download = uploadedFiles[0].fileName;\n                    link.click();\n                    showLoading(false);\n                } else {\n                    \/\/ Multiple pages - create a ZIP file\n                    const zip = new JSZip();\n                    \n                    uploadedFiles.forEach((page, index) => {\n                        \/\/ Convert data URL to blob\n                        const blob = dataURLToBlob(page.dataUrl);\n                        zip.file(page.fileName, blob);\n                    });\n                    \n                    zip.generateAsync({ type: 'blob' }).then(content => {\n                        saveAs(content, 'converted-pages.zip');\n                        showLoading(false);\n                    });\n                }\n            }, 100);\n        }\n\n        \/\/ Helper function to convert data URL to blob\n        function dataURLToBlob(dataURL) {\n            const parts = dataURL.split(';base64,');\n            const contentType = parts[0].split(':')[1];\n            const raw = window.atob(parts[1]);\n            const rawLength = raw.length;\n            const uInt8Array = new Uint8Array(rawLength);\n            \n            for (let i = 0; i < rawLength; ++i) {\n                uInt8Array[i] = raw.charCodeAt(i);\n            }\n            \n            return new Blob([uInt8Array], { type: contentType });\n        }\n\n        \/\/ Toggle dark mode\n        function toggleDarkMode() {\n            document.body.classList.toggle('dark-mode');\n            darkModeToggle.textContent = document.body.classList.contains('dark-mode') ? '\u2600\ufe0f' : '\ud83c\udf19';\n        }\n\n        \/\/ Show\/hide loading indicator\n        function showLoading(show, text = 'Converting files, please wait...') {\n            loading.style.display = show ? 'flex' : 'none';\n            loadingText.textContent = text;\n            if (!show) {\n                updateProgress(0);\n            }\n        }\n\n        \/\/ Update progress bar\n        function updateProgress(percent) {\n            progressBar.style.width = percent + '%';\n        }\n    <\/script>\n<\/body>\n<\/html>    <\/div>\r\n    \n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n\n<div class=\"wp-block-kadence-column kadence-column3096_e9ba59-24\"><div class=\"kt-inside-inner-col\"><\/div><\/div>\n\n\n\n<div class=\"wp-block-kadence-column kadence-column3096_3ad6bf-c2\"><div class=\"kt-inside-inner-col\">\n<h1 class=\"wp-block-heading\">Convertitore JPEG PDF: strumento semplice per organizzare le tue immagini<\/h1>\n\n\n\n<p>A volte le immagini sono disordinate. File diversi. Dimensioni diverse. Difficili da condividere.<\/p>\n\n\n\n<p>Ecco dove un <strong>Convertitore JPEG PDF<\/strong> salva la situazione. Trasforma le immagini sparse in un unico documento pulito. Nessuna confusione.<br>Niente stress. Ordina e basta.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Che cos&#039;\u00e8 un convertitore JPEG PDF?<\/h2>\n\n\n\n<p>Un convertitore JPEG-PDF \u00e8 uno strumento online o offline che converte i file immagine in formato PDF.<br>Ci\u00f2 significa che le tue immagini diventano parte di un tipo di file universale. Chiunque le riceva, pu\u00f2 aprirle.<br>Non servono software speciali o app aggiuntive. Funziona ovunque, dai telefoni ai computer desktop.<\/p>\n\n\n\n<p>Immagina di disporre le foto sciolte in un libro. Le foto rimangono le stesse, ma ora sono disposte in modo ordinato.<br>Chiunque pu\u00f2 sfogliarli senza perdere una pagina.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Perch\u00e9 le persone lo usano?<\/h2>\n\n\n\n<p>Diverse persone usano quotidianamente un convertitore JPEG-PDF. Gli studenti lo usano per le immagini dei compiti e per i compiti a casa. Chi cerca lavoro lo usa per preparare certificati scansionati.<br>Gli insegnanti lo usano per organizzare gli appunti in classe. Le aziende lo usano per contratti e relazioni.<br>Le famiglie lo usano per raccogliere i ricordi in un unico file.<\/p>\n\n\n\n<p>La bellezza sta nella sua semplicit\u00e0.<br>Invece di inviare dieci foto separate, si invia un unico PDF. Il destinatario apprezza l&#039;impegno e la chiarezza. Il risultato \u00e8 professionale, organizzato e curato.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Come funziona in pratica<\/h2>\n\n\n\n<p>Utilizzare questo convertitore \u00e8 semplice.<br>Per prima cosa, carica i tuoi file JPEG sullo strumento. In secondo luogo, disponili nell&#039;ordine corretto.<br>Terzo, regola margini, dimensioni o orientamento, se necessario. Infine, clicca su &#034;Converti&#034; e attendi qualche secondo.<\/p>\n\n\n\n<p>Il risultato?<br>Un unico documento PDF ordinato e organizzato. Puoi scaricarlo, condividerlo o stamparlo all&#039;istante.<\/p>\n\n\n\n<p>Anche se non sei un esperto di tecnologia, puoi farlo. \u00c8 pensato per tutti, dai principianti agli utenti pi\u00f9 esperti.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Caratteristiche di un affidabile convertitore JPEG PDF<\/h2>\n\n\n\n<p>Non tutti i convertitori sono affidabili.<br>Alcune riducono la qualit\u00e0 o richiedono troppo tempo. Altre potrebbero non funzionare su determinati dispositivi.<\/p>\n\n\n\n<p>I migliori convertitori hanno caratteristiche comuni. Sono veloci, forniscono risultati in pochi secondi e preservano la qualit\u00e0 dell&#039;immagine senza distorsioni. <\/p>\n\n\n\n<p>Funzionano sia sui laptop che sugli smartphone.<br>Garantiscono la sicurezza con la protezione dei file. E cancellano i file dopo la conversione.<\/p>\n\n\n\n<p>Verifica sempre queste caratteristiche prima di sceglierne una. In questo modo, la tua esperienza sar\u00e0 fluida e sicura.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Perch\u00e9 gli strumenti online sono migliori<\/h2>\n\n\n\n<p>Sono disponibili opzioni software.<br>Ma gli strumenti online semplificano la vita.<\/p>\n\n\n\n<p>Non richiedono installazione. Risparmiano spazio di archiviazione. Funzionano istantaneamente su diverse piattaforme.<br>Sono disponibili in qualsiasi momento, semplicemente tramite browser.<\/p>\n\n\n\n<p>Per studenti, lavoratori e famiglie, questa \u00e8 una benedizione. Nessun download. Nessun aggiornamento.<br>Semplicemente un rapido accesso a ci\u00f2 di cui hai bisogno.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">\u00c8 sicuro da usare?<\/h2>\n\n\n\n<p>S\u00ec, se scegli strumenti affidabili.<br>Cerca siti sicuri che utilizzano HTTPS. Assicurati che i file vengano eliminati automaticamente dopo l&#039;elaborazione. Leggi le recensioni degli utenti per verificarne l&#039;attendibilit\u00e0.<\/p>\n\n\n\n<p>Un buon convertitore JPEG PDF rispetter\u00e0 la tua privacy.<br>Non conserva n\u00e9 utilizza in modo improprio i tuoi file. Semplicemente elabora, converte e cancella i dati rapidamente.<\/p>\n\n\n\n<p>Qui la fiducia \u00e8 importante.<br>Quindi non accontentarti di siti web casuali e sconosciuti.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Esempio nella vita reale<\/h2>\n\n\n\n<p>Supponiamo che tu sia uno studente.<br>Scatta foto del tuo compito di matematica. L&#039;insegnante accetta solo foto in formato PDF.<\/p>\n\n\n\n<p>Invece di farti prendere dal panico, apri il convertitore.<br>Carichi tre immagini JPEG nello strumento e le disponga in ordine dalla pagina uno alla pagina tre.<br>Premi &#034;Converti&#034; e attendi qualche secondo.<\/p>\n\n\n\n<p>Ora hai un file PDF pronto per essere inviato.<br>Sembra ordinato e professionale. Il tuo insegnante \u00e8 contento. Risparmi tempo ed eviti stress.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Vantaggi principali<\/h2>\n\n\n\n<p>I vantaggi sono semplici ma efficaci. Dona ai documenti un aspetto professionale. Riduce la confusione quando si inviano pi\u00f9 file.<br>Permette una pi\u00f9 facile archiviazione e condivisione. Fa risparmiare tempo sia al mittente che al destinatario. Funziona su qualsiasi dispositivo senza problemi di compatibilit\u00e0.<\/p>\n\n\n\n<p>Questo piccolo passo nella conversione da JPEG a PDF pu\u00f2 aumentare la tua credibilit\u00e0. Dimostra che tieni alla presentazione e all&#039;ordine.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Chiamata all&#039;azione<\/h2>\n\n\n\n<p>Adesso tocca a te.<br>Basta inviare file di immagini disordinati. Basta preoccuparsi degli errori di formato.<\/p>\n\n\n\n<p>\ud83d\udc49 Utilizza il nostro <strong>convertitore PDF JPEG gratuito<\/strong> Oggi.<br>Carica i tuoi file. Clicca una volta. Scarica subito.<\/p>\n\n\n\n<p>\u00c8 veloce.<br>\u00c8 semplice.<br>\u00c8 sicuro.<\/p>\n\n\n\n<p>Perfetto per studenti, professionisti e famiglie. Trasforma subito le tue foto in PDF puliti.<br>Siate professionali. Siate organizzati.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Considerazioni finali<\/h2>\n\n\n\n<p>Nell&#039;era digitale, i piccoli strumenti fanno una grande differenza. <strong>Convertitore JPEG PDF<\/strong> \u00e8 uno di quegli strumenti.<br>Fa risparmiare tempo, aggiunge professionalit\u00e0 e garantisce chiarezza.<\/p>\n\n\n\n<p>Non servono competenze avanzate per utilizzarlo. Non serve investire soldi in software. Bastano pochi clic.<\/p>\n\n\n\n<p>La prossima volta che qualcuno ti chiede un PDF, non stressarti. Saprai esattamente cosa fare. Carica, converti e condividi in tutta sicurezza.<\/p>\n\n\n\n<p>\ud83d\udc49 Prova il nostro <strong>Convertitore JPEG PDF<\/strong> ora per <a href=\"https:\/\/shopify.pxf.io\/AWzz5D\" data-type=\"link\" data-id=\"https:\/\/shopify.pxf.io\/AWzz5D\" target=\"_blank\" rel=\"noopener\">Shopifying<\/a> esperienza.<br>Organizza i tuoi file in modo intelligente.<\/p>\n\n\n\n<p>Informazioni aggiuntive \u2014 <a href=\"https:\/\/yamuparkoti.com\/it\/compress-jpg-file\/\" data-type=\"link\" data-id=\"https:\/\/yamuparkoti.com\/compress-jpg-file\/\">Comprimi Jpg<\/a> | <a href=\"https:\/\/yamuparkoti.com\/it\/word-count-checker\/\" data-type=\"link\" data-id=\"https:\/\/yamuparkoti.com\/word-count-checker\/\">Controllo del conteggio delle parole<\/a><\/p>\n<\/div><\/div>\n\n\n\n<div class=\"wp-block-kadence-column kadence-column3096_122320-86\"><div class=\"kt-inside-inner-col\"><\/div><\/div>","protected":false},"excerpt":{"rendered":"","protected":false},"author":1,"featured_media":3104,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_kadence_starter_templates_imported_post":false,"_kad_post_transparent":"","_kad_post_title":"","_kad_post_layout":"","_kad_post_sidebar_id":"","_kad_post_content_style":"","_kad_post_vertical_padding":"","_kad_post_feature":"","_kad_post_feature_position":"","_kad_post_header":false,"_kad_post_footer":false,"footnotes":""},"class_list":["post-3096","page","type-page","status-publish","has-post-thumbnail","hentry"],"rankMath":{"parentDomain":"yamuparkoti.com","noFollowDomains":[],"noFollowExcludeDomains":[],"noFollowExternalLinks":false,"featuredImageNotice":"L&#039;immagine in evidenza dovrebbe essere di almeno 200 x 200 pixel per essere ripresa da Facebook e altri siti di social media.","pluginReviewed":false,"postSettings":{"linkSuggestions":true,"useFocusKeyword":false},"frontEndScore":false,"postName":"jpeg-pdf-dual-converter","permalinkFormat":"https:\/\/yamuparkoti.com\/it\/%pagename%\/","showLockModifiedDate":true,"assessor":{"focusKeywordLink":"https:\/\/yamuparkoti.com\/wp-admin\/edit.php?focus_keyword=%focus_keyword%&post_type=%post_type%","hasTOCPlugin":false,"primaryTaxonomy":false,"serpData":{"title":"JPEG PDF Converter | Free Online Tool to Convert Images","description":"Convert JPEG to PDF in seconds with our free online JPEG PDF converter. Fast, secure, and easy to use for students, professionals, and families.","focusKeywords":"jpeg pdf,jpeg pdf converter,jpg pdf converter,jpg pdf","pillarContent":false,"canonicalUrl":"","breadcrumbTitle":"","advancedRobots":{"max-snippet":"-1","max-video-preview":"-1","max-image-preview":"large"},"facebookTitle":"","facebookDescription":"","facebookImage":"","facebookImageID":"","facebookHasOverlay":false,"facebookImageOverlay":"","facebookAuthor":"","twitterCardType":"","twitterUseFacebook":true,"twitterTitle":"","twitterDescription":"","twitterImage":"","twitterImageID":"","twitterHasOverlay":false,"twitterImageOverlay":"","twitterPlayerUrl":"","twitterPlayerSize":"","twitterPlayerStream":"","twitterPlayerStreamCtype":"","twitterAppDescription":"","twitterAppIphoneName":"","twitterAppIphoneID":"","twitterAppIphoneUrl":"","twitterAppIpadName":"","twitterAppIpadID":"","twitterAppIpadUrl":"","twitterAppGoogleplayName":"","twitterAppGoogleplayID":"","twitterAppGoogleplayUrl":"","twitterAppCountry":"","robots":{"index":true},"twitterAuthor":"nome utente","primaryTerm":0,"authorName":"Yam Bahadur Uparkoti","titleTemplate":"%title% %sep% %sitename%","descriptionTemplate":"%excerpt%","showScoreFrontend":true,"lockModifiedDate":false},"powerWords":["incredibile","sorprendente","meraviglioso","unico","bello","felicit\u00e0","brillante","affascinante","carismatico","scioccante","chiaro","completamente","riservato","fiducia","significativo","creativo","definitivamente","delizioso","dimostrare","sbrigati","determinato","degno","dinamico","impressionante","essenziale","ispiratore","innovativo","intenso","efficace","magico","magnifico","storico","importante","incredibile","indispensabile","indimenticabile","irresistibile","leggendario","luminoso","lusso","magico","magnifico","maestoso","memorabile","miracoloso","motivante","necessario","nuovo","ufficiale","perfetto","appassionato","persuasivo","fenomenale","piacere","popolare","potere","prestigioso","prodigioso","profondo","prospero","potente","qualit\u00e0","radiante","veloce","di successo","rivoluzionario","soddisfatto","sicurezza","sensazionale","sereno","lussuoso","splendido","sublime","sorprendente","talentuoso","terrificante","unico","valore","vibrante","vittorioso","vivace","veramente","zelante","autentico","avventuroso","spettacolare","esclusivo","garantito","straordinario","favoloso","affascinante","formidabile","geniale","grandioso","gratuito","abile","illimitato","impeccabile","infallibile","infinitamente","influente","ingegnoso","indimenticabile","insostituibile","leader","maestro","notevole","innovativo","pioniere","potente","riconosciuto","rivoluzionario","sorprendente","superiore","trionfante","ultra","coraggioso","prezioso","avanguardia","vigoroso","visionario","volont\u00e0","vitale","trionfo","glorioso","inarrestabile","ineguagliabile","intelligente","invincibile","libert\u00e0","orgoglio","pace","progresso","rinnovato","saggezza","soddisfazione","sicuro","serenit\u00e0","superamento","talento","trascendente","trasformativo","coraggio","vittoria"],"diacritics":{"A":"[\\u0041\\u24B6\\uFF21\\u00C0\\u00C1\\u00C2\\u1EA6\\u1EA4\\u1EAA\\u1EA8\\u00C3\\u0100\\u0102\\u1EB0\\u1EAE\\u1EB4\\u1EB2\\u0226\\u01E0\\u00C4\\u01DE\\u1EA2\\u00C5\\u01FA\\u01CD\\u0200\\u0202\\u1EA0\\u1EAC\\u1EB6\\u1E00\\u0104\\u023A\\u2C6F]","AA":"[\\uA732]","AE":"[\\u00C6\\u01FC\\u01E2]","AO":"[\\uA734]","AU":"[\\uA736]","AV":"[\\uA738\\uA73A]","AY":"[\\uA73C]","B":"[\\u0042\\u24B7\\uFF22\\u1E02\\u1E04\\u1E06\\u0243\\u0182\\u0181]","C":"[\\u0043\\u24B8\\uFF23\\u0106\\u0108\\u010A\\u010C\\u00C7\\u1E08\\u0187\\u023B\\uA73E]","D":"[\\u0044\\u24B9\\uFF24\\u1E0A\\u010E\\u1E0C\\u1E10\\u1E12\\u1E0E\\u0110\\u018B\\u018A\\u0189\\uA779]","DZ":"[\\u01F1\\u01C4]","Dz":"[\\u01F2\\u01C5]","E":"[\\u0045\\u24BA\\uFF25\\u00C8\\u00C9\\u00CA\\u1EC0\\u1EBE\\u1EC4\\u1EC2\\u1EBC\\u0112\\u1E14\\u1E16\\u0114\\u0116\\u00CB\\u1EBA\\u011A\\u0204\\u0206\\u1EB8\\u1EC6\\u0228\\u1E1C\\u0118\\u1E18\\u1E1A\\u0190\\u018E]","F":"[\\u0046\\u24BB\\uFF26\\u1E1E\\u0191\\uA77B]","G":"[\\u0047\\u24BC\\uFF27\\u01F4\\u011C\\u1E20\\u011E\\u0120\\u01E6\\u0122\\u01E4\\u0193\\uA7A0\\uA77D\\uA77E]","H":"[\\u0048\\u24BD\\uFF28\\u0124\\u1E22\\u1E26\\u021E\\u1E24\\u1E28\\u1E2A\\u0126\\u2C67\\u2C75\\uA78D]","I":"[\\u0049\\u24BE\\uFF29\\u00CC\\u00CD\\u00CE\\u0128\\u012A\\u012C\\u0130\\u00CF\\u1E2E\\u1EC8\\u01CF\\u0208\\u020A\\u1ECA\\u012E\\u1E2C\\u0197]","J":"[\\u004A\\u24BF\\uFF2A\\u0134\\u0248]","K":"[\\u004B\\u24C0\\uFF2B\\u1E30\\u01E8\\u1E32\\u0136\\u1E34\\u0198\\u2C69\\uA740\\uA742\\uA744\\uA7A2]","L":"[\\u004C\\u24C1\\uFF2C\\u013F\\u0139\\u013D\\u1E36\\u1E38\\u013B\\u1E3C\\u1E3A\\u0141\\u023D\\u2C62\\u2C60\\uA748\\uA746\\uA780]","LJ":"[\\u01C7]","Lj":"[\\u01C8]","M":"[\\u004D\\u24C2\\uFF2D\\u1E3E\\u1E40\\u1E42\\u2C6E\\u019C]","N":"[\\u004E\\u24C3\\uFF2E\\u01F8\\u0143\\u00D1\\u1E44\\u0147\\u1E46\\u0145\\u1E4A\\u1E48\\u0220\\u019D\\uA790\\uA7A4]","NJ":"[\\u01CA]","Nj":"[\\u01CB]","O":"[\\u004F\\u24C4\\uFF2F\\u00D2\\u00D3\\u00D4\\u1ED2\\u1ED0\\u1ED6\\u1ED4\\u00D5\\u1E4C\\u022C\\u1E4E\\u014C\\u1E50\\u1E52\\u014E\\u022E\\u0230\\u00D6\\u022A\\u1ECE\\u0150\\u01D1\\u020C\\u020E\\u01A0\\u1EDC\\u1EDA\\u1EE0\\u1EDE\\u1EE2\\u1ECC\\u1ED8\\u01EA\\u01EC\\u00D8\\u01FE\\u0186\\u019F\\uA74A\\uA74C]","OI":"[\\u01A2]","OO":"[\\uA74E]","OU":"[\\u0222]","P":"[\\u0050\\u24C5\\uFF30\\u1E54\\u1E56\\u01A4\\u2C63\\uA750\\uA752\\uA754]","Q":"[\\u0051\\u24C6\\uFF31\\uA756\\uA758\\u024A]","R":"[\\u0052\\u24C7\\uFF32\\u0154\\u1E58\\u0158\\u0210\\u0212\\u1E5A\\u1E5C\\u0156\\u1E5E\\u024C\\u2C64\\uA75A\\uA7A6\\uA782]","S":"[\\u0053\\u24C8\\uFF33\\u1E9E\\u015A\\u1E64\\u015C\\u1E60\\u0160\\u1E66\\u1E62\\u1E68\\u0218\\u015E\\u2C7E\\uA7A8\\uA784]","T":"[\\u0054\\u24C9\\uFF34\\u1E6A\\u0164\\u1E6C\\u021A\\u0162\\u1E70\\u1E6E\\u0166\\u01AC\\u01AE\\u023E\\uA786]","TZ":"[\\uA728]","U":"[\\u0055\\u24CA\\uFF35\\u00D9\\u00DA\\u00DB\\u0168\\u1E78\\u016A\\u1E7A\\u016C\\u00DC\\u01DB\\u01D7\\u01D5\\u01D9\\u1EE6\\u016E\\u0170\\u01D3\\u0214\\u0216\\u01AF\\u1EEA\\u1EE8\\u1EEE\\u1EEC\\u1EF0\\u1EE4\\u1E72\\u0172\\u1E76\\u1E74\\u0244]","V":"[\\u0056\\u24CB\\uFF36\\u1E7C\\u1E7E\\u01B2\\uA75E\\u0245]","VY":"[\\uA760]","W":"[\\u0057\\u24CC\\uFF37\\u1E80\\u1E82\\u0174\\u1E86\\u1E84\\u1E88\\u2C72]","X":"[\\u0058\\u24CD\\uFF38\\u1E8A\\u1E8C]","Y":"[\\u0059\\u24CE\\uFF39\\u1EF2\\u00DD\\u0176\\u1EF8\\u0232\\u1E8E\\u0178\\u1EF6\\u1EF4\\u01B3\\u024E\\u1EFE]","Z":"[\\u005A\\u24CF\\uFF3A\\u0179\\u1E90\\u017B\\u017D\\u1E92\\u1E94\\u01B5\\u0224\\u2C7F\\u2C6B\\uA762]","a":"[\\u0061\\u24D0\\uFF41\\u1E9A\\u00E0\\u00E1\\u00E2\\u1EA7\\u1EA5\\u1EAB\\u1EA9\\u00E3\\u0101\\u0103\\u1EB1\\u1EAF\\u1EB5\\u1EB3\\u0227\\u01E1\\u00E4\\u01DF\\u1EA3\\u00E5\\u01FB\\u01CE\\u0201\\u0203\\u1EA1\\u1EAD\\u1EB7\\u1E01\\u0105\\u2C65\\u0250]","aa":"[\\uA733]","ae":"[\\u00E6\\u01FD\\u01E3]","ao":"[\\uA735]","au":"[\\uA737]","av":"[\\uA739\\uA73B]","ay":"[\\uA73D]","b":"[\\u0062\\u24D1\\uFF42\\u1E03\\u1E05\\u1E07\\u0180\\u0183\\u0253]","c":"[\\u0063\\u24D2\\uFF43\\u0107\\u0109\\u010B\\u010D\\u00E7\\u1E09\\u0188\\u023C\\uA73F\\u2184]","d":"[\\u0064\\u24D3\\uFF44\\u1E0B\\u010F\\u1E0D\\u1E11\\u1E13\\u1E0F\\u0111\\u018C\\u0256\\u0257\\uA77A]","dz":"[\\u01F3\\u01C6]","e":"[\\u0065\\u24D4\\uFF45\\u00E8\\u00E9\\u00EA\\u1EC1\\u1EBF\\u1EC5\\u1EC3\\u1EBD\\u0113\\u1E15\\u1E17\\u0115\\u0117\\u00EB\\u1EBB\\u011B\\u0205\\u0207\\u1EB9\\u1EC7\\u0229\\u1E1D\\u0119\\u1E19\\u1E1B\\u0247\\u025B\\u01DD]","f":"[\\u0066\\u24D5\\uFF46\\u1E1F\\u0192\\uA77C]","g":"[\\u0067\\u24D6\\uFF47\\u01F5\\u011D\\u1E21\\u011F\\u0121\\u01E7\\u0123\\u01E5\\u0260\\uA7A1\\u1D79\\uA77F]","h":"[\\u0068\\u24D7\\uFF48\\u0125\\u1E23\\u1E27\\u021F\\u1E25\\u1E29\\u1E2B\\u1E96\\u0127\\u2C68\\u2C76\\u0265]","hv":"[\\u0195]","i":"[\\u0069\\u24D8\\uFF49\\u00EC\\u00ED\\u00EE\\u0129\\u012B\\u012D\\u00EF\\u1E2F\\u1EC9\\u01D0\\u0209\\u020B\\u1ECB\\u012F\\u1E2D\\u0268\\u0131]","j":"[\\u006A\\u24D9\\uFF4A\\u0135\\u01F0\\u0249]","k":"[\\u006B\\u24DA\\uFF4B\\u1E31\\u01E9\\u1E33\\u0137\\u1E35\\u0199\\u2C6A\\uA741\\uA743\\uA745\\uA7A3]","l":"[\\u006C\\u24DB\\uFF4C\\u0140\\u013A\\u013E\\u1E37\\u1E39\\u013C\\u1E3D\\u1E3B\\u017F\\u0142\\u019A\\u026B\\u2C61\\uA749\\uA781\\uA747]","lj":"[\\u01C9]","m":"[\\u006D\\u24DC\\uFF4D\\u1E3F\\u1E41\\u1E43\\u0271\\u026F]","n":"[\\u006E\\u24DD\\uFF4E\\u01F9\\u0144\\u00F1\\u1E45\\u0148\\u1E47\\u0146\\u1E4B\\u1E49\\u019E\\u0272\\u0149\\uA791\\uA7A5]","nj":"[\\u01CC]","o":"[\\u006F\\u24DE\\uFF4F\\u00F2\\u00F3\\u00F4\\u1ED3\\u1ED1\\u1ED7\\u1ED5\\u00F5\\u1E4D\\u022D\\u1E4F\\u014D\\u1E51\\u1E53\\u014F\\u022F\\u0231\\u00F6\\u022B\\u1ECF\\u0151\\u01D2\\u020D\\u020F\\u01A1\\u1EDD\\u1EDB\\u1EE1\\u1EDF\\u1EE3\\u1ECD\\u1ED9\\u01EB\\u01ED\\u00F8\\u01FF\\u0254\\uA74B\\uA74D\\u0275]","oi":"[\\u01A3]","ou":"[\\u0223]","oo":"[\\uA74F]","p":"[\\u0070\\u24DF\\uFF50\\u1E55\\u1E57\\u01A5\\u1D7D\\uA751\\uA753\\uA755]","q":"[\\u0071\\u24E0\\uFF51\\u024B\\uA757\\uA759]","r":"[\\u0072\\u24E1\\uFF52\\u0155\\u1E59\\u0159\\u0211\\u0213\\u1E5B\\u1E5D\\u0157\\u1E5F\\u024D\\u027D\\uA75B\\uA7A7\\uA783]","s":"[\\u0073\\u24E2\\uFF53\\u015B\\u1E65\\u015D\\u1E61\\u0161\\u1E67\\u1E63\\u1E69\\u0219\\u015F\\u023F\\uA7A9\\uA785\\u1E9B]","ss":"[\\u00DF]","t":"[\\u0074\\u24E3\\uFF54\\u1E6B\\u1E97\\u0165\\u1E6D\\u021B\\u0163\\u1E71\\u1E6F\\u0167\\u01AD\\u0288\\u2C66\\uA787]","tz":"[\\uA729]","u":"[\\u0075\\u24E4\\uFF55\\u00F9\\u00FA\\u00FB\\u0169\\u1E79\\u016B\\u1E7B\\u016D\\u00FC\\u01DC\\u01D8\\u01D6\\u01DA\\u1EE7\\u016F\\u0171\\u01D4\\u0215\\u0217\\u01B0\\u1EEB\\u1EE9\\u1EEF\\u1EED\\u1EF1\\u1EE5\\u1E73\\u0173\\u1E77\\u1E75\\u0289]","v":"[\\u0076\\u24E5\\uFF56\\u1E7D\\u1E7F\\u028B\\uA75F\\u028C]","vy":"[\\uA761]","w":"[\\u0077\\u24E6\\uFF57\\u1E81\\u1E83\\u0175\\u1E87\\u1E85\\u1E98\\u1E89\\u2C73]","x":"[\\u0078\\u24E7\\uFF58\\u1E8B\\u1E8D]","y":"[\\u0079\\u24E8\\uFF59\\u1EF3\\u00FD\\u0177\\u1EF9\\u0233\\u1E8F\\u00FF\\u1EF7\\u1E99\\u1EF5\\u01B4\\u024F\\u1EFF]","z":"[\\u007A\\u24E9\\uFF5A\\u017A\\u1E91\\u017C\\u017E\\u1E93\\u1E95\\u01B6\\u0225\\u0240\\u2C6C\\uA763]"},"researchesTests":["contentHasTOC","contentHasShortParagraphs","contentHasAssets","keywordInTitle","keywordInMetaDescription","keywordInPermalink","keywordIn10Percent","keywordInContent","keywordInSubheadings","keywordInImageAlt","keywordDensity","keywordNotUsed","lengthContent","lengthPermalink","linksHasInternal","linksHasExternals","linksNotAllExternals","titleStartWithKeyword","titleSentiment","titleHasPowerWords","titleHasNumber","hasContentAI"],"hasRedirection":true,"hasBreadcrumb":false},"homeUrl":"https:\/\/yamuparkoti.com\/it","objectID":3096,"objectType":"post","locale":"it","localeFull":"it_IT","overlayImages":{"play":{"name":"Icona di riproduzione","url":"https:\/\/yamuparkoti.com\/wp-content\/plugins\/seo-by-rank-math\/assets\/admin\/img\/icon-play.png","path":"\/home\/u575838537\/domains\/yamuparkoti.com\/public_html\/wp-content\/plugins\/seo-by-rank-math\/assets\/admin\/img\/icon-play.png","position":"middle_center"},"gif":{"name":"Icona GIF","url":"https:\/\/yamuparkoti.com\/wp-content\/plugins\/seo-by-rank-math\/assets\/admin\/img\/icon-gif.png","path":"\/home\/u575838537\/domains\/yamuparkoti.com\/public_html\/wp-content\/plugins\/seo-by-rank-math\/assets\/admin\/img\/icon-gif.png","position":"middle_center"}},"defautOgImage":"https:\/\/yamuparkoti.com\/wp-content\/uploads\/2024\/08\/Untitled_design1.png","customPermalinks":true,"isUserRegistered":true,"autoSuggestKeywords":true,"connectSiteUrl":"https:\/\/rankmath.com\/auth?site=https%3A%2F%2Fyamuparkoti.com%2Fit&r=https%3A%2F%2Fyamuparkoti.com%2Fit%2Fwp-json%2Fwp%2Fv2%2Fpages%2F3096%3Fnonce%3D1d600699eb&pro=1","maxTags":100,"trendsIcon":"<svg viewBox=\"0 0 610 610\"><path d=\"M18.85,446,174.32,290.48l58.08,58.08L76.93,504a14.54,14.54,0,0,1-20.55,0L18.83,466.48a14.54,14.54,0,0,1,0-20.55Z\" style=\"fill:#4285f4\"\/><path d=\"M242.65,242.66,377.59,377.6l-47.75,47.75a14.54,14.54,0,0,1-20.55,0L174.37,290.43l47.75-47.75A14.52,14.52,0,0,1,242.65,242.66Z\" style=\"fill:#ea4335\"\/><polygon points=\"319.53 319.53 479.26 159.8 537.34 217.88 377.61 377.62 319.53 319.53\" style=\"fill:#fabb05\"\/><path d=\"M594.26,262.73V118.61h0a16.94,16.94,0,0,0-16.94-16.94H433.2a16.94,16.94,0,0,0-12,28.92L565.34,274.71h0a16.94,16.94,0,0,0,28.92-12Z\" style=\"fill:#34a853\"\/><rect width=\"610\" height=\"610\" style=\"fill:none\"\/><\/svg>","showScore":true,"siteFavIcon":"https:\/\/yamuparkoti.com\/wp-content\/uploads\/2024\/08\/cropped-Untitled_design1-32x32.png","canUser":{"general":false,"advanced":false,"snippet":false,"social":false,"analysis":false,"analytics":false,"content_ai":false},"showKeywordIntent":true,"isPro":true,"is_front_page":false,"trendsUpgradeLink":"https:\/\/rankmath.com\/pricing\/?utm_source=Plugin&utm_medium=CE%20General%20Tab%20Trends&utm_campaign=WP","trendsUpgradeLabel":"Aggiorna","trendsPreviewImage":"https:\/\/yamuparkoti.com\/wp-content\/plugins\/seo-by-rank-math\/assets\/admin\/img\/trends-preview.jpg","currentEditor":false,"homepageData":{"assessor":{"powerWords":["incredibile","sorprendente","meraviglioso","unico","bello","felicit\u00e0","brillante","affascinante","carismatico","scioccante","chiaro","completamente","riservato","fiducia","significativo","creativo","definitivamente","delizioso","dimostrare","sbrigati","determinato","degno","dinamico","impressionante","essenziale","ispiratore","innovativo","intenso","efficace","magico","magnifico","storico","importante","incredibile","indispensabile","indimenticabile","irresistibile","leggendario","luminoso","lusso","magico","magnifico","maestoso","memorabile","miracoloso","motivante","necessario","nuovo","ufficiale","perfetto","appassionato","persuasivo","fenomenale","piacere","popolare","potere","prestigioso","prodigioso","profondo","prospero","potente","qualit\u00e0","radiante","veloce","di successo","rivoluzionario","soddisfatto","sicurezza","sensazionale","sereno","lussuoso","splendido","sublime","sorprendente","talentuoso","terrificante","unico","valore","vibrante","vittorioso","vivace","veramente","zelante","autentico","avventuroso","spettacolare","esclusivo","garantito","straordinario","favoloso","affascinante","formidabile","geniale","grandioso","gratuito","abile","illimitato","impeccabile","infallibile","infinitamente","influente","ingegnoso","indimenticabile","insostituibile","leader","maestro","notevole","innovativo","pioniere","potente","riconosciuto","rivoluzionario","sorprendente","superiore","trionfante","ultra","coraggioso","prezioso","avanguardia","vigoroso","visionario","volont\u00e0","vitale","trionfo","glorioso","inarrestabile","ineguagliabile","intelligente","invincibile","libert\u00e0","orgoglio","pace","progresso","rinnovato","saggezza","soddisfazione","sicuro","serenit\u00e0","superamento","talento","trascendente","trasformativo","coraggio","vittoria"],"diacritics":true,"researchesTests":["contentHasTOC","contentHasShortParagraphs","contentHasAssets","keywordInTitle","keywordInMetaDescription","keywordInPermalink","keywordIn10Percent","keywordInContent","keywordInSubheadings","keywordInImageAlt","keywordDensity","keywordNotUsed","lengthContent","lengthPermalink","linksHasInternal","linksHasExternals","linksNotAllExternals","titleStartWithKeyword","titleSentiment","titleHasPowerWords","titleHasNumber","hasContentAI"],"hasBreadcrumb":false,"serpData":{"title":"%sitename% %page% %sep% %sitedesc%","description":"","titleTemplate":"%sitename% %page% %sep% %sitedesc%","descriptionTemplate":"","focusKeywords":"","breadcrumbTitle":"Home","robots":{"index":true},"advancedRobots":{"max-snippet":"-1","max-video-preview":"-1","max-image-preview":"large"},"facebookTitle":"","facebookDescription":"","facebookImage":"","facebookImageID":""}}},"searchIntents":[],"isAnalyticsConnected":false,"tocTitle":"Table of Contents","tocExcludeHeadings":[],"listStyle":"ul"},"_links":{"self":[{"href":"https:\/\/yamuparkoti.com\/it\/wp-json\/wp\/v2\/pages\/3096","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/yamuparkoti.com\/it\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/yamuparkoti.com\/it\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/yamuparkoti.com\/it\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/yamuparkoti.com\/it\/wp-json\/wp\/v2\/comments?post=3096"}],"version-history":[{"count":7,"href":"https:\/\/yamuparkoti.com\/it\/wp-json\/wp\/v2\/pages\/3096\/revisions"}],"predecessor-version":[{"id":3108,"href":"https:\/\/yamuparkoti.com\/it\/wp-json\/wp\/v2\/pages\/3096\/revisions\/3108"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/yamuparkoti.com\/it\/wp-json\/wp\/v2\/media\/3104"}],"wp:attachment":[{"href":"https:\/\/yamuparkoti.com\/it\/wp-json\/wp\/v2\/media?parent=3096"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}