<?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 girar pdf online gratis - Web-Zoneware</title>
	<atom:link href="https://webzoneware.com/tag/girar-pdf-online-gratis/feed/" rel="self" type="application/rss+xml" />
	<link>https://webzoneware.com/tag/girar-pdf-online-gratis/</link>
	<description>Mais do que apenas uma academia web.</description>
	<lastBuildDate>Thu, 22 Oct 2026 17:25:11 +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 girar pdf online gratis - Web-Zoneware</title>
	<link>https://webzoneware.com/tag/girar-pdf-online-gratis/</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>PDF Online: Girar Páginas 90°, 180° e 270° &#124; Web-ZoneWare</title>
		<link>https://webzoneware.com/web-ferramentas/pdf/rodar-pdf/</link>
					<comments>https://webzoneware.com/web-ferramentas/pdf/rodar-pdf/#respond</comments>
		
		<dc:creator><![CDATA[Web-Zoneware]]></dc:creator>
		<pubDate>Sat, 17 Oct 2026 01:26:52 +0000</pubDate>
				<category><![CDATA[PDF & Documentos]]></category>
		<category><![CDATA[corrigir orientacao pdf]]></category>
		<category><![CDATA[desvirar pdf de cabeca para baixo]]></category>
		<category><![CDATA[girar paginas pdf]]></category>
		<category><![CDATA[girar pdf online gratis]]></category>
		<category><![CDATA[rodar pdf]]></category>
		<category><![CDATA[rodar pdf 90 graus]]></category>
		<guid isPermaLink="false">https://webzoneware.com/?p=28993</guid>

					<description><![CDATA[<p>Como Corrigir a Orientação e Girar Páginas de PDF Documentos escaneados via alimentador automático (ADF) ou fotografados por celulares com frequência acabam virados na horizontal ou de cabeça para baixo. O utilitário Rodar PDF do Web-ZoneWare permite desvirar e rotacionar cada página individualmente ou aplicar giros globais de 90° à direita, 90° à esquerda e [&#8230;]</p>
<p>O post <a href="https://webzoneware.com/web-ferramentas/pdf/rodar-pdf/">PDF Online: Girar Páginas 90°, 180° e 270° | Web-ZoneWare</a> apareceu primeiro em <a href="https://webzoneware.com">Web-Zoneware</a>.</p>
]]></description>
										<content:encoded><![CDATA[<h2>Como Corrigir a Orientação e Girar Páginas de PDF</h2>
<p>Documentos escaneados via alimentador automático (ADF) ou fotografados por celulares com frequência acabam virados na horizontal ou de cabeça para baixo. O utilitário <strong>Rodar PDF do Web-ZoneWare</strong> permite desvirar e rotacionar cada página individualmente ou aplicar giros globais de 90° à direita, 90° à esquerda e 180° em todo o documento com um único clique.</p>
    <div id="wzw_rotpdf_7d6da0a1_10e3_4dba_9386_d324a791ccf8" class="wzw-tool-container wzw-pdf-suite-wrapper">
        <style>
            #wzw_rotpdf_7d6da0a1_10e3_4dba_9386_d324a791ccf8 {
                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_rotpdf_7d6da0a1_10e3_4dba_9386_d324a791ccf8 * {
                box-sizing: border-box;
            }
            #wzw_rotpdf_7d6da0a1_10e3_4dba_9386_d324a791ccf8 .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_rotpdf_7d6da0a1_10e3_4dba_9386_d324a791ccf8 .wzw-tool-title {
                margin: 0;
                font-size: 1.35rem;
                font-weight: 800;
                color: #38bdf8;
                display: flex;
                align-items: center;
                gap: 10px;
            }
            #wzw_rotpdf_7d6da0a1_10e3_4dba_9386_d324a791ccf8 .wzw-badge-client {
                background: rgba(56, 189, 248, 0.15);
                color: #38bdf8;
                border: 1px solid rgba(56, 189, 248, 0.35);
                padding: 4px 10px;
                border-radius: 20px;
                font-size: 11px;
                font-weight: 700;
                text-transform: uppercase;
                letter-spacing: 0.5px;
            }
            #wzw_rotpdf_7d6da0a1_10e3_4dba_9386_d324a791ccf8 .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_rotpdf_7d6da0a1_10e3_4dba_9386_d324a791ccf8 .wzw-dropzone:hover,
            #wzw_rotpdf_7d6da0a1_10e3_4dba_9386_d324a791ccf8 .wzw-dropzone.drag-over {
                background: rgba(2, 132, 199, 0.12);
                border-color: #38bdf8;
                transform: translateY(-2px);
            }
            #wzw_rotpdf_7d6da0a1_10e3_4dba_9386_d324a791ccf8 .wzw-drop-icon {
                font-size: 48px;
                margin-bottom: 12px;
                display: block;
            }
            #wzw_rotpdf_7d6da0a1_10e3_4dba_9386_d324a791ccf8 .wzw-drop-title {
                font-size: 1.15rem;
                font-weight: 700;
                color: #f1f5f9;
                margin: 0 0 6px 0;
            }
            #wzw_rotpdf_7d6da0a1_10e3_4dba_9386_d324a791ccf8 .wzw-drop-sub {
                font-size: 13px;
                color: #94a3b8;
                margin: 0;
            }
            #wzw_rotpdf_7d6da0a1_10e3_4dba_9386_d324a791ccf8 .wzw-workspace {
                display: none;
                background: rgba(15, 23, 42, 0.6);
                border: 1px solid #334155;
                border-radius: 14px;
                padding: 20px;
            }
            #wzw_rotpdf_7d6da0a1_10e3_4dba_9386_d324a791ccf8 .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_rotpdf_7d6da0a1_10e3_4dba_9386_d324a791ccf8 .wzw-file-meta {
                display: flex;
                align-items: center;
                gap: 12px;
            }
            #wzw_rotpdf_7d6da0a1_10e3_4dba_9386_d324a791ccf8 .wzw-file-icon {
                font-size: 28px;
            }
            #wzw_rotpdf_7d6da0a1_10e3_4dba_9386_d324a791ccf8 .wzw-file-details strong {
                display: block;
                font-size: 14px;
                color: #f8fafc;
            }
            #wzw_rotpdf_7d6da0a1_10e3_4dba_9386_d324a791ccf8 .wzw-file-details span {
                font-size: 12px;
                color: #94a3b8;
            }
            #wzw_rotpdf_7d6da0a1_10e3_4dba_9386_d324a791ccf8 .wzw-counter-badges {
                display: flex;
                gap: 8px;
                flex-wrap: wrap;
            }
            #wzw_rotpdf_7d6da0a1_10e3_4dba_9386_d324a791ccf8 .wzw-badge-stat {
                padding: 5px 10px;
                border-radius: 6px;
                font-size: 12px;
                font-weight: 700;
            }
            #wzw_rotpdf_7d6da0a1_10e3_4dba_9386_d324a791ccf8 .wzw-badge-total { background: #334155; color: #cbd5e1; }
            #wzw_rotpdf_7d6da0a1_10e3_4dba_9386_d324a791ccf8 .wzw-badge-rotated { background: rgba(56, 189, 248, 0.2); color: #38bdf8; border: 1px solid rgba(56, 189, 248, 0.4); }

            #wzw_rotpdf_7d6da0a1_10e3_4dba_9386_d324a791ccf8 .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_rotpdf_7d6da0a1_10e3_4dba_9386_d324a791ccf8 .wzw-tool-actions {
                display: flex;
                gap: 8px;
                flex-wrap: wrap;
            }
            #wzw_rotpdf_7d6da0a1_10e3_4dba_9386_d324a791ccf8 .wzw-btn-sm {
                background: #334155;
                color: #f8fafc;
                border: 1px solid #475569;
                padding: 7px 12px;
                border-radius: 6px;
                font-size: 12px;
                font-weight: 600;
                cursor: pointer;
                transition: all 0.2s ease;
                display: flex;
                align-items: center;
                gap: 6px;
            }
            #wzw_rotpdf_7d6da0a1_10e3_4dba_9386_d324a791ccf8 .wzw-btn-sm:hover {
                background: #475569;
                color: #fff;
            }
            #wzw_rotpdf_7d6da0a1_10e3_4dba_9386_d324a791ccf8 .wzw-pages-grid {
                display: grid;
                grid-template-columns: repeat(auto-fill, minmax(160px, 1fr));
                gap: 16px;
                max-height: 480px;
                overflow-y: auto;
                background: #020617;
                border: 1px solid #334155;
                border-radius: 10px;
                padding: 16px;
                margin-bottom: 20px;
            }
            #wzw_rotpdf_7d6da0a1_10e3_4dba_9386_d324a791ccf8 .wzw-page-card {
                background: #1e293b;
                border: 2px solid #334155;
                border-radius: 8px;
                padding: 10px;
                text-align: center;
                transition: all 0.2s ease;
                user-select: none;
                position: relative;
            }
            #wzw_rotpdf_7d6da0a1_10e3_4dba_9386_d324a791ccf8 .wzw-page-card:hover {
                border-color: #38bdf8;
                transform: translateY(-2px);
            }
            #wzw_rotpdf_7d6da0a1_10e3_4dba_9386_d324a791ccf8 .wzw-page-card.is-rotated {
                border-color: #0284c7;
                background: rgba(2, 132, 199, 0.1);
            }
            #wzw_rotpdf_7d6da0a1_10e3_4dba_9386_d324a791ccf8 .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: 10px;
            }
            #wzw_rotpdf_7d6da0a1_10e3_4dba_9386_d324a791ccf8 .wzw-thumb-canvas {
                max-width: 100%;
                max-height: 100%;
                display: block;
                object-fit: contain;
                transition: transform 0.25s cubic-bezier(0.4, 0, 0.2, 1);
            }
            #wzw_rotpdf_7d6da0a1_10e3_4dba_9386_d324a791ccf8 .wzw-card-meta {
                display: flex;
                align-items: center;
                justify-content: space-between;
                margin-bottom: 8px;
            }
            #wzw_rotpdf_7d6da0a1_10e3_4dba_9386_d324a791ccf8 .wzw-page-num-badge {
                display: inline-block;
                background: #0f172a;
                color: #e2e8f0;
                padding: 2px 7px;
                border-radius: 4px;
                font-size: 11px;
                font-weight: 700;
                border: 1px solid #334155;
            }
            #wzw_rotpdf_7d6da0a1_10e3_4dba_9386_d324a791ccf8 .wzw-angle-badge {
                font-size: 11px;
                font-weight: 700;
                color: #38bdf8;
                background: rgba(56, 189, 248, 0.15);
                padding: 2px 6px;
                border-radius: 4px;
            }
            #wzw_rotpdf_7d6da0a1_10e3_4dba_9386_d324a791ccf8 .wzw-card-actions {
                display: flex;
                justify-content: center;
                gap: 6px;
            }
            #wzw_rotpdf_7d6da0a1_10e3_4dba_9386_d324a791ccf8 .wzw-btn-rot {
                background: #334155;
                color: #f8fafc;
                border: 1px solid #475569;
                border-radius: 6px;
                padding: 4px 8px;
                font-size: 13px;
                cursor: pointer;
                transition: all 0.2s ease;
                display: flex;
                align-items: center;
                justify-content: center;
                width: 32px;
                height: 28px;
            }
            #wzw_rotpdf_7d6da0a1_10e3_4dba_9386_d324a791ccf8 .wzw-btn-rot:hover {
                background: #0284c7;
                color: #fff;
                border-color: #38bdf8;
            }

            #wzw_rotpdf_7d6da0a1_10e3_4dba_9386_d324a791ccf8 .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_rotpdf_7d6da0a1_10e3_4dba_9386_d324a791ccf8 .wzw-output-group {
                display: flex;
                align-items: center;
                gap: 8px;
            }
            #wzw_rotpdf_7d6da0a1_10e3_4dba_9386_d324a791ccf8 .wzw-output-group label {
                font-size: 13px;
                color: #94a3b8;
                font-weight: 600;
            }
            #wzw_rotpdf_7d6da0a1_10e3_4dba_9386_d324a791ccf8 .wzw-output-name {
                background: #1e293b;
                border: 1px solid #475569;
                color: #f8fafc;
                padding: 8px 12px;
                border-radius: 6px;
                font-size: 13px;
            }
            #wzw_rotpdf_7d6da0a1_10e3_4dba_9386_d324a791ccf8 .wzw-btn-save {
                background: linear-gradient(135deg, #0284c7 0%, #0369a1 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(2, 132, 199, 0.35);
            }
            #wzw_rotpdf_7d6da0a1_10e3_4dba_9386_d324a791ccf8 .wzw-btn-save:hover:not(:disabled) {
                background: linear-gradient(135deg, #38bdf8 0%, #0284c7 100%);
                transform: translateY(-2px);
                box-shadow: 0 6px 20px rgba(56, 189, 248, 0.5);
            }
            #wzw_rotpdf_7d6da0a1_10e3_4dba_9386_d324a791ccf8 .wzw-btn-save:disabled {
                opacity: 0.5;
                cursor: not-allowed;
            }
            #wzw_rotpdf_7d6da0a1_10e3_4dba_9386_d324a791ccf8 .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_rotpdf_7d6da0a1_10e3_4dba_9386_d324a791ccf8 .wzw-btn-reset:hover {
                background: #334155;
                color: #fff;
            }
            #wzw_rotpdf_7d6da0a1_10e3_4dba_9386_d324a791ccf8 .wzw-progress-box {
                display: none;
                margin-top: 16px;
                background: #0f172a;
                border-radius: 8px;
                padding: 14px;
                border: 1px solid #334155;
            }
            #wzw_rotpdf_7d6da0a1_10e3_4dba_9386_d324a791ccf8 .wzw-progress-bar {
                height: 8px;
                background: #334155;
                border-radius: 4px;
                overflow: hidden;
                margin-bottom: 8px;
            }
            #wzw_rotpdf_7d6da0a1_10e3_4dba_9386_d324a791ccf8 .wzw-progress-fill {
                height: 100%;
                width: 0%;
                background: linear-gradient(90deg, #0284c7, #38bdf8);
                transition: width 0.2s ease;
            }
            #wzw_rotpdf_7d6da0a1_10e3_4dba_9386_d324a791ccf8 .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> Rodar Páginas do PDF Online
            </h2>
            <div class="wzw-badge-client">
                🔒 100% Client-Side • Sem Perda de Qualidade
            </div>
        </div>

        <!-- DROPZONE -->
        <div class="wzw-dropzone" id="wzw_rotpdf_7d6da0a1_10e3_4dba_9386_d324a791ccf8_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">Gire páginas individuais ou todo o documento em 90°, 180° ou 270°. Mantém textos e imagens intactos.</p>
            <input type="file" id="wzw_rotpdf_7d6da0a1_10e3_4dba_9386_d324a791ccf8_file_input" accept="application/pdf" style="display: none;" />
        </div>

        <!-- WORKSPACE -->
        <div class="wzw-workspace" id="wzw_rotpdf_7d6da0a1_10e3_4dba_9386_d324a791ccf8_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_rotpdf_7d6da0a1_10e3_4dba_9386_d324a791ccf8_filename">documento.pdf</strong>
                        <span id="wzw_rotpdf_7d6da0a1_10e3_4dba_9386_d324a791ccf8_fileinfo">0 KB • 0 páginas</span>
                    </div>
                </div>
                <div class="wzw-counter-badges">
                    <span class="wzw-badge-stat wzw-badge-total" id="wzw_rotpdf_7d6da0a1_10e3_4dba_9386_d324a791ccf8_stat_total">Total: 0 páginas</span>
                    <span class="wzw-badge-stat wzw-badge-rotated" id="wzw_rotpdf_7d6da0a1_10e3_4dba_9386_d324a791ccf8_stat_rotated">Giradas: 0</span>
                </div>
            </div>

            <!-- TOOLBAR GLOBAL ROTATE -->
            <div class="wzw-toolbar">
                <div class="wzw-tool-actions">
                    <button type="button" class="wzw-btn-sm" id="wzw_rotpdf_7d6da0a1_10e3_4dba_9386_d324a791ccf8_btn_rot_all_right">
                        <span>↻</span> Girar Todas 90° à Direita
                    </button>
                    <button type="button" class="wzw-btn-sm" id="wzw_rotpdf_7d6da0a1_10e3_4dba_9386_d324a791ccf8_btn_rot_all_left">
                        <span>↺</span> Girar Todas 90° à Esquerda
                    </button>
                    <button type="button" class="wzw-btn-sm" id="wzw_rotpdf_7d6da0a1_10e3_4dba_9386_d324a791ccf8_btn_rot_all_180">
                        <span>🔄</span> Girar Todas 180°
                    </button>
                    <button type="button" class="wzw-btn-sm" id="wzw_rotpdf_7d6da0a1_10e3_4dba_9386_d324a791ccf8_btn_reset_angles">
                        <span>⏪</span> Restaurar Original
                    </button>
                </div>
            </div>

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

            <!-- BOTTOM BAR -->
            <div class="wzw-bottom-bar">
                <div class="wzw-output-group">
                    <label for="wzw_rotpdf_7d6da0a1_10e3_4dba_9386_d324a791ccf8_output_name">Nome de saída:</label>
                    <input type="text" id="wzw_rotpdf_7d6da0a1_10e3_4dba_9386_d324a791ccf8_output_name" class="wzw-output-name" value="documento-rodado" />
                </div>
                <div style="display:flex; gap:10px;">
                    <button type="button" class="wzw-btn-reset" id="wzw_rotpdf_7d6da0a1_10e3_4dba_9386_d324a791ccf8_btn_reset">Trocar PDF</button>
                    <button type="button" class="wzw-btn-save" id="wzw_rotpdf_7d6da0a1_10e3_4dba_9386_d324a791ccf8_btn_save">📥 Salvar e Baixar PDF Girado</button>
                </div>
            </div>

            <!-- PROGRESS BOX -->
            <div class="wzw-progress-box" id="wzw_rotpdf_7d6da0a1_10e3_4dba_9386_d324a791ccf8_progress">
                <div class="wzw-progress-bar">
                    <div class="wzw-progress-fill" id="wzw_rotpdf_7d6da0a1_10e3_4dba_9386_d324a791ccf8_progress_fill"></div>
                </div>
                <div class="wzw-progress-status">
                    <span id="wzw_rotpdf_7d6da0a1_10e3_4dba_9386_d324a791ccf8_status_label">Processando...</span>
                    <span id="wzw_rotpdf_7d6da0a1_10e3_4dba_9386_d324a791ccf8_progress_percent">0%</span>
                </div>
            </div>
        </div>

        <script>
        (function() {
            var dropzone = document.getElementById('wzw_rotpdf_7d6da0a1_10e3_4dba_9386_d324a791ccf8_dropzone');
            var fileInput = document.getElementById('wzw_rotpdf_7d6da0a1_10e3_4dba_9386_d324a791ccf8_file_input');
            var workspace = document.getElementById('wzw_rotpdf_7d6da0a1_10e3_4dba_9386_d324a791ccf8_workspace');
            var grid = document.getElementById('wzw_rotpdf_7d6da0a1_10e3_4dba_9386_d324a791ccf8_grid');
            var filenameElem = document.getElementById('wzw_rotpdf_7d6da0a1_10e3_4dba_9386_d324a791ccf8_filename');
            var fileinfoElem = document.getElementById('wzw_rotpdf_7d6da0a1_10e3_4dba_9386_d324a791ccf8_fileinfo');
            var outputNameInput = document.getElementById('wzw_rotpdf_7d6da0a1_10e3_4dba_9386_d324a791ccf8_output_name');
            var btnSave = document.getElementById('wzw_rotpdf_7d6da0a1_10e3_4dba_9386_d324a791ccf8_btn_save');
            var btnReset = document.getElementById('wzw_rotpdf_7d6da0a1_10e3_4dba_9386_d324a791ccf8_btn_reset');
            var progressBox = document.getElementById('wzw_rotpdf_7d6da0a1_10e3_4dba_9386_d324a791ccf8_progress');
            var progressFill = document.getElementById('wzw_rotpdf_7d6da0a1_10e3_4dba_9386_d324a791ccf8_progress_fill');
            var statusLabel = document.getElementById('wzw_rotpdf_7d6da0a1_10e3_4dba_9386_d324a791ccf8_status_label');
            var progressPercent = document.getElementById('wzw_rotpdf_7d6da0a1_10e3_4dba_9386_d324a791ccf8_progress_percent');

            var statTotal = document.getElementById('wzw_rotpdf_7d6da0a1_10e3_4dba_9386_d324a791ccf8_stat_total');
            var statRotated = document.getElementById('wzw_rotpdf_7d6da0a1_10e3_4dba_9386_d324a791ccf8_stat_rotated');

            var btnRotAllRight = document.getElementById('wzw_rotpdf_7d6da0a1_10e3_4dba_9386_d324a791ccf8_btn_rot_all_right');
            var btnRotAllLeft = document.getElementById('wzw_rotpdf_7d6da0a1_10e3_4dba_9386_d324a791ccf8_btn_rot_all_left');
            var btnRotAll180 = document.getElementById('wzw_rotpdf_7d6da0a1_10e3_4dba_9386_d324a791ccf8_btn_rot_all_180');
            var btnResetAngles = document.getElementById('wzw_rotpdf_7d6da0a1_10e3_4dba_9386_d324a791ccf8_btn_reset_angles');

            var currentFile = null;
            var currentFileName = '';
            var totalPagesCount = 0;
            // Array com a rotação adicional em graus para cada página: [0, 0, 90, ...]
            var pageRotations = [];

            // 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;
                pageRotations = [];
                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 updateCardView(idx) {
                var card = grid.querySelector('.wzw-page-card[data-page-index="' + idx + '"]');
                if (!card) return;

                var deg = pageRotations[idx] || 0;
                var canvas = card.querySelector('.wzw-thumb-canvas');
                var angleBadge = card.querySelector('.wzw-angle-badge');

                if (canvas) {
                    canvas.style.transform = 'rotate(' + deg + 'deg)';
                }
                if (angleBadge) {
                    angleBadge.textContent = deg + '°';
                }

                if (deg !== 0) {
                    card.classList.add('is-rotated');
                } else {
                    card.classList.remove('is-rotated');
                }
            }

            function updateStats() {
                var rotatedCount = 0;
                for (var i = 0; i < pageRotations.length; i++) {
                    if (pageRotations[i] !== 0) {
                        rotatedCount++;
                    }
                }
                statTotal.textContent = 'Total: ' + totalPagesCount + ' páginas';
                statRotated.textContent = 'Giradas: ' + rotatedCount;
            }

            function rotatePage(idx, delta) {
                var cur = pageRotations[idx] || 0;
                var next = (cur + delta) % 360;
                if (next < 0) next += 360;
                pageRotations[idx] = next;
                updateCardView(idx);
                updateStats();
            }

            function rotateAll(delta) {
                for (var i = 0; i < totalPagesCount; i++) {
                    var cur = pageRotations[i] || 0;
                    var next = (cur + delta) % 360;
                    if (next < 0) next += 360;
                    pageRotations[i] = next;
                    updateCardView(i);
                }
                updateStats();
            }

            btnRotAllRight.addEventListener('click', function() { rotateAll(90); });
            btnRotAllLeft.addEventListener('click', function() { rotateAll(-90); });
            btnRotAll180.addEventListener('click', function() { rotateAll(180); });
            btnResetAngles.addEventListener('click', function() {
                for (var i = 0; i < totalPagesCount; i++) {
                    pageRotations[i] = 0;
                    updateCardView(i);
                }
                updateStats();
            });

            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 + '-rodado';

                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 = '';
                    pageRotations = [];

                    for (var pageNum = 1; pageNum <= totalPagesCount; pageNum++) {
                        pageRotations.push(0);

                        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 cardMeta = document.createElement('div');
                        cardMeta.className = 'wzw-card-meta';

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

                        var angleBadge = document.createElement('span');
                        angleBadge.className = 'wzw-angle-badge';
                        angleBadge.textContent = '0°';

                        cardMeta.appendChild(badge);
                        cardMeta.appendChild(angleBadge);

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

                        var cardActions = document.createElement('div');
                        cardActions.className = 'wzw-card-actions';

                        var btnLeft = document.createElement('button');
                        btnLeft.type = 'button';
                        btnLeft.className = 'wzw-btn-rot';
                        btnLeft.title = 'Girar 90° à Esquerda';
                        btnLeft.textContent = '↺';
                        btnLeft.setAttribute('data-target-idx', (pageNum - 1).toString());
                        btnLeft.addEventListener('click', function(e) {
                            e.stopPropagation();
                            var idx = parseInt(this.getAttribute('data-target-idx'), 10);
                            rotatePage(idx, -90);
                        });

                        var btnRight = document.createElement('button');
                        btnRight.type = 'button';
                        btnRight.className = 'wzw-btn-rot';
                        btnRight.title = 'Girar 90° à Direita';
                        btnRight.textContent = '↻';
                        btnRight.setAttribute('data-target-idx', (pageNum - 1).toString());
                        btnRight.addEventListener('click', function(e) {
                            e.stopPropagation();
                            var idx = parseInt(this.getAttribute('data-target-idx'), 10);
                            rotatePage(idx, 90);
                        });

                        cardActions.appendChild(btnLeft);
                        cardActions.appendChild(btnRight);

                        card.appendChild(cardMeta);
                        card.appendChild(thumbWrapper);
                        card.appendChild(cardActions);

                        grid.appendChild(card);
                    }

                    updateStats();
                    progressFill.style.width = '100%';
                    progressPercent.textContent = '100%';
                    statusLabel.textContent = '✓ Miniaturas carregadas! Utilize os botões para girar as páginas.';

                    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();
                }
            }

            // Compilação do PDF com os ângulos aplicados (sem re-rasterizar)
            btnSave.addEventListener('click', async function() {
                if (!currentFile) {
                    alert('Carregue um arquivo PDF antes de salvar.');
                    return;
                }

                btnSave.disabled = true;
                btnSave.textContent = '⏳ Salvando alterações...';
                progressBox.style.display = 'block';
                progressFill.style.width = '30%';
                statusLabel.textContent = 'Ajustando matriz de rotação vetorial das páginas...';
                progressPercent.textContent = '30%';

                try {
                    var { PDFDocument, degrees } = window.PDFLib;
                    var freshBuffer = await currentFile.arrayBuffer();
                    var pdfDoc = await PDFDocument.load(freshBuffer);
                    var pages = pdfDoc.getPages();

                    for (var i = 0; i < pages.length; i++) {
                        var delta = pageRotations[i] || 0;
                        if (delta !== 0) {
                            var currentAngle = pages[i].getRotation().angle;
                            var newAngle = (currentAngle + delta) % 360;
                            if (newAngle < 0) newAngle += 360;
                            pages[i].setRotation(degrees(newAngle));
                        }
                    }

                    progressFill.style.width = '80%';
                    progressPercent.textContent = '80%';
                    statusLabel.textContent = 'Gerando arquivo PDF final...';

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

                    var a = document.createElement('a');
                    a.href = url;
                    a.download = (outputNameInput.value.trim() || currentFileName + '-rodado') + '.pdf';
                    document.body.appendChild(a);
                    a.click();
                    document.body.removeChild(a);
                    URL.revokeObjectURL(url);

                    progressFill.style.width = '100%';
                    progressPercent.textContent = '100%';
                    statusLabel.textContent = '✓ PDF girado com sucesso!';

                    setTimeout(function() {
                        progressBox.style.display = 'none';
                        btnSave.disabled = false;
                        btnSave.textContent = '📥 Salvar e Baixar PDF Girado';
                    }, 2000);

                } catch (err) {
                    console.error('Erro ao salvar PDF girado:', err);
                    alert('Erro ao compilar PDF: ' + err.message);
                    btnSave.disabled = false;
                    btnSave.textContent = '📥 Salvar e Baixar PDF Girado';
                    progressBox.style.display = 'none';
                }
            });
        })();
        </script>
    </div>
    
