<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Arquivos extrair paginas pdf - Web-Zoneware</title>
	<atom:link href="https://webzoneware.com/tag/extrair-paginas-pdf/feed/" rel="self" type="application/rss+xml" />
	<link>https://webzoneware.com/tag/extrair-paginas-pdf/</link>
	<description>Mais do que apenas uma academia web.</description>
	<lastBuildDate>Thu, 22 Oct 2026 17:26:33 +0000</lastBuildDate>
	<language>pt-BR</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	

<image>
	<url>https://webzoneware.com/wp-content/uploads/icon-webzoneware-150x150.png</url>
	<title>Arquivos extrair paginas pdf - Web-Zoneware</title>
	<link>https://webzoneware.com/tag/extrair-paginas-pdf/</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Extrair Páginas do PDF Online: Salvar em PDF ou ZIP &#124; Web-ZoneWare</title>
		<link>https://webzoneware.com/web-ferramentas/pdf/extrair-paginas-pdf/</link>
					<comments>https://webzoneware.com/web-ferramentas/pdf/extrair-paginas-pdf/#respond</comments>
		
		<dc:creator><![CDATA[Web-Zoneware]]></dc:creator>
		<pubDate>Sat, 17 Oct 2026 01:22:22 +0000</pubDate>
				<category><![CDATA[PDF & Documentos]]></category>
		<category><![CDATA[exportar paginas selecionadas pdf]]></category>
		<category><![CDATA[extrair folhas pdf]]></category>
		<category><![CDATA[extrair paginas pdf]]></category>
		<category><![CDATA[salvar paginas pdf zip]]></category>
		<category><![CDATA[separar paginas pdf]]></category>
		<guid isPermaLink="false">https://webzoneware.com/?p=28991</guid>

					<description><![CDATA[<p>Extração de Páginas de Arquivos PDF com Alta Precisão Quando você precisa destacar apenas capítulos específicos de um livro, comprovantes de um extrato anual ou laudas pontuais de um processo jurídico, a ferramenta Extrair Páginas do PDF oferece duas modalidades práticas de exportação: Modo Consolidado (1 PDF Único): Junta todas as páginas que você selecionou [&#8230;]</p>
<p>O post <a href="https://webzoneware.com/web-ferramentas/pdf/extrair-paginas-pdf/">Extrair Páginas do PDF Online: Salvar em PDF ou ZIP | Web-ZoneWare</a> apareceu primeiro em <a href="https://webzoneware.com">Web-Zoneware</a>.</p>
]]></description>
										<content:encoded><![CDATA[<h2>Extração de Páginas de Arquivos PDF com Alta Precisão</h2>
<p>Quando você precisa destacar apenas capítulos específicos de um livro, comprovantes de um extrato anual ou laudas pontuais de um processo jurídico, a ferramenta <strong>Extrair Páginas do PDF</strong> oferece duas modalidades práticas de exportação:</p>
    <div id="wzw_extpdf_cc949549_5b67_4268_a647_2c6ea590d2af" class="wzw-tool-container wzw-pdf-suite-wrapper">
        <style>
            #wzw_extpdf_cc949549_5b67_4268_a647_2c6ea590d2af {
                background: linear-gradient(145deg, #0f172a 0%, #1e293b 100%);
                color: #f8fafc;
                border-radius: 16px;
                padding: 24px;
                box-shadow: 0 12px 35px rgba(0, 0, 0, 0.35);
                border: 1px solid #334155;
                font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Helvetica, Arial, sans-serif;
                margin: 20px 0 35px 0;
            }
            #wzw_extpdf_cc949549_5b67_4268_a647_2c6ea590d2af * {
                box-sizing: border-box;
            }
            #wzw_extpdf_cc949549_5b67_4268_a647_2c6ea590d2af .wzw-tool-header {
                display: flex;
                align-items: center;
                justify-content: space-between;
                flex-wrap: wrap;
                gap: 12px;
                margin-bottom: 20px;
                padding-bottom: 16px;
                border-bottom: 1px solid rgba(255, 255, 255, 0.1);
            }
            #wzw_extpdf_cc949549_5b67_4268_a647_2c6ea590d2af .wzw-tool-title {
                margin: 0;
                font-size: 1.35rem;
                font-weight: 800;
                color: #10b981;
                display: flex;
                align-items: center;
                gap: 10px;
            }
            #wzw_extpdf_cc949549_5b67_4268_a647_2c6ea590d2af .wzw-badge-client {
                background: rgba(16, 185, 129, 0.15);
                color: #34d399;
                border: 1px solid rgba(16, 185, 129, 0.35);
                padding: 4px 10px;
                border-radius: 20px;
                font-size: 11px;
                font-weight: 700;
                text-transform: uppercase;
                letter-spacing: 0.5px;
            }
            #wzw_extpdf_cc949549_5b67_4268_a647_2c6ea590d2af .wzw-dropzone {
                border: 2px dashed #10b981;
                background: rgba(16, 185, 129, 0.05);
                border-radius: 14px;
                padding: 44px 20px;
                text-align: center;
                cursor: pointer;
                transition: all 0.25s ease;
                margin-bottom: 20px;
            }
            #wzw_extpdf_cc949549_5b67_4268_a647_2c6ea590d2af .wzw-dropzone:hover,
            #wzw_extpdf_cc949549_5b67_4268_a647_2c6ea590d2af .wzw-dropzone.drag-over {
                background: rgba(16, 185, 129, 0.12);
                border-color: #6ee7b7;
                transform: translateY(-2px);
            }
            #wzw_extpdf_cc949549_5b67_4268_a647_2c6ea590d2af .wzw-drop-icon {
                font-size: 48px;
                margin-bottom: 12px;
                display: block;
            }
            #wzw_extpdf_cc949549_5b67_4268_a647_2c6ea590d2af .wzw-drop-title {
                font-size: 1.15rem;
                font-weight: 700;
                color: #f1f5f9;
                margin: 0 0 6px 0;
            }
            #wzw_extpdf_cc949549_5b67_4268_a647_2c6ea590d2af .wzw-drop-sub {
                font-size: 13px;
                color: #94a3b8;
                margin: 0;
            }
            #wzw_extpdf_cc949549_5b67_4268_a647_2c6ea590d2af .wzw-workspace {
                display: none;
                background: rgba(15, 23, 42, 0.6);
                border: 1px solid #334155;
                border-radius: 14px;
                padding: 20px;
            }
            #wzw_extpdf_cc949549_5b67_4268_a647_2c6ea590d2af .wzw-file-summary {
                display: flex;
                align-items: center;
                justify-content: space-between;
                background: #1e293b;
                border: 1px solid #475569;
                border-radius: 10px;
                padding: 12px 18px;
                margin-bottom: 20px;
                flex-wrap: wrap;
                gap: 12px;
            }
            #wzw_extpdf_cc949549_5b67_4268_a647_2c6ea590d2af .wzw-file-meta {
                display: flex;
                align-items: center;
                gap: 12px;
            }
            #wzw_extpdf_cc949549_5b67_4268_a647_2c6ea590d2af .wzw-file-icon {
                font-size: 28px;
            }
            #wzw_extpdf_cc949549_5b67_4268_a647_2c6ea590d2af .wzw-file-details strong {
                display: block;
                font-size: 14px;
                color: #f8fafc;
            }
            #wzw_extpdf_cc949549_5b67_4268_a647_2c6ea590d2af .wzw-file-details span {
                font-size: 12px;
                color: #94a3b8;
            }
            #wzw_extpdf_cc949549_5b67_4268_a647_2c6ea590d2af .wzw-counter-badges {
                display: flex;
                gap: 8px;
                flex-wrap: wrap;
            }
            #wzw_extpdf_cc949549_5b67_4268_a647_2c6ea590d2af .wzw-badge-stat {
                padding: 5px 10px;
                border-radius: 6px;
                font-size: 12px;
                font-weight: 700;
            }
            #wzw_extpdf_cc949549_5b67_4268_a647_2c6ea590d2af .wzw-badge-total { background: #334155; color: #cbd5e1; }
            #wzw_extpdf_cc949549_5b67_4268_a647_2c6ea590d2af .wzw-badge-selected { background: rgba(16, 185, 129, 0.2); color: #34d399; border: 1px solid rgba(16, 185, 129, 0.4); }

            /* MODE CARDS */
            #wzw_extpdf_cc949549_5b67_4268_a647_2c6ea590d2af .wzw-modes-container {
                display: grid;
                grid-template-columns: 1fr 1fr;
                gap: 14px;
                margin-bottom: 18px;
            }
            @media (max-width: 640px) {
                #wzw_extpdf_cc949549_5b67_4268_a647_2c6ea590d2af .wzw-modes-container { grid-template-columns: 1fr; }
            }
            #wzw_extpdf_cc949549_5b67_4268_a647_2c6ea590d2af .wzw-mode-card {
                background: #1e293b;
                border: 2px solid #334155;
                border-radius: 10px;
                padding: 14px;
                cursor: pointer;
                transition: all 0.2s ease;
                display: flex;
                align-items: flex-start;
                gap: 12px;
            }
            #wzw_extpdf_cc949549_5b67_4268_a647_2c6ea590d2af .wzw-mode-card:hover {
                border-color: #64748b;
            }
            #wzw_extpdf_cc949549_5b67_4268_a647_2c6ea590d2af .wzw-mode-card.active {
                border-color: #10b981;
                background: rgba(16, 185, 129, 0.1);
            }
            #wzw_extpdf_cc949549_5b67_4268_a647_2c6ea590d2af .wzw-mode-radio {
                accent-color: #10b981;
                margin-top: 3px;
                cursor: pointer;
            }
            #wzw_extpdf_cc949549_5b67_4268_a647_2c6ea590d2af .wzw-mode-info strong {
                display: block;
                font-size: 14px;
                color: #f8fafc;
                margin-bottom: 4px;
            }
            #wzw_extpdf_cc949549_5b67_4268_a647_2c6ea590d2af .wzw-mode-info p {
                margin: 0;
                font-size: 12px;
                color: #94a3b8;
                line-height: 1.4;
            }

            #wzw_extpdf_cc949549_5b67_4268_a647_2c6ea590d2af .wzw-toolbar {
                display: flex;
                align-items: center;
                justify-content: space-between;
                flex-wrap: wrap;
                gap: 10px;
                margin-bottom: 16px;
                background: #1e293b;
                padding: 10px 14px;
                border-radius: 8px;
                border: 1px solid #334155;
            }
            #wzw_extpdf_cc949549_5b67_4268_a647_2c6ea590d2af .wzw-tool-actions {
                display: flex;
                gap: 8px;
                flex-wrap: wrap;
            }
            #wzw_extpdf_cc949549_5b67_4268_a647_2c6ea590d2af .wzw-btn-sm {
                background: #334155;
                color: #f8fafc;
                border: 1px solid #475569;
                padding: 6px 12px;
                border-radius: 6px;
                font-size: 12px;
                font-weight: 600;
                cursor: pointer;
                transition: all 0.2s ease;
            }
            #wzw_extpdf_cc949549_5b67_4268_a647_2c6ea590d2af .wzw-btn-sm:hover {
                background: #475569;
                color: #fff;
            }
            #wzw_extpdf_cc949549_5b67_4268_a647_2c6ea590d2af .wzw-range-box {
                display: flex;
                align-items: center;
                gap: 6px;
            }
            #wzw_extpdf_cc949549_5b67_4268_a647_2c6ea590d2af .wzw-input-range {
                background: #0f172a;
                border: 1px solid #475569;
                color: #f8fafc;
                padding: 5px 10px;
                border-radius: 6px;
                font-size: 12px;
                width: 140px;
            }
            #wzw_extpdf_cc949549_5b67_4268_a647_2c6ea590d2af .wzw-pages-grid {
                display: grid;
                grid-template-columns: repeat(auto-fill, minmax(150px, 1fr));
                gap: 16px;
                max-height: 480px;
                overflow-y: auto;
                background: #020617;
                border: 1px solid #334155;
                border-radius: 10px;
                padding: 16px;
                margin-bottom: 20px;
            }
            #wzw_extpdf_cc949549_5b67_4268_a647_2c6ea590d2af .wzw-page-card {
                background: #1e293b;
                border: 2px solid #334155;
                border-radius: 8px;
                padding: 8px;
                text-align: center;
                cursor: pointer;
                transition: all 0.2s ease;
                user-select: none;
                position: relative;
                overflow: hidden;
            }
            #wzw_extpdf_cc949549_5b67_4268_a647_2c6ea590d2af .wzw-page-card:hover {
                border-color: #10b981;
                transform: translateY(-2px);
            }
            #wzw_extpdf_cc949549_5b67_4268_a647_2c6ea590d2af .wzw-page-card.is-selected {
                border-color: #10b981;
                background: rgba(16, 185, 129, 0.12);
                box-shadow: 0 0 12px rgba(16, 185, 129, 0.25);
            }
            #wzw_extpdf_cc949549_5b67_4268_a647_2c6ea590d2af .wzw-check-badge {
                position: absolute;
                top: 8px;
                right: 8px;
                width: 22px;
                height: 22px;
                border-radius: 50%;
                background: #334155;
                color: #cbd5e1;
                display: flex;
                align-items: center;
                justify-content: center;
                font-size: 12px;
                font-weight: bold;
                border: 1px solid #475569;
                z-index: 4;
            }
            #wzw_extpdf_cc949549_5b67_4268_a647_2c6ea590d2af .wzw-page-card.is-selected .wzw-check-badge {
                background: #10b981;
                color: #020617;
                border-color: #34d399;
            }
            #wzw_extpdf_cc949549_5b67_4268_a647_2c6ea590d2af .wzw-thumb-wrapper {
                background: #fff;
                border-radius: 4px;
                overflow: hidden;
                box-shadow: 0 4px 10px rgba(0,0,0,0.3);
                aspect-ratio: 1 / 1.414;
                display: flex;
                align-items: center;
                justify-content: center;
                margin-bottom: 8px;
            }
            #wzw_extpdf_cc949549_5b67_4268_a647_2c6ea590d2af .wzw-thumb-canvas {
                max-width: 100%;
                max-height: 100%;
                display: block;
                object-fit: contain;
            }
            #wzw_extpdf_cc949549_5b67_4268_a647_2c6ea590d2af .wzw-page-num-badge {
                display: inline-block;
                background: #0f172a;
                color: #e2e8f0;
                padding: 3px 8px;
                border-radius: 4px;
                font-size: 11px;
                font-weight: 700;
                border: 1px solid #334155;
            }
            #wzw_extpdf_cc949549_5b67_4268_a647_2c6ea590d2af .wzw-bottom-bar {
                display: flex;
                align-items: center;
                justify-content: space-between;
                flex-wrap: wrap;
                gap: 16px;
                padding-top: 16px;
                border-top: 1px solid #334155;
            }
            #wzw_extpdf_cc949549_5b67_4268_a647_2c6ea590d2af .wzw-output-group {
                display: flex;
                align-items: center;
                gap: 8px;
            }
            #wzw_extpdf_cc949549_5b67_4268_a647_2c6ea590d2af .wzw-output-group label {
                font-size: 13px;
                color: #94a3b8;
                font-weight: 600;
            }
            #wzw_extpdf_cc949549_5b67_4268_a647_2c6ea590d2af .wzw-output-name {
                background: #1e293b;
                border: 1px solid #475569;
                color: #f8fafc;
                padding: 8px 12px;
                border-radius: 6px;
                font-size: 13px;
            }
            #wzw_extpdf_cc949549_5b67_4268_a647_2c6ea590d2af .wzw-btn-save {
                background: linear-gradient(135deg, #10b981 0%, #059669 100%);
                color: #ffffff;
                border: none;
                padding: 12px 24px;
                border-radius: 8px;
                font-size: 14px;
                font-weight: 700;
                cursor: pointer;
                transition: all 0.25s ease;
                box-shadow: 0 4px 15px rgba(16, 185, 129, 0.35);
            }
            #wzw_extpdf_cc949549_5b67_4268_a647_2c6ea590d2af .wzw-btn-save:hover:not(:disabled) {
                background: linear-gradient(135deg, #34d399 0%, #10b981 100%);
                transform: translateY(-2px);
                box-shadow: 0 6px 20px rgba(16, 185, 129, 0.5);
            }
            #wzw_extpdf_cc949549_5b67_4268_a647_2c6ea590d2af .wzw-btn-save:disabled {
                opacity: 0.5;
                cursor: not-allowed;
            }
            #wzw_extpdf_cc949549_5b67_4268_a647_2c6ea590d2af .wzw-btn-reset {
                background: transparent;
                border: 1px solid #64748b;
                color: #cbd5e1;
                padding: 12px 18px;
                border-radius: 8px;
                font-size: 13px;
                cursor: pointer;
                transition: all 0.2s ease;
            }
            #wzw_extpdf_cc949549_5b67_4268_a647_2c6ea590d2af .wzw-btn-reset:hover {
                background: #334155;
                color: #fff;
            }
            #wzw_extpdf_cc949549_5b67_4268_a647_2c6ea590d2af .wzw-progress-box {
                display: none;
                margin-top: 16px;
                background: #0f172a;
                border-radius: 8px;
                padding: 14px;
                border: 1px solid #334155;
            }
            #wzw_extpdf_cc949549_5b67_4268_a647_2c6ea590d2af .wzw-progress-bar {
                height: 8px;
                background: #334155;
                border-radius: 4px;
                overflow: hidden;
                margin-bottom: 8px;
            }
            #wzw_extpdf_cc949549_5b67_4268_a647_2c6ea590d2af .wzw-progress-fill {
                height: 100%;
                width: 0%;
                background: linear-gradient(90deg, #10b981, #34d399);
                transition: width 0.2s ease;
            }
            #wzw_extpdf_cc949549_5b67_4268_a647_2c6ea590d2af .wzw-progress-status {
                display: flex;
                justify-content: space-between;
                font-size: 12px;
                color: #94a3b8;
            }
        </style>

        <div class="wzw-tool-header">
            <h2 class="wzw-tool-title">
                <span>✂️</span> Extrair Páginas do PDF Online
            </h2>
            <div class="wzw-badge-client">
                🔒 100% Client-Side • Privacidade Total
            </div>
        </div>

        <!-- DROPZONE -->
        <div class="wzw-dropzone" id="wzw_extpdf_cc949549_5b67_4268_a647_2c6ea590d2af_dropzone">
            <span class="wzw-drop-icon">📑</span>
            <p class="wzw-drop-title">Arraste seu arquivo PDF aqui ou clique para selecionar</p>
            <p class="wzw-drop-sub">Processamento seguro e privado no seu navegador. Escolha páginas para extrair em PDF único ou ZIP individual.</p>
            <input type="file" id="wzw_extpdf_cc949549_5b67_4268_a647_2c6ea590d2af_file_input" accept="application/pdf" style="display: none;" />
        </div>

        <!-- WORKSPACE -->
        <div class="wzw-workspace" id="wzw_extpdf_cc949549_5b67_4268_a647_2c6ea590d2af_workspace">
            <div class="wzw-file-summary">
                <div class="wzw-file-meta">
                    <span class="wzw-file-icon">📄</span>
                    <div class="wzw-file-details">
                        <strong id="wzw_extpdf_cc949549_5b67_4268_a647_2c6ea590d2af_filename">documento.pdf</strong>
                        <span id="wzw_extpdf_cc949549_5b67_4268_a647_2c6ea590d2af_fileinfo">0 KB • 0 páginas</span>
                    </div>
                </div>
                <div class="wzw-counter-badges">
                    <span class="wzw-badge-stat wzw-badge-total" id="wzw_extpdf_cc949549_5b67_4268_a647_2c6ea590d2af_stat_total">Total: 0</span>
                    <span class="wzw-badge-stat wzw-badge-selected" id="wzw_extpdf_cc949549_5b67_4268_a647_2c6ea590d2af_stat_selected">Selecionadas: 0</span>
                </div>
            </div>

            <!-- OPÇÕES DE MODO DE EXTRAÇÃO -->
            <div class="wzw-modes-container">
                <div class="wzw-mode-card active" id="wzw_extpdf_cc949549_5b67_4268_a647_2c6ea590d2af_mode_merged_card">
                    <input type="radio" name="wzw_extpdf_cc949549_5b67_4268_a647_2c6ea590d2af_mode" id="wzw_extpdf_cc949549_5b67_4268_a647_2c6ea590d2af_mode_merged" value="merged" class="wzw-mode-radio" checked />
                    <div class="wzw-mode-info">
                        <strong>📑 Extrair em 1 Único Arquivo PDF</strong>
                        <p>Combina todas as páginas selecionadas em um novo documento PDF consolidado.</p>
                    </div>
                </div>
                <div class="wzw-mode-card" id="wzw_extpdf_cc949549_5b67_4268_a647_2c6ea590d2af_mode_zip_card">
                    <input type="radio" name="wzw_extpdf_cc949549_5b67_4268_a647_2c6ea590d2af_mode" id="wzw_extpdf_cc949549_5b67_4268_a647_2c6ea590d2af_mode_zip" value="zip" class="wzw-mode-radio" />
                    <div class="wzw-mode-info">
                        <strong>📦 Extrair em PDFs Separados (.ZIP)</strong>
                        <p>Cada página selecionada se torna um arquivo PDF individual dentro de um pacote .ZIP.</p>
                    </div>
                </div>
            </div>

            <!-- TOOLBAR -->
            <div class="wzw-toolbar">
                <div class="wzw-tool-actions">
                    <button type="button" class="wzw-btn-sm" id="wzw_extpdf_cc949549_5b67_4268_a647_2c6ea590d2af_btn_all">Todas</button>
                    <button type="button" class="wzw-btn-sm" id="wzw_extpdf_cc949549_5b67_4268_a647_2c6ea590d2af_btn_clear">Limpar</button>
                    <button type="button" class="wzw-btn-sm" id="wzw_extpdf_cc949549_5b67_4268_a647_2c6ea590d2af_btn_invert">Inverter</button>
                    <button type="button" class="wzw-btn-sm" id="wzw_extpdf_cc949549_5b67_4268_a647_2c6ea590d2af_btn_even">Pares</button>
                    <button type="button" class="wzw-btn-sm" id="wzw_extpdf_cc949549_5b67_4268_a647_2c6ea590d2af_btn_odd">Ímpares</button>
                </div>
                <div class="wzw-range-box">
                    <input type="text" class="wzw-input-range" id="wzw_extpdf_cc949549_5b67_4268_a647_2c6ea590d2af_range_input" placeholder="Ex: 1, 3-5, 8" />
                    <button type="button" class="wzw-btn-sm" id="wzw_extpdf_cc949549_5b67_4268_a647_2c6ea590d2af_btn_apply_range">Selecionar Intervalo</button>
                </div>
            </div>

            <!-- GRID DE PÁGINAS -->
            <div class="wzw-pages-grid" id="wzw_extpdf_cc949549_5b67_4268_a647_2c6ea590d2af_grid">
                <!-- Miniaturas geradas via JavaScript -->
            </div>

            <!-- BOTTOM BAR -->
            <div class="wzw-bottom-bar">
                <div class="wzw-output-group">
                    <label for="wzw_extpdf_cc949549_5b67_4268_a647_2c6ea590d2af_output_name">Nome base de saída:</label>
                    <input type="text" id="wzw_extpdf_cc949549_5b67_4268_a647_2c6ea590d2af_output_name" class="wzw-output-name" value="documento-paginas-extraidas" />
                </div>
                <div style="display:flex; gap:10px;">
                    <button type="button" class="wzw-btn-reset" id="wzw_extpdf_cc949549_5b67_4268_a647_2c6ea590d2af_btn_reset">Trocar PDF</button>
                    <button type="button" class="wzw-btn-save" id="wzw_extpdf_cc949549_5b67_4268_a647_2c6ea590d2af_btn_save">📥 Extrair e Baixar Páginas</button>
                </div>
            </div>

            <!-- PROGRESS BOX -->
            <div class="wzw-progress-box" id="wzw_extpdf_cc949549_5b67_4268_a647_2c6ea590d2af_progress">
                <div class="wzw-progress-bar">
                    <div class="wzw-progress-fill" id="wzw_extpdf_cc949549_5b67_4268_a647_2c6ea590d2af_progress_fill"></div>
                </div>
                <div class="wzw-progress-status">
                    <span id="wzw_extpdf_cc949549_5b67_4268_a647_2c6ea590d2af_status_label">Processando...</span>
                    <span id="wzw_extpdf_cc949549_5b67_4268_a647_2c6ea590d2af_progress_percent">0%</span>
                </div>
            </div>
        </div>

        <script>
        (function() {
            var dropzone = document.getElementById('wzw_extpdf_cc949549_5b67_4268_a647_2c6ea590d2af_dropzone');
            var fileInput = document.getElementById('wzw_extpdf_cc949549_5b67_4268_a647_2c6ea590d2af_file_input');
            var workspace = document.getElementById('wzw_extpdf_cc949549_5b67_4268_a647_2c6ea590d2af_workspace');
            var grid = document.getElementById('wzw_extpdf_cc949549_5b67_4268_a647_2c6ea590d2af_grid');
            var filenameElem = document.getElementById('wzw_extpdf_cc949549_5b67_4268_a647_2c6ea590d2af_filename');
            var fileinfoElem = document.getElementById('wzw_extpdf_cc949549_5b67_4268_a647_2c6ea590d2af_fileinfo');
            var outputNameInput = document.getElementById('wzw_extpdf_cc949549_5b67_4268_a647_2c6ea590d2af_output_name');
            var btnSave = document.getElementById('wzw_extpdf_cc949549_5b67_4268_a647_2c6ea590d2af_btn_save');
            var btnReset = document.getElementById('wzw_extpdf_cc949549_5b67_4268_a647_2c6ea590d2af_btn_reset');
            var progressBox = document.getElementById('wzw_extpdf_cc949549_5b67_4268_a647_2c6ea590d2af_progress');
            var progressFill = document.getElementById('wzw_extpdf_cc949549_5b67_4268_a647_2c6ea590d2af_progress_fill');
            var statusLabel = document.getElementById('wzw_extpdf_cc949549_5b67_4268_a647_2c6ea590d2af_status_label');
            var progressPercent = document.getElementById('wzw_extpdf_cc949549_5b67_4268_a647_2c6ea590d2af_progress_percent');

            var statTotal = document.getElementById('wzw_extpdf_cc949549_5b67_4268_a647_2c6ea590d2af_stat_total');
            var statSelected = document.getElementById('wzw_extpdf_cc949549_5b67_4268_a647_2c6ea590d2af_stat_selected');

            var modeMergedRadio = document.getElementById('wzw_extpdf_cc949549_5b67_4268_a647_2c6ea590d2af_mode_merged');
            var modeZipRadio = document.getElementById('wzw_extpdf_cc949549_5b67_4268_a647_2c6ea590d2af_mode_zip');
            var modeMergedCard = document.getElementById('wzw_extpdf_cc949549_5b67_4268_a647_2c6ea590d2af_mode_merged_card');
            var modeZipCard = document.getElementById('wzw_extpdf_cc949549_5b67_4268_a647_2c6ea590d2af_mode_zip_card');

            var btnAll = document.getElementById('wzw_extpdf_cc949549_5b67_4268_a647_2c6ea590d2af_btn_all');
            var btnClear = document.getElementById('wzw_extpdf_cc949549_5b67_4268_a647_2c6ea590d2af_btn_clear');
            var btnInvert = document.getElementById('wzw_extpdf_cc949549_5b67_4268_a647_2c6ea590d2af_btn_invert');
            var btnEven = document.getElementById('wzw_extpdf_cc949549_5b67_4268_a647_2c6ea590d2af_btn_even');
            var btnOdd = document.getElementById('wzw_extpdf_cc949549_5b67_4268_a647_2c6ea590d2af_btn_odd');
            var btnApplyRange = document.getElementById('wzw_extpdf_cc949549_5b67_4268_a647_2c6ea590d2af_btn_apply_range');
            var rangeInput = document.getElementById('wzw_extpdf_cc949549_5b67_4268_a647_2c6ea590d2af_range_input');

            var currentFile = null;
            var currentFileName = '';
            var totalPagesCount = 0;
            var selectedPagesSet = new Set(); // 0-indexed page numbers to extract

            // Mode selection card styling
            function setMode(mode) {
                if (mode === 'merged') {
                    modeMergedRadio.checked = true;
                    modeMergedCard.classList.add('active');
                    modeZipCard.classList.remove('active');
                } else {
                    modeZipRadio.checked = true;
                    modeZipCard.classList.add('active');
                    modeMergedCard.classList.remove('active');
                }
                updateButtonLabel();
            }

            modeMergedCard.addEventListener('click', function() { setMode('merged'); });
            modeZipCard.addEventListener('click', function() { setMode('zip'); });
            modeMergedRadio.addEventListener('change', function() { setMode('merged'); });
            modeZipRadio.addEventListener('change', function() { setMode('zip'); });

            // Setup PDF.js worker
            if (window.pdfjsLib && !window.pdfjsLib.GlobalWorkerOptions.workerSrc) {
                window.pdfjsLib.GlobalWorkerOptions.workerSrc = 'https://cdnjs.cloudflare.com/ajax/libs/pdf.js/3.11.174/pdf.worker.min.js';
            }

            dropzone.addEventListener('click', function() { fileInput.click(); });
            dropzone.addEventListener('dragover', function(e) { e.preventDefault(); dropzone.classList.add('drag-over'); });
            dropzone.addEventListener('dragleave', function() { dropzone.classList.remove('drag-over'); });
            dropzone.addEventListener('drop', function(e) {
                e.preventDefault();
                dropzone.classList.remove('drag-over');
                if (e.dataTransfer.files && e.dataTransfer.files[0]) {
                    handleFile(e.dataTransfer.files[0]);
                }
            });

            fileInput.addEventListener('change', function(e) {
                if (e.target.files && e.target.files[0]) {
                    handleFile(e.target.files[0]);
                }
            });

            btnReset.addEventListener('click', function() {
                currentFile = null;
                totalPagesCount = 0;
                selectedPagesSet.clear();
                grid.innerHTML = '';
                workspace.style.display = 'none';
                dropzone.style.display = 'block';
                fileInput.value = '';
            });

            function formatBytes(bytes) {
                if (bytes === 0) return '0 Bytes';
                var k = 1024;
                var sizes = ['Bytes', 'KB', 'MB', 'GB'];
                var i = Math.floor(Math.log(bytes) / Math.log(k));
                return parseFloat((bytes / Math.pow(k, i)).toFixed(2)) + ' ' + sizes[i];
            }

            function updateButtonLabel() {
                var count = selectedPagesSet.size;
                if (count === 0) {
                    btnSave.disabled = true;
                    btnSave.textContent = '⚠️ Selecione pelo menos 1 página para extrair';
                } else {
                    btnSave.disabled = false;
                    var mode = modeMergedRadio.checked ? 'merged' : 'zip';
                    if (mode === 'merged') {
                        btnSave.textContent = '📥 Baixar ' + count + ' Página(s) em 1 PDF';
                    } else {
                        btnSave.textContent = '📦 Baixar ' + count + ' Página(s) em Arquivo .ZIP';
                    }
                }
            }

            function updateStats() {
                statTotal.textContent = 'Total: ' + totalPagesCount;
                statSelected.textContent = 'Selecionadas: ' + selectedPagesSet.size;
                updateButtonLabel();
            }

            function syncCards() {
                var cards = grid.querySelectorAll('.wzw-page-card');
                cards.forEach(function(card) {
                    var idx = parseInt(card.getAttribute('data-page-index'), 10);
                    var checkBadge = card.querySelector('.wzw-check-badge');
                    if (selectedPagesSet.has(idx)) {
                        card.classList.add('is-selected');
                        if (checkBadge) checkBadge.textContent = '✓';
                    } else {
                        card.classList.remove('is-selected');
                        if (checkBadge) checkBadge.textContent = '+';
                    }
                });
                updateStats();
            }

            // Quick toolbar actions
            btnAll.addEventListener('click', function() {
                for (var i = 0; i < totalPagesCount; i++) {
                    selectedPagesSet.add(i);
                }
                syncCards();
            });

            btnClear.addEventListener('click', function() {
                selectedPagesSet.clear();
                syncCards();
            });

            btnInvert.addEventListener('click', function() {
                var newSet = new Set();
                for (var i = 0; i < totalPagesCount; i++) {
                    if (!selectedPagesSet.has(i)) {
                        newSet.add(i);
                    }
                }
                selectedPagesSet = newSet;
                syncCards();
            });

            btnEven.addEventListener('click', function() {
                selectedPagesSet.clear();
                for (var i = 0; i < totalPagesCount; i++) {
                    if ((i + 1) % 2 === 0) {
                        selectedPagesSet.add(i);
                    }
                }
                syncCards();
            });

            btnOdd.addEventListener('click', function() {
                selectedPagesSet.clear();
                for (var i = 0; i < totalPagesCount; i++) {
                    if ((i + 1) % 2 !== 0) {
                        selectedPagesSet.add(i);
                    }
                }
                syncCards();
            });

            btnApplyRange.addEventListener('click', function() {
                var val = rangeInput.value.trim();
                if (!val) return;

                var parts = val.split(',');
                parts.forEach(function(part) {
                    part = part.trim();
                    if (part.indexOf('-') !== -1) {
                        var range = part.split('-');
                        var start = parseInt(range[0], 10);
                        var end = parseInt(range[1], 10);
                        if (!isNaN(start) && !isNaN(end)) {
                            var min = Math.min(start, end);
                            var max = Math.max(start, end);
                            for (var p = min; p <= max; p++) {
                                if (p >= 1 && p <= totalPagesCount) {
                                    selectedPagesSet.add(p - 1);
                                }
                            }
                        }
                    } else {
                        var pNum = parseInt(part, 10);
                        if (!isNaN(pNum) && pNum >= 1 && pNum <= totalPagesCount) {
                            selectedPagesSet.add(pNum - 1);
                        }
                    }
                });
                syncCards();
            });

            async function handleFile(file) {
                if (file.type !== 'application/pdf' && !file.name.toLowerCase().endsWith('.pdf')) {
                    alert('Por favor, selecione um arquivo no formato PDF válido.');
                    return;
                }

                currentFile = file;
                currentFileName = file.name.replace(/\.[^/.]+$/, '');
                filenameElem.textContent = file.name;
                outputNameInput.value = currentFileName + '-extraido';

                dropzone.style.display = 'none';
                workspace.style.display = 'block';
                progressBox.style.display = 'block';
                progressFill.style.width = '10%';
                statusLabel.textContent = 'Carregando documento PDF...';
                progressPercent.textContent = '10%';

                try {
                    var pdfjsBuffer = await file.arrayBuffer();
                    var loadingTask = window.pdfjsLib.getDocument({ data: pdfjsBuffer.slice(0) });
                    var pdf = await loadingTask.promise;

                    totalPagesCount = pdf.numPages;
                    fileinfoElem.textContent = formatBytes(file.size) + ' • ' + totalPagesCount + ' página(s)';

                    grid.innerHTML = '';
                    selectedPagesSet.clear();

                    for (var pageNum = 1; pageNum <= totalPagesCount; pageNum++) {
                        var pct = 10 + Math.floor((pageNum / totalPagesCount) * 80);
                        progressFill.style.width = pct + '%';
                        progressPercent.textContent = pct + '%';
                        statusLabel.textContent = 'Renderizando miniatura ' + pageNum + ' de ' + totalPagesCount + '...';

                        var page = await pdf.getPage(pageNum);
                        var viewport = page.getViewport({ scale: 0.35 });

                        var canvas = document.createElement('canvas');
                        var ctx = canvas.getContext('2d');
                        canvas.height = viewport.height;
                        canvas.width = viewport.width;
                        canvas.className = 'wzw-thumb-canvas';

                        await page.render({ canvasContext: ctx, viewport: viewport }).promise;

                        var card = document.createElement('div');
                        card.className = 'wzw-page-card';
                        card.setAttribute('data-page-index', (pageNum - 1).toString());

                        var checkBadge = document.createElement('span');
                        checkBadge.className = 'wzw-check-badge';
                        checkBadge.textContent = '+';

                        var thumbWrapper = document.createElement('div');
                        thumbWrapper.className = 'wzw-thumb-wrapper';
                        thumbWrapper.appendChild(canvas);

                        var badge = document.createElement('span');
                        badge.className = 'wzw-page-num-badge';
                        badge.textContent = 'Página ' + pageNum;

                        card.appendChild(checkBadge);
                        card.appendChild(thumbWrapper);
                        card.appendChild(badge);

                        card.addEventListener('click', function() {
                            var pIdx = parseInt(this.getAttribute('data-page-index'), 10);
                            if (selectedPagesSet.has(pIdx)) {
                                selectedPagesSet.delete(pIdx);
                            } else {
                                selectedPagesSet.add(pIdx);
                            }
                            syncCards();
                        });

                        grid.appendChild(card);
                    }

                    updateStats();
                    progressFill.style.width = '100%';
                    progressPercent.textContent = '100%';
                    statusLabel.textContent = '✓ Miniaturas prontas! Clique nas páginas que deseja extrair.';

                    setTimeout(function() {
                        progressBox.style.display = 'none';
                    }, 1200);

                } catch (err) {
                    console.error('Erro ao ler PDF:', err);
                    alert('Erro ao processar o arquivo PDF: ' + err.message);
                    btnReset.click();
                }
            }

            // Extração e download
            btnSave.addEventListener('click', async function() {
                var count = selectedPagesSet.size;
                if (count === 0) {
                    alert('Selecione pelo menos 1 página para extrair.');
                    return;
                }

                var isZipMode = modeZipRadio.checked;
                var baseName = outputNameInput.value.trim() || currentFileName + '-extraido';

                if (!currentFile) {
                    alert('Carregue um arquivo PDF antes de extrair.');
                    return;
                }

                btnSave.disabled = true;
                btnSave.textContent = '⏳ Extraindo páginas...';
                progressBox.style.display = 'block';
                progressFill.style.width = '20%';
                statusLabel.textContent = 'Preparando documento fonte...';
                progressPercent.textContent = '20%';

                try {
                    var { PDFDocument } = window.PDFLib;
                    var freshBuffer = await currentFile.arrayBuffer();
                    var srcDoc = await PDFDocument.load(freshBuffer);

                    // Converte o conjunto ordenado de índices de páginas selecionadas
                    var pagesToExtract = Array.from(selectedPagesSet).sort(function(a, b) { return a - b; });

                    if (!isZipMode) {
                        // MODO 1: PDF ÚNICO CONSOLIDADO
                        statusLabel.textContent = 'Copiando páginas para o novo PDF consolidado...';
                        progressFill.style.width = '50%';
                        progressPercent.textContent = '50%';

                        var newDoc = await PDFDocument.create();
                        var copiedPages = await newDoc.copyPages(srcDoc, pagesToExtract);
                        copiedPages.forEach(function(p) {
                            newDoc.addPage(p);
                        });

                        progressFill.style.width = '85%';
                        progressPercent.textContent = '85%';
                        statusLabel.textContent = 'Gerando arquivo PDF consolidado...';

                        var pdfBytes = await newDoc.save();
                        var blob = new Blob([pdfBytes], { type: 'application/pdf' });
                        var url = URL.createObjectURL(blob);

                        var a = document.createElement('a');
                        a.href = url;
                        a.download = baseName + '.pdf';
                        document.body.appendChild(a);
                        a.click();
                        document.body.removeChild(a);
                        URL.revokeObjectURL(url);

                    } else {
                        // MODO 2: PACOTE .ZIP COM CADA PÁGINA EM SEU PRÓPRIO PDF
                        if (!window.JSZip) {
                            throw new Error('Biblioteca JSZip não encontrada.');
                        }

                        var zip = new window.JSZip();

                        for (var i = 0; i < pagesToExtract.length; i++) {
                            var pageIndex = pagesToExtract[i];
                            var visualPageNum = pageIndex + 1;

                            var pct = 20 + Math.floor(((i + 1) / pagesToExtract.length) * 65);
                            progressFill.style.width = pct + '%';
                            progressPercent.textContent = pct + '%';
                            statusLabel.textContent = 'Gerando PDF individual da página ' + visualPageNum + ' (' + (i + 1) + ' de ' + pagesToExtract.length + ')...';

                            var singleDoc = await PDFDocument.create();
                            var singleCopied = await singleDoc.copyPages(srcDoc, [pageIndex]);
                            singleDoc.addPage(singleCopied[0]);

                            var singleBytes = await singleDoc.save();
                            var singleFilename = baseName + '-pagina-' + visualPageNum + '.pdf';
                            zip.file(singleFilename, singleBytes);
                        }

                        statusLabel.textContent = 'Comprimindo arquivos no pacote .ZIP...';
                        progressFill.style.width = '90%';
                        progressPercent.textContent = '90%';

                        var zipBlob = await zip.generateAsync({ type: 'blob' });
                        var zipUrl = URL.createObjectURL(zipBlob);

                        var aZip = document.createElement('a');
                        aZip.href = zipUrl;
                        aZip.download = baseName + '.zip';
                        document.body.appendChild(aZip);
                        aZip.click();
                        document.body.removeChild(aZip);
                        URL.revokeObjectURL(zipUrl);
                    }

                    progressFill.style.width = '100%';
                    progressPercent.textContent = '100%';
                    statusLabel.textContent = '✓ Extração concluída e baixada com sucesso!';

                    setTimeout(function() {
                        progressBox.style.display = 'none';
                        btnSave.disabled = false;
                        updateStats();
                    }, 2000);

                } catch (err) {
                    console.error('Erro na extração:', err);
                    alert('Erro ao extrair páginas: ' + err.message);
                    btnSave.disabled = false;
                    updateStats();
                    progressBox.style.display = 'none';
                }
            });
        })();
        </script>
    </div>
    
