(function(window) { const PdfApp = window.PdfApp = window.PdfApp || {}; const features = PdfApp.features = PdfApp.features || {}; features.split = function initSplitFeature() { const dropArea = document.getElementById('splitDropArea'); const fileInput = document.getElementById('split_pdf_file'); const fileList = document.getElementById('splitFileList'); const form = document.getElementById('splitPdfForm'); const submitButton = document.getElementById('splitPdfBtn'); const loading = document.getElementById('splitLoading'); if (!dropArea || !fileInput || !fileList || !form || !submitButton || !loading) { return; } let selectedFile = null; function displayPdfPageInfo(file, targetElement) { const infoDiv = document.createElement('div'); infoDiv.className = 'pdf-info mt-2'; const infoText = document.createElement('small'); infoText.className = 'text-muted'; const infoIcon = document.createElement('i'); infoIcon.className = 'fas fa-info-circle'; infoText.appendChild(infoIcon); infoText.appendChild(document.createTextNode(` 文件大小:${PdfApp.formatFileSize(file.size)}`)); infoDiv.appendChild(infoText); const oldInfo = targetElement.querySelector('.pdf-info'); if (oldInfo) { oldInfo.remove(); } targetElement.appendChild(infoDiv); } function displaySelectedFile() { fileList.innerHTML = ''; if (!selectedFile) { submitButton.disabled = true; return; } const fileItem = PdfApp.createFileItem(selectedFile, removeSelectedFile); fileList.appendChild(fileItem); submitButton.disabled = false; } function removeSelectedFile() { selectedFile = null; fileInput.value = ''; displaySelectedFile(); } fileInput.addEventListener('change', function(event) { selectedFile = event.target.files[0] || null; displaySelectedFile(); if (selectedFile) { displayPdfPageInfo(selectedFile, fileList); } }); PdfApp.bindDragAndDrop(dropArea, function(event) { const files = Array.from(event.dataTransfer.files).filter(function(file) { return file.type === 'application/pdf'; }); if (!files.length) { alert('请拖拽PDF文件'); return; } selectedFile = files[0]; fileInput.files = PdfApp.createFileList([selectedFile]); displaySelectedFile(); displayPdfPageInfo(selectedFile, fileList); }); PdfApp.bindRadioToggle('split_type', { range: 'rangeOptions', group: 'groupOptions', extract: 'extractOptions' }); form.addEventListener('submit', function(event) { event.preventDefault(); if (!selectedFile) { alert('请选择一个PDF文件'); return; } loading.style.display = 'block'; submitButton.disabled = true; const formData = new FormData(); formData.append('pdf_file', selectedFile); const splitType = document.querySelector('input[name="split_type"]:checked').value; formData.append('split_type', splitType); if (splitType === 'range') { const ranges = document.getElementById('ranges').value; if (!ranges) { alert('请输入页面范围'); loading.style.display = 'none'; submitButton.disabled = false; return; } formData.append('ranges', ranges); } else if (splitType === 'group') { formData.append('pages_per_group', document.getElementById('pages_per_group').value); } else if (splitType === 'extract') { const pageNumbers = document.getElementById('page_numbers').value; if (!pageNumbers) { alert('请输入要提取的页码'); loading.style.display = 'none'; submitButton.disabled = false; return; } formData.append('page_numbers', pageNumbers); } fetch('/split-pdf', { method: 'POST', body: formData }) .then(function(response) { if (response.ok) { return response.blob(); } return response.json().then(function(err) { throw new Error(err.error || '分割失败'); }); }) .then(function(blob) { const filename = blob.type === 'application/zip' ? 'split_pdf_files.zip' : 'extracted_page.pdf'; PdfApp.downloadBlob(blob, filename); removeSelectedFile(); }) .catch(function(error) { console.error('Error:', error); alert('分割失败: ' + error.message); }) .finally(function() { loading.style.display = 'none'; submitButton.disabled = false; }); }); }; })(window);