<h3>Modificação Nativa sem Re-compressão (Lossless Rotation)</h3>
<p>Diferente de soluções convencionais que transformam o PDF em imagens para depois recompilá-lo (gerando perda de qualidade e aumento de peso), nosso algoritmo ajusta diretamente a propriedade <code>/Rotate</code> da árvore de objetos do documento. Isso significa que a rotação é instantânea e o arquivo resultante mantém 100% da clareza original.</p>
<p>Após corrigir o ângulo das folhas, você pode <a href="/web-ferramentas/organizar-pdf/">reordenar as páginas</a> ou aplicar uma senha de proteção através da ferramenta para <a href="/web-ferramentas/proteger-pdf/">proteger PDF com senha</a>.</p>
<p><script>
{
  "@context": "https://schema.org",
  "@type": "FAQPage",
  "mainEntity": [
    {
      "@type": "Question",
      "name": "Posso girar apenas uma página que foi digitalizada errada?",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "Sim. Cada miniatura possui botões individuais de rotação para você girar exatamente as páginas que estão na orientação incorreta."
      }
    },
    {
      "@type": "Question",
      "name": "A rotação altera o tamanho das fontes ou borra as imagens?",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "Não. O ajuste é puramente na matriz de visualização da página (lossless), mantendo todos os vetores, textos e imagens com a nitidez nativa."
      }
    }
  ]
}
</script></p>
<p>O post <a href="https://webzoneware.com/web-ferramentas/pdf/rodar-pdf/">PDF Online: Girar Páginas 90°, 180° e 270° | 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/rodar-pdf/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