<ul>
<li><strong>Modo Consolidado (1 PDF Único):</strong> Junta todas as páginas que você selecionou em uma nova ordem compacta em um único arquivo PDF.</li>
<li><strong>Modo Separado (.ZIP Individual):</strong> Salva cada página escolhida em seu próprio arquivo PDF independente e compacta tudo em um pacote <code>.zip</code> pronto para arquivamento ou envio.</li>
</ul>
<h3>Preservação Vetorial com Base no Padrão ISO 32000</h3>
<p>A extração realizada no Web-ZoneWare não realiza conversão rasterizada das páginas. Toda a estrutura de objetos descrita pela <a href="https://www.adobe.com/devnet/pdf/pdf_reference.html" target="_blank" rel="noopener noreferrer">especificação técnica da Adobe e ISO</a> é mantida, assegurando nitidez cristalina, seleção de textos e links clicáveis.</p>
<p>Confira também o nosso <a href="/web-ferramentas/dividir-pdf/">divisor avançado de PDFs</a> ou integre imagens aos seus documentos através do <a href="/ferramentas-de-imagens/">Hub de Ferramentas de Imagens</a>.</p>
<p><script>
{
  "@context": "https://schema.org",
  "@type": "FAQPage",
  "mainEntity": [
    {
      "@type": "Question",
      "name": "Qual a diferença entre extrair em PDF único ou em ZIP?",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "O PDF único reúne as páginas escolhidas em uma sequência em um só arquivo. O pacote ZIP gera um PDF exclusivo para cada página selecionada, ideal quando você precisa distribuir páginas para pessoas diferentes."
      }
    },
    {
      "@type": "Question",
      "name": "Há limite de páginas para extrair?",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "Não há limite imposto pelo site. Como o processamento ocorre no próprio hardware do usuário, o sistema suporta documentos de centenas de páginas com alta fluidez."
      }
    }
  ]
}
</script></p>
<p>O post <a href="https://webzoneware.com/web-ferramentas/pdf/extrair-paginas-pdf/">Extrair Páginas do PDF Online: Salvar em PDF ou ZIP | Web-ZoneWare</a> apareceu primeiro em <a href="https://webzoneware.com">Web-Zoneware</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://webzoneware.com/web-ferramentas/pdf/extrair-paginas-pdf/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Dividir PDF Online Grátis — Separar Páginas e ZIP &#124; Web-ZoneWare</title>
		<link>https://webzoneware.com/web-ferramentas/pdf/dividir-pdf-online/</link>
					<comments>https://webzoneware.com/web-ferramentas/pdf/dividir-pdf-online/#respond</comments>
		
		<dc:creator><![CDATA[Web-Zoneware]]></dc:creator>
		<pubDate>Fri, 16 Oct 2026 18:46:48 +0000</pubDate>
				<category><![CDATA[PDF & Documentos]]></category>
		<category><![CDATA[desmembrar pdf online]]></category>
		<category><![CDATA[extrair paginas pdf]]></category>
		<category><![CDATA[separar paginas pdf]]></category>
		<category><![CDATA[split pdf online]]></category>
		<guid isPermaLink="false">https://webzoneware.com/?p=28976</guid>

					<description><![CDATA[<p>O Dividir PDF Online do Web-ZoneWare oferece precisão absoluta para você extrair páginas específicas, separar intervalos de relatórios extensos ou transformar cada folha de um documento em arquivos PDF individuais compactados em ZIP. Com interface intuitiva e processamento instantâneo, a ferramenta opera com as bibliotecas modernas PDF-Lib e JSZip, garantindo conformidade com os padrões da [&#8230;]</p>
<p>O post <a href="https://webzoneware.com/web-ferramentas/pdf/dividir-pdf-online/">Dividir PDF Online Grátis — Separar Páginas e ZIP | Web-ZoneWare</a> apareceu primeiro em <a href="https://webzoneware.com">Web-Zoneware</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>O <strong>Dividir PDF Online</strong> do Web-ZoneWare oferece precisão absoluta para você extrair páginas específicas, separar intervalos de relatórios extensos ou transformar cada folha de um documento em arquivos PDF individuais compactados em ZIP.</p>
<p>Com interface intuitiva e processamento instantâneo, a ferramenta opera com as bibliotecas modernas <a href="https://pdf-lib.js.org/" target="_blank" rel="noopener noreferrer">PDF-Lib</a> e <a href="https://stuk.github.io/jszip/" target="_blank" rel="noopener noreferrer">JSZip</a>, garantindo conformidade com os padrões da <a href="https://developer.mozilla.org/pt-BR/docs/Web/API" target="_blank" rel="noopener noreferrer">Web APIs da Mozilla</a> e segurança total dos seus dados corporativos e pessoais.</p>
    <div id="wzw_split_60bf8ac6_f555_4304_b013_d8d3c1b3d544" class="wzw-tool-container wzw-pdf-suite-wrapper">
        <style>
            #wzw_split_60bf8ac6_f555_4304_b013_d8d3c1b3d544 {
                background: linear-gradient(145deg, #0f172a 0%, #1e293b 100%);
                color: #f8fafc;
                border-radius: 16px;
                padding: 24px;
                box-shadow: 0 12px 35px rgba(0, 0, 0, 0.35);
                border: 1px solid #334155;
                font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Helvetica, Arial, sans-serif;
                margin: 20px 0 35px 0;
            }
            #wzw_split_60bf8ac6_f555_4304_b013_d8d3c1b3d544 * {
                box-sizing: border-box;
            }
            #wzw_split_60bf8ac6_f555_4304_b013_d8d3c1b3d544 .wzw-tool-header {
                display: flex;
                align-items: center;
                justify-content: space-between;
                flex-wrap: wrap;
                gap: 12px;
                margin-bottom: 20px;
                padding-bottom: 16px;
                border-bottom: 1px solid rgba(255, 255, 255, 0.1);
            }
            #wzw_split_60bf8ac6_f555_4304_b013_d8d3c1b3d544 .wzw-tool-title {
                margin: 0;
                font-size: 1.35rem;
                font-weight: 800;
                color: #38bdf8;
                display: flex;
                align-items: center;
                gap: 10px;
            }
            #wzw_split_60bf8ac6_f555_4304_b013_d8d3c1b3d544 .wzw-badge-client {
                background: rgba(16, 185, 129, 0.2);
                color: #34d399;
                border: 1px solid rgba(16, 185, 129, 0.4);
                padding: 4px 10px;
                border-radius: 20px;
                font-size: 11px;
                font-weight: 700;
                text-transform: uppercase;
                letter-spacing: 0.5px;
            }
            #wzw_split_60bf8ac6_f555_4304_b013_d8d3c1b3d544 .wzw-dropzone {
                border: 2px dashed #0284c7;
                background: rgba(2, 132, 199, 0.05);
                border-radius: 14px;
                padding: 44px 20px;
                text-align: center;
                cursor: pointer;
                transition: all 0.25s ease;
                margin-bottom: 20px;
            }
            #wzw_split_60bf8ac6_f555_4304_b013_d8d3c1b3d544 .wzw-dropzone:hover,
            #wzw_split_60bf8ac6_f555_4304_b013_d8d3c1b3d544 .wzw-dropzone.drag-over {
                background: rgba(2, 132, 199, 0.12);
                border-color: #38bdf8;
                transform: translateY(-2px);
            }
            #wzw_split_60bf8ac6_f555_4304_b013_d8d3c1b3d544 .wzw-drop-icon {
                font-size: 48px;
                margin-bottom: 12px;
                display: block;
            }
            #wzw_split_60bf8ac6_f555_4304_b013_d8d3c1b3d544 .wzw-drop-title {
                font-size: 1.15rem;
                font-weight: 700;
                color: #f1f5f9;
                margin: 0 0 6px 0;
            }
            #wzw_split_60bf8ac6_f555_4304_b013_d8d3c1b3d544 .wzw-drop-sub {
                font-size: 13px;
                color: #94a3b8;
                margin: 0;
            }
            #wzw_split_60bf8ac6_f555_4304_b013_d8d3c1b3d544 .wzw-workspace {
                display: none;
                background: rgba(15, 23, 42, 0.6);
                border-radius: 14px;
                padding: 20px;
                border: 1px solid #334155;
            }
            #wzw_split_60bf8ac6_f555_4304_b013_d8d3c1b3d544 .wzw-file-summary {
                display: flex;
                align-items: center;
                justify-content: space-between;
                background: #1e293b;
                border: 1px solid #475569;
                border-radius: 10px;
                padding: 12px 18px;
                margin-bottom: 20px;
            }
            #wzw_split_60bf8ac6_f555_4304_b013_d8d3c1b3d544 .wzw-file-meta {
                display: flex;
                align-items: center;
                gap: 12px;
            }
            #wzw_split_60bf8ac6_f555_4304_b013_d8d3c1b3d544 .wzw-file-icon {
                font-size: 28px;
            }
            #wzw_split_60bf8ac6_f555_4304_b013_d8d3c1b3d544 .wzw-file-details strong {
                display: block;
                font-size: 14px;
                color: #f8fafc;
            }
            #wzw_split_60bf8ac6_f555_4304_b013_d8d3c1b3d544 .wzw-file-details span {
                font-size: 12px;
                color: #94a3b8;
            }
            #wzw_split_60bf8ac6_f555_4304_b013_d8d3c1b3d544 .wzw-btn-outline {
                background: transparent;
                border: 1px solid #64748b;
                color: #cbd5e1;
                border-radius: 8px;
                padding: 6px 14px;
                font-size: 12px;
                font-weight: 600;
                cursor: pointer;
                transition: all 0.2s;
            }
            #wzw_split_60bf8ac6_f555_4304_b013_d8d3c1b3d544 .wzw-btn-outline:hover {
                border-color: #38bdf8;
                color: #38bdf8;
                background: rgba(56, 189, 248, 0.1);
            }
            #wzw_split_60bf8ac6_f555_4304_b013_d8d3c1b3d544 .wzw-tabs-nav {
                display: flex;
                gap: 8px;
                border-bottom: 1px solid #334155;
                margin-bottom: 18px;
                padding-bottom: 8px;
                flex-wrap: wrap;
            }
            #wzw_split_60bf8ac6_f555_4304_b013_d8d3c1b3d544 .wzw-tab-btn {
                background: #1e293b;
                border: 1px solid #334155;
                color: #94a3b8;
                padding: 8px 16px;
                border-radius: 8px;
                font-size: 13px;
                font-weight: 600;
                cursor: pointer;
                transition: all 0.2s;
            }
            #wzw_split_60bf8ac6_f555_4304_b013_d8d3c1b3d544 .wzw-tab-btn.active {
                background: #0284c7;
                border-color: #38bdf8;
                color: #ffffff;
            }
            #wzw_split_60bf8ac6_f555_4304_b013_d8d3c1b3d544 .wzw-tab-pane {
                display: none;
                margin-bottom: 20px;
            }
            #wzw_split_60bf8ac6_f555_4304_b013_d8d3c1b3d544 .wzw-tab-pane.active {
                display: block;
            }
            #wzw_split_60bf8ac6_f555_4304_b013_d8d3c1b3d544 .wzw-form-label {
                display: block;
                font-size: 13px;
                font-weight: 600;
                color: #cbd5e1;
                margin-bottom: 8px;
            }
            #wzw_split_60bf8ac6_f555_4304_b013_d8d3c1b3d544 .wzw-input-text {
                width: 100%;
                background: #0f172a;
                border: 1px solid #475569;
                border-radius: 8px;
                padding: 10px 14px;
                color: #f8fafc;
                font-size: 14px;
                outline: none;
                transition: border 0.2s;
            }
            #wzw_split_60bf8ac6_f555_4304_b013_d8d3c1b3d544 .wzw-input-text:focus {
                border-color: #38bdf8;
            }
            #wzw_split_60bf8ac6_f555_4304_b013_d8d3c1b3d544 .wzw-hint {
                font-size: 12px;
                color: #94a3b8;
                margin-top: 6px;
                display: block;
            }
            #wzw_split_60bf8ac6_f555_4304_b013_d8d3c1b3d544 .wzw-radio-group {
                display: flex;
                flex-direction: column;
                gap: 10px;
                margin-top: 14px;
                background: rgba(15, 23, 42, 0.4);
                padding: 14px;
                border-radius: 8px;
                border: 1px solid #334155;
            }
            #wzw_split_60bf8ac6_f555_4304_b013_d8d3c1b3d544 .wzw-radio-item {
                display: flex;
                align-items: center;
                gap: 10px;
                font-size: 13px;
                color: #e2e8f0;
                cursor: pointer;
            }
            #wzw_split_60bf8ac6_f555_4304_b013_d8d3c1b3d544 .wzw-info-box {
                background: rgba(2, 132, 199, 0.1);
                border: 1px solid rgba(2, 132, 199, 0.3);
                border-radius: 8px;
                padding: 14px 18px;
                font-size: 13px;
                color: #bae6fd;
                line-height: 1.5;
            }
            #wzw_split_60bf8ac6_f555_4304_b013_d8d3c1b3d544 .wzw-grid-toolbar {
                display: flex;
                justify-content: space-between;
                align-items: center;
                margin-bottom: 10px;
            }
            #wzw_split_60bf8ac6_f555_4304_b013_d8d3c1b3d544 .wzw-grid-actions {
                display: flex;
                gap: 10px;
            }
            #wzw_split_60bf8ac6_f555_4304_b013_d8d3c1b3d544 .wzw-grid-container {
                display: grid;
                grid-template-columns: repeat(auto-fill, minmax(70px, 1fr));
                gap: 10px;
                max-height: 240px;
                overflow-y: auto;
                background: #0f172a;
                border: 1px solid #334155;
                border-radius: 8px;
                padding: 12px;
            }
            #wzw_split_60bf8ac6_f555_4304_b013_d8d3c1b3d544 .wzw-page-thumb {
                height: 75px;
                background: #1e293b;
                border: 2px solid #334155;
                border-radius: 6px;
                display: flex;
                flex-direction: column;
                align-items: center;
                justify-content: center;
                cursor: pointer;
                transition: all 0.15s ease;
                user-select: none;
            }
            #wzw_split_60bf8ac6_f555_4304_b013_d8d3c1b3d544 .wzw-page-thumb:hover {
                border-color: #64748b;
                background: #334155;
            }
            #wzw_split_60bf8ac6_f555_4304_b013_d8d3c1b3d544 .wzw-page-thumb.selected {
                background: rgba(2, 132, 199, 0.25);
                border-color: #38bdf8;
                color: #38bdf8;
            }
            #wzw_split_60bf8ac6_f555_4304_b013_d8d3c1b3d544 .wzw-page-thumb-num {
                font-size: 15px;
                font-weight: 700;
            }
            #wzw_split_60bf8ac6_f555_4304_b013_d8d3c1b3d544 .wzw-page-thumb-sub {
                font-size: 10px;
                text-transform: uppercase;
                color: #94a3b8;
            }
            #wzw_split_60bf8ac6_f555_4304_b013_d8d3c1b3d544 .wzw-action-bar {
                display: flex;
                align-items: center;
                justify-content: space-between;
                flex-wrap: wrap;
                gap: 14px;
                margin-top: 20px;
                padding-top: 18px;
                border-top: 1px solid #334155;
            }
            #wzw_split_60bf8ac6_f555_4304_b013_d8d3c1b3d544 .wzw-btn-execute {
                background: linear-gradient(135deg, #0284c7 0%, #0369a1 100%);
                color: #ffffff;
                border: none;
                border-radius: 10px;
                padding: 12px 24px;
                font-size: 14px;
                font-weight: 700;
                cursor: pointer;
                display: inline-flex;
                align-items: center;
                gap: 8px;
                box-shadow: 0 4px 15px rgba(2, 132, 199, 0.4);
                transition: all 0.2s;
            }
            #wzw_split_60bf8ac6_f555_4304_b013_d8d3c1b3d544 .wzw-btn-execute:hover {
                transform: translateY(-1px);
                box-shadow: 0 6px 20px rgba(2, 132, 199, 0.6);
            }
            #wzw_split_60bf8ac6_f555_4304_b013_d8d3c1b3d544 .wzw-btn-execute:disabled {
                opacity: 0.6;
                cursor: not-allowed;
            }
            #wzw_split_60bf8ac6_f555_4304_b013_d8d3c1b3d544 .wzw-progress-box {
                display: none;
                margin-top: 16px;
                background: rgba(15, 23, 42, 0.6);
                border-radius: 8px;
                padding: 12px;
                border: 1px solid #334155;
            }
            #wzw_split_60bf8ac6_f555_4304_b013_d8d3c1b3d544 .wzw-progress-bar-wrap {
                width: 100%;
                height: 8px;
                background: #1e293b;
                border-radius: 4px;
                overflow: hidden;
                margin-top: 6px;
            }
            #wzw_split_60bf8ac6_f555_4304_b013_d8d3c1b3d544 .wzw-progress-bar-fill {
                width: 0%;
                height: 100%;
                background: linear-gradient(90deg, #38bdf8, #10b981);
                transition: width 0.2s ease;
            }
        </style>

        <div class="wzw-tool-header">
            <h3 class="wzw-tool-title">
                <span>✂️</span> Dividir PDF Online Grátis
            </h3>
            <span class="wzw-badge-client">100% Client-Side • Privacidade Garantida</span>
        </div>

        <!-- Dropzone de Entrada -->
        <div id="wzw_split_60bf8ac6_f555_4304_b013_d8d3c1b3d544_dropzone" class="wzw-dropzone">
            <input type="file" id="wzw_split_60bf8ac6_f555_4304_b013_d8d3c1b3d544_file_input" accept="application/pdf" style="display: none;">
            <span class="wzw-drop-icon">📄</span>
            <p class="wzw-drop-title">Arraste o arquivo PDF aqui ou clique para selecionar</p>
            <p class="wzw-drop-sub">Divida páginas com precisão cirúrgica sem enviar nada ao servidor</p>
        </div>

        <!-- Espaço de Trabalho do Usuário -->
        <div id="wzw_split_60bf8ac6_f555_4304_b013_d8d3c1b3d544_workspace" class="wzw-workspace">
            <div class="wzw-file-summary">
                <div class="wzw-file-meta">
                    <span class="wzw-file-icon">📑</span>
                    <div class="wzw-file-details">
                        <strong id="wzw_split_60bf8ac6_f555_4304_b013_d8d3c1b3d544_file_name">documento.pdf</strong>
                        <span id="wzw_split_60bf8ac6_f555_4304_b013_d8d3c1b3d544_file_stats">0 páginas • 0 KB</span>
                    </div>
                </div>
                <button type="button" id="wzw_split_60bf8ac6_f555_4304_b013_d8d3c1b3d544_btn_change" class="wzw-btn-outline">Trocar Arquivo</button>
            </div>

            <!-- Abas de Modos de Divisão -->
            <div class="wzw-tabs-nav">
                <button type="button" class="wzw-tab-btn active" data-mode="range">📋 Por Intervalos / Páginas</button>
                <button type="button" class="wzw-tab-btn" data-mode="all">📦 Extrair Todas as Páginas (ZIP)</button>
                <button type="button" class="wzw-tab-btn" data-mode="visual">🖱️ Seleção Visual no Grid</button>
            </div>

            <!-- Painel 1: Intervalos -->
            <div id="wzw_split_60bf8ac6_f555_4304_b013_d8d3c1b3d544_panel_range" class="wzw-tab-pane active">
                <label class="wzw-form-label" for="wzw_split_60bf8ac6_f555_4304_b013_d8d3c1b3d544_input_range">Intervalos de páginas para extrair:</label>
                <input type="text" id="wzw_split_60bf8ac6_f555_4304_b013_d8d3c1b3d544_input_range" class="wzw-input-text" placeholder="Ex: 1-3, 5, 8-12">
                <span class="wzw-hint">Separe números por vírgula e utilize hífen (-) para faixas contínuas.</span>

                <div class="wzw-radio-group">
                    <label class="wzw-radio-item">
                        <input type="radio" name="wzw_split_60bf8ac6_f555_4304_b013_d8d3c1b3d544_range_action" value="single" checked>
                        <span>Mesclar páginas selecionadas em um <strong>novo arquivo PDF único</strong></span>
                    </label>
                    <label class="wzw-radio-item">
                        <input type="radio" name="wzw_split_60bf8ac6_f555_4304_b013_d8d3c1b3d544_range_action" value="zip">
                        <span>Salvar cada página selecionada separadamente em um pacote compactado <strong>(.ZIP)</strong></span>
                    </label>
                </div>
            </div>

            <!-- Painel 2: Todas em ZIP -->
            <div id="wzw_split_60bf8ac6_f555_4304_b013_d8d3c1b3d544_panel_all" class="wzw-tab-pane">
                <div class="wzw-info-box">
                    💡 Cada uma das <strong id="wzw_split_60bf8ac6_f555_4304_b013_d8d3c1b3d544_all_count">0</strong> páginas do seu documento será desmembrada em um arquivo PDF independente (`pagina-1.pdf`, `pagina-2.pdf`, etc.) e empacotada em um único download <strong>.ZIP</strong>.
                </div>
            </div>

            <!-- Painel 3: Seleção Visual -->
            <div id="wzw_split_60bf8ac6_f555_4304_b013_d8d3c1b3d544_panel_visual" class="wzw-tab-pane">
                <div class="wzw-grid-toolbar">
                    <span class="wzw-hint">Clique nas miniaturas para selecionar as páginas que deseja salvar:</span>
                    <div class="wzw-grid-actions">
                        <button type="button" id="wzw_split_60bf8ac6_f555_4304_b013_d8d3c1b3d544_btn_select_all" class="wzw-btn-outline">Marcar Todas</button>
                        <button type="button" id="wzw_split_60bf8ac6_f555_4304_b013_d8d3c1b3d544_btn_deselect_all" class="wzw-btn-outline">Desmarcar</button>
                    </div>
                </div>
                <div id="wzw_split_60bf8ac6_f555_4304_b013_d8d3c1b3d544_grid" class="wzw-grid-container"></div>
            </div>

            <!-- Nome do Arquivo Final -->
            <div style="margin-top: 18px;">
                <label class="wzw-form-label" for="wzw_split_60bf8ac6_f555_4304_b013_d8d3c1b3d544_output_name">Nome do Arquivo Gerado:</label>
                <input type="text" id="wzw_split_60bf8ac6_f555_4304_b013_d8d3c1b3d544_output_name" class="wzw-input-text" value="documento-dividido">
            </div>

            <!-- Barra de Progresso -->
            <div id="wzw_split_60bf8ac6_f555_4304_b013_d8d3c1b3d544_progress" class="wzw-progress-box">
                <div style="display: flex; justify-content: space-between; font-size: 12px; color: #cbd5e1;">
                    <span id="wzw_split_60bf8ac6_f555_4304_b013_d8d3c1b3d544_progress_status">Processando páginas...</span>
                    <span id="wzw_split_60bf8ac6_f555_4304_b013_d8d3c1b3d544_progress_percent">0%</span>
                </div>
                <div class="wzw-progress-bar-wrap">
                    <div id="wzw_split_60bf8ac6_f555_4304_b013_d8d3c1b3d544_progress_fill" class="wzw-progress-bar-fill"></div>
                </div>
            </div>

            <!-- Barra de Ações -->
            <div class="wzw-action-bar">
                <button type="button" id="wzw_split_60bf8ac6_f555_4304_b013_d8d3c1b3d544_btn_reset" class="wzw-btn-outline">Recomeçar</button>
                <button type="button" id="wzw_split_60bf8ac6_f555_4304_b013_d8d3c1b3d544_btn_execute" class="wzw-btn-execute">
                    <span>⚡</span> Dividir e Baixar Arquivos
                </button>
            </div>
        </div>

        <script>
        (function() {
            const root = document.getElementById('wzw_split_60bf8ac6_f555_4304_b013_d8d3c1b3d544');
            if (!root) return;

            const dropZone = root.querySelector('#wzw_split_60bf8ac6_f555_4304_b013_d8d3c1b3d544_dropzone');
            const fileInput = root.querySelector('#wzw_split_60bf8ac6_f555_4304_b013_d8d3c1b3d544_file_input');
            const workspace = root.querySelector('#wzw_split_60bf8ac6_f555_4304_b013_d8d3c1b3d544_workspace');
            const fileNameElem = root.querySelector('#wzw_split_60bf8ac6_f555_4304_b013_d8d3c1b3d544_file_name');
            const fileStatsElem = root.querySelector('#wzw_split_60bf8ac6_f555_4304_b013_d8d3c1b3d544_file_stats');
            const btnChange = root.querySelector('#wzw_split_60bf8ac6_f555_4304_b013_d8d3c1b3d544_btn_change');
            const btnReset = root.querySelector('#wzw_split_60bf8ac6_f555_4304_b013_d8d3c1b3d544_btn_reset');
            const btnExecute = root.querySelector('#wzw_split_60bf8ac6_f555_4304_b013_d8d3c1b3d544_btn_execute');
            const tabButtons = root.querySelectorAll('.wzw-tab-btn');
            const tabPanes = root.querySelectorAll('.wzw-tab-pane');
            const rangeInput = root.querySelector('#wzw_split_60bf8ac6_f555_4304_b013_d8d3c1b3d544_input_range');
            const allCountElem = root.querySelector('#wzw_split_60bf8ac6_f555_4304_b013_d8d3c1b3d544_all_count');
            const visualGrid = root.querySelector('#wzw_split_60bf8ac6_f555_4304_b013_d8d3c1b3d544_grid');
            const btnSelectAll = root.querySelector('#wzw_split_60bf8ac6_f555_4304_b013_d8d3c1b3d544_btn_select_all');
            const btnDeselectAll = root.querySelector('#wzw_split_60bf8ac6_f555_4304_b013_d8d3c1b3d544_btn_deselect_all');
            const outputNameInput = root.querySelector('#wzw_split_60bf8ac6_f555_4304_b013_d8d3c1b3d544_output_name');
            const progressBox = root.querySelector('#wzw_split_60bf8ac6_f555_4304_b013_d8d3c1b3d544_progress');
            const progressStatus = root.querySelector('#wzw_split_60bf8ac6_f555_4304_b013_d8d3c1b3d544_progress_status');
            const progressPercent = root.querySelector('#wzw_split_60bf8ac6_f555_4304_b013_d8d3c1b3d544_progress_percent');
            const progressFill = root.querySelector('#wzw_split_60bf8ac6_f555_4304_b013_d8d3c1b3d544_progress_fill');

            let currentPdfBuffer = null;
            let currentFileName = '';
            let totalPageCount = 0;
            let currentMode = 'range';
            let visualSelected = new Set();

            function formatBytes(bytes) {
                if (bytes === 0) return '0 Bytes';
                const k = 1024;
                const sizes = ['Bytes', 'KB', 'MB'];
                const i = Math.floor(Math.log(bytes) / Math.log(k));
                return parseFloat((bytes / Math.pow(k, i)).toFixed(1)) + ' ' + sizes[i];
            }

            dropZone.addEventListener('click', () => fileInput.click());

            ['dragenter', 'dragover'].forEach(name => {
                dropZone.addEventListener(name, (e) => {
                    e.preventDefault();
                    dropZone.classList.add('drag-over');
                });
            });

            ['dragleave', 'drop'].forEach(name => {
                dropZone.addEventListener(name, (e) => {
                    e.preventDefault();
                    dropZone.classList.remove('drag-over');
                });
            });

            dropZone.addEventListener('drop', (e) => {
                if (e.dataTransfer.files && e.dataTransfer.files[0]) {
                    processFile(e.dataTransfer.files[0]);
                }
            });

            fileInput.addEventListener('change', (e) => {
                if (e.target.files && e.target.files[0]) {
                    processFile(e.target.files[0]);
                }
            });

            btnChange.addEventListener('click', () => fileInput.click());

            btnReset.addEventListener('click', () => {
                currentPdfBuffer = null;
                totalPageCount = 0;
                visualSelected.clear();
                fileInput.value = '';
                workspace.style.display = 'none';
                dropZone.style.display = 'block';
                progressBox.style.display = 'none';
            });

            tabButtons.forEach(btn => {
                btn.addEventListener('click', () => {
                    tabButtons.forEach(b => b.classList.remove('active'));
                    tabPanes.forEach(p => p.classList.remove('active'));
                    btn.classList.add('active');
                    currentMode = btn.getAttribute('data-mode');
                    const targetPane = root.querySelector(`#wzw_split_60bf8ac6_f555_4304_b013_d8d3c1b3d544_panel_${currentMode}`);
                    if (targetPane) targetPane.classList.add('active');
                });
            });

            async function processFile(file) {
                if (file.type !== 'application/pdf' && !file.name.toLowerCase().endsWith('.pdf')) {
                    alert('Por favor, selecione um arquivo em formato PDF.');
                    return;
                }

                if (typeof window.PDFLib === 'undefined') {
                    alert('O motor de processamento PDF ainda está carregando. Tente novamente em alguns segundos.');
                    return;
                }

                try {
                    currentFileName = file.name;
                    currentPdfBuffer = await file.arrayBuffer();
                    const pdfDoc = await PDFLib.PDFDocument.load(currentPdfBuffer, { ignoreEncryption: true });
                    totalPageCount = pdfDoc.getPageCount();

                    fileNameElem.textContent = file.name;
                    fileStatsElem.textContent = `${totalPageCount} ${totalPageCount === 1 ? 'página' : 'páginas'} • ${formatBytes(file.size)}`;
                    allCountElem.textContent = totalPageCount;

                    rangeInput.value = totalPageCount > 1 ? `1-${Math.min(3, totalPageCount)}` : '1';
                    outputNameInput.value = file.name.replace(/\.[^/.]+$/, "") + '-dividido';

                    buildVisualGrid();

                    dropZone.style.display = 'none';
                    workspace.style.display = 'block';
                } catch (err) {
                    console.error('Erro ao ler PDF:', err);
                    alert('Não foi possível ler o arquivo PDF. Verifique se ele não possui senha de segurança restritiva.');
                }
            }

            function buildVisualGrid() {
                visualGrid.innerHTML = '';
                visualSelected.clear();

                for (let i = 1; i <= totalPageCount; i++) {
                    const block = document.createElement('div');
                    block.className = 'wzw-page-thumb';
                    block.setAttribute('data-page', i);
                    block.innerHTML = `
                        <span class="wzw-page-thumb-num">${i}</span>
                        <span class="wzw-page-thumb-sub">Pág</span>
                    `;

                    block.addEventListener('click', () => {
                        if (visualSelected.has(i)) {
                            visualSelected.delete(i);
                            block.classList.remove('selected');
                        } else {
                            visualSelected.add(i);
                            block.classList.add('selected');
                        }
                    });

                    visualGrid.appendChild(block);
                }
            }

            btnSelectAll.addEventListener('click', () => {
                visualSelected.clear();
                visualGrid.querySelectorAll('.wzw-page-thumb').forEach(b => {
                    b.classList.add('selected');
                    visualSelected.add(parseInt(b.getAttribute('data-page')));
                });
            });

            btnDeselectAll.addEventListener('click', () => {
                visualSelected.clear();
                visualGrid.querySelectorAll('.wzw-page-thumb').forEach(b => b.classList.remove('selected'));
            });

            function parseRange(str, max) {
                const pages = new Set();
                const parts = str.split(',');

                for (let part of parts) {
                    part = part.trim();
                    if (!part) continue;

                    if (part.includes('-')) {
                        const [startStr, endStr] = part.split('-');
                        const start = parseInt(startStr);
                        const end = parseInt(endStr);
                        if (!isNaN(start) && !isNaN(end)) {
                            const minVal = Math.max(1, Math.min(start, end));
                            const maxVal = Math.min(max, Math.max(start, end));
                            for (let i = minVal; i <= maxVal; i++) {
                                pages.add(i);
                            }
                        }
                    } else {
                        const p = parseInt(part);
                        if (!isNaN(p) && p >= 1 && p <= max) {
                            pages.add(p);
                        }
                    }
                }
                return Array.from(pages).sort((a, b) => a - b);
            }

            btnExecute.addEventListener('click', async () => {
                if (!currentPdfBuffer) return;

                btnExecute.disabled = true;
                progressBox.style.display = 'block';
                progressPercent.textContent = '10%';
                progressFill.style.width = '10%';
                progressStatus.textContent = 'Lendo estrutura original...';

                try {
                    const donorPdf = await PDFLib.PDFDocument.load(currentPdfBuffer, { ignoreEncryption: true });
                    const baseFileName = (outputNameInput.value.trim() || 'documento-dividido');

                    if (currentMode === 'all') {
                        // Todas as páginas em ZIP
                        if (typeof window.JSZip === 'undefined') {
                            throw new Error('Biblioteca JSZip não carregada.');
                        }
                        const zip = new JSZip();

                        for (let i = 0; i < totalPageCount; i++) {
                            const pct = Math.round(10 + ((i + 1) / totalPageCount) * 80);
                            progressPercent.textContent = pct + '%';
                            progressFill.style.width = pct + '%';
                            progressStatus.textContent = `Extraindo página ${i + 1} de ${totalPageCount}...`;

                            const singleDoc = await PDFLib.PDFDocument.create();
                            const [copiedPage] = await singleDoc.copyPages(donorPdf, [i]);
                            singleDoc.addPage(copiedPage);

                            const pdfBytes = await singleDoc.save();
                            zip.file(`pagina-${i + 1}-${baseFileName}.pdf`, pdfBytes);
                        }

                        progressStatus.textContent = 'Compactando arquivo ZIP...';
                        const zipBlob = await zip.generateAsync({ type: 'blob' });
                        const zipUrl = URL.createObjectURL(zipBlob);
                        const a = document.createElement('a');
                        a.href = zipUrl;
                        a.download = `${baseFileName}-todas-paginas.zip`;
                        document.body.appendChild(a);
                        a.click();
                        document.body.removeChild(a);

                    } else if (currentMode === 'range' || currentMode === 'visual') {
                        let selectedPageNumbers = [];

                        if (currentMode === 'range') {
                            selectedPageNumbers = parseRange(rangeInput.value, totalPageCount);
                            if (selectedPageNumbers.length === 0) {
                                alert(`Informe intervalos válidos entre 1 e ${totalPageCount}.`);
                                resetProgress();
                                return;
                            }
                        } else {
                            selectedPageNumbers = Array.from(visualSelected).sort((a, b) => a - b);
                            if (selectedPageNumbers.length === 0) {
                                alert('Selecione pelo menos uma página no grid visual.');
                                resetProgress();
                                return;
                            }
                        }

                        const rangeAction = root.querySelector(`input[name="wzw_split_60bf8ac6_f555_4304_b013_d8d3c1b3d544_range_action"]:checked`).value;

                        if (rangeAction === 'single' || currentMode === 'visual') {
                            // Mesclar em um único PDF
                            progressStatus.textContent = 'Gerando novo documento PDF unificado...';
                            progressPercent.textContent = '60%';
                            progressFill.style.width = '60%';

                            const newPdf = await PDFLib.PDFDocument.create();
                            const zeroIndexedPages = selectedPageNumbers.map(p => p - 1);
                            const copiedPages = await newPdf.copyPages(donorPdf, zeroIndexedPages);
                            copiedPages.forEach(p => newPdf.addPage(p));

                            const pdfBytes = await newPdf.save();
                            const blob = new Blob([pdfBytes], { type: 'application/pdf' });
                            const url = URL.createObjectURL(blob);
                            const a = document.createElement('a');
                            a.href = url;
                            a.download = `${baseFileName}.pdf`;
                            document.body.appendChild(a);
                            a.click();
                            document.body.removeChild(a);

                        } else {
                            // Salvar páginas em ZIP
                            if (typeof window.JSZip === 'undefined') {
                                throw new Error('Biblioteca JSZip não carregada.');
                            }
                            const zip = new JSZip();

                            for (let idx = 0; idx < selectedPageNumbers.length; idx++) {
                                const pageNum = selectedPageNumbers[idx];
                                const pct = Math.round(10 + ((idx + 1) / selectedPageNumbers.length) * 80);
                                progressPercent.textContent = pct + '%';
                                progressFill.style.width = pct + '%';
                                progressStatus.textContent = `Processando página ${pageNum}...`;

                                const singleDoc = await PDFLib.PDFDocument.create();
                                const [copiedPage] = await singleDoc.copyPages(donorPdf, [pageNum - 1]);
                                singleDoc.addPage(copiedPage);

                                const pdfBytes = await singleDoc.save();
                                zip.file(`pagina-${pageNum}-${baseFileName}.pdf`, pdfBytes);
                            }

                            progressStatus.textContent = 'Compactando pacote ZIP...';
                            const zipBlob = await zip.generateAsync({ type: 'blob' });
                            const zipUrl = URL.createObjectURL(zipBlob);
                            const a = document.createElement('a');
                            a.href = zipUrl;
                            a.download = `${baseFileName}-paginas-selecionadas.zip`;
                            document.body.appendChild(a);
                            a.click();
                            document.body.removeChild(a);
                        }
                    }

                    progressPercent.textContent = '100%';
                    progressFill.style.width = '100%';
                    progressStatus.textContent = 'Concluído com sucesso!';
                    setTimeout(() => {
                        resetProgress();
                    }, 2000);

                } catch (err) {
                    console.error('Erro na divisão:', err);
                    alert('Ocorreu um erro ao dividir o documento: ' + err.message);
                    resetProgress();
                }
            });

            function resetProgress() {
                btnExecute.disabled = false;
                progressBox.style.display = 'none';
                progressPercent.textContent = '0%';
                progressFill.style.width = '0%';
            }
        })();
        </script>
    </div>
    
<h2>3 Modos Inteligentes de Divisão de Arquivos PDF</h2>
<p>Diferentes necessidades exigem abordagens sob medida. Nossa ferramenta traz três opções flexíveis:</p>
<ul>
<li><strong>Divisão por Intervalos / Páginas:</strong> Especifique faixas personalizadas como <code>1-3, 5, 8-12</code> e escolha se deseja salvar o resultado em um único PDF ou em arquivos separados.</li>
<li><strong>Extrair Todas as Páginas em Pacote ZIP:</strong> Separa automaticamente todas as páginas do PDF em arquivos numerados individuais (<code>pagina-1.pdf</code>, <code>pagina-2.pdf</code>, etc.) e empacota tudo em um único download <code>.zip</code>.</li>
<li><strong>Seleção Visual no Grid:</strong> Clique nas miniaturas das páginas para marcar e desmarcar visualmente quais você deseja salvar.</li>
</ul>
<h2>Como Dividir e Extrair Páginas de um PDF</h2>
<ol>
<li>Carregue o arquivo PDF arrastando-o para a caixa de upload ou clicando no botão de seleção.</li>
<li>Escolha o modo de divisão desejado nas abas superiores.</li>
<li>Configure o intervalo de páginas ou clique nas páginas no painel visual.</li>
<li>Clique em <strong>&#8220;Dividir e Baixar Arquivos&#8221;</strong> para receber seu PDF extraído ou arquivo ZIP imediatamente.</li>
</ol>
<h2>Perguntas Frequentes sobre Dividir PDF (FAQ)</h2>
<h3>Como funciona o modo de seleção visual?</h3>
<p>O grid visual lista todas as páginas numeradas do seu documento. Cada clique seleciona ou desmarca a página, permitindo extrair exatamente as folhas de interesse sem precisar digitar números.</p>
<h3>O que fazer se eu precisar juntar páginas de PDFs diferentes?</h3>
<p>Você pode dividir os documentos necessários nesta página e em seguida utilizar o <a href="/juntar-pdf-online/">Juntar PDF Online</a> para compor o seu documento final consolidado.</p>
<h3>Onde explorar mais ferramentas gratuitas?</h3>
<p>Acesse o <a href="/hub-de-pdfs/">Hub de Ferramentas de PDF</a> para descobrir recursos para documentos, ou confira nosso catálogo de <a href="/ferramentas-de-imagens/">Ferramentas de Imagens</a>.</p>
<p><script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "FAQPage",
  "mainEntity": [
    {
      "@type": "Question",
      "name": "Como extrair páginas não sequenciais como 1, 4 e 7 a 10?",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "Basta digitar as páginas separadas por vírgula e usar hífen para intervalos no campo de texto (ex: 1, 4, 7-10), ou clicar diretamente nas miniaturas no Modo Visual."
      }
    },
    {
      "@type": "Question",
      "name": "Posso baixar todas as páginas desmembradas de uma vez?",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "Sim. Com a opção 'Extrair Todas as Páginas (ZIP)', a ferramenta gera automaticamente um pacote compactado .zip contendo cada página individualmente como um novo arquivo PDF."
      }
    },
    {
      "@type": "Question",
      "name": "Existe risco de perda de formatação ou texto cortado?",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "Nenhum. A extração é realizada com precisão binária direta nas árvores de objetos do PDF, preservando fontes embutidas, imagens e camadas intactas."
      }
    }
  ]
}
</script></p>
<p>O post <a href="https://webzoneware.com/web-ferramentas/pdf/dividir-pdf-online/">Dividir PDF Online Grátis — Separar Páginas e ZIP | Web-ZoneWare</a> apareceu primeiro em <a href="https://webzoneware.com">Web-Zoneware</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://webzoneware.com/web-ferramentas/pdf/dividir-pdf-online/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
