<?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 juntar fotos em pdf online - Web-Zoneware</title>
	<atom:link href="https://webzoneware.com/tag/juntar-fotos-em-pdf-online/feed/" rel="self" type="application/rss+xml" />
	<link>https://webzoneware.com/tag/juntar-fotos-em-pdf-online/</link>
	<description>Mais do que apenas uma academia web.</description>
	<lastBuildDate>Thu, 22 Oct 2026 17:24:59 +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 juntar fotos em pdf online - Web-Zoneware</title>
	<link>https://webzoneware.com/tag/juntar-fotos-em-pdf-online/</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>JPG para PDF: Converter Fotos e Imagens em PDF &#124; Web-ZoneWare</title>
		<link>https://webzoneware.com/web-ferramentas/pdf/jpg-para-pdf/</link>
					<comments>https://webzoneware.com/web-ferramentas/pdf/jpg-para-pdf/#respond</comments>
		
		<dc:creator><![CDATA[Web-Zoneware]]></dc:creator>
		<pubDate>Sat, 17 Oct 2026 01:30:35 +0000</pubDate>
				<category><![CDATA[PDF & Documentos]]></category>
		<category><![CDATA[converter foto em pdf]]></category>
		<category><![CDATA[fotos para pdf a4]]></category>
		<category><![CDATA[jpg para pdf]]></category>
		<category><![CDATA[juntar fotos em pdf online]]></category>
		<category><![CDATA[png para pdf]]></category>
		<category><![CDATA[transformar imagem em pdf]]></category>
		<guid isPermaLink="false">https://webzoneware.com/?p=28995</guid>

					<description><![CDATA[<p>Transforme Imagens e Fotos em Documentos PDF Profissionais Combinar recibos, fotos de documentos, gráficos ou ilustrações em um arquivo PDF estruturado é fundamental para envios corporativos, processos seletivos e registros contábeis. Com o Conversor de JPG para PDF do Web-ZoneWare, você adiciona múltiplas fotos nos formatos JPG, JPEG, PNG e WebP, organiza a sequência e [&#8230;]</p>
<p>O post <a href="https://webzoneware.com/web-ferramentas/pdf/jpg-para-pdf/">JPG para PDF: Converter Fotos e Imagens em PDF | Web-ZoneWare</a> apareceu primeiro em <a href="https://webzoneware.com">Web-Zoneware</a>.</p>
]]></description>
										<content:encoded><![CDATA[<h2>Transforme Imagens e Fotos em Documentos PDF Profissionais</h2>
<p>Combinar recibos, fotos de documentos, gráficos ou ilustrações em um arquivo PDF estruturado é fundamental para envios corporativos, processos seletivos e registros contábeis. Com o <strong>Conversor de JPG para PDF do Web-ZoneWare</strong>, você adiciona múltiplas fotos nos formatos <strong>JPG, JPEG, PNG e WebP</strong>, organiza a sequência e cria um PDF padronizado com total flexibilidade.</p>
    <div id="wzw_jpg2pdf_cfb7e4fd_7a46_4dfc_ac6d_3fd7051e73ce" class="wzw-tool-container wzw-pdf-suite-wrapper">
        <style>
            #wzw_jpg2pdf_cfb7e4fd_7a46_4dfc_ac6d_3fd7051e73ce {
                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_jpg2pdf_cfb7e4fd_7a46_4dfc_ac6d_3fd7051e73ce * {
                box-sizing: border-box;
            }
            #wzw_jpg2pdf_cfb7e4fd_7a46_4dfc_ac6d_3fd7051e73ce .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_jpg2pdf_cfb7e4fd_7a46_4dfc_ac6d_3fd7051e73ce .wzw-tool-title {
                margin: 0;
                font-size: 1.35rem;
                font-weight: 800;
                color: #f59e0b;
                display: flex;
                align-items: center;
                gap: 10px;
            }
            #wzw_jpg2pdf_cfb7e4fd_7a46_4dfc_ac6d_3fd7051e73ce .wzw-badge-client {
                background: rgba(245, 158, 11, 0.15);
                color: #fbbf24;
                border: 1px solid rgba(245, 158, 11, 0.35);
                padding: 4px 10px;
                border-radius: 20px;
                font-size: 11px;
                font-weight: 700;
                text-transform: uppercase;
                letter-spacing: 0.5px;
            }
            #wzw_jpg2pdf_cfb7e4fd_7a46_4dfc_ac6d_3fd7051e73ce .wzw-dropzone {
                border: 2px dashed #f59e0b;
                background: rgba(245, 158, 11, 0.05);
                border-radius: 14px;
                padding: 44px 20px;
                text-align: center;
                cursor: pointer;
                transition: all 0.25s ease;
                margin-bottom: 20px;
            }
            #wzw_jpg2pdf_cfb7e4fd_7a46_4dfc_ac6d_3fd7051e73ce .wzw-dropzone:hover,
            #wzw_jpg2pdf_cfb7e4fd_7a46_4dfc_ac6d_3fd7051e73ce .wzw-dropzone.drag-over {
                background: rgba(245, 158, 11, 0.12);
                border-color: #fcd34d;
                transform: translateY(-2px);
            }
            #wzw_jpg2pdf_cfb7e4fd_7a46_4dfc_ac6d_3fd7051e73ce .wzw-drop-icon {
                font-size: 48px;
                margin-bottom: 12px;
                display: block;
            }
            #wzw_jpg2pdf_cfb7e4fd_7a46_4dfc_ac6d_3fd7051e73ce .wzw-drop-title {
                font-size: 1.15rem;
                font-weight: 700;
                color: #f1f5f9;
                margin: 0 0 6px 0;
            }
            #wzw_jpg2pdf_cfb7e4fd_7a46_4dfc_ac6d_3fd7051e73ce .wzw-drop-sub {
                font-size: 13px;
                color: #94a3b8;
                margin: 0;
            }
            #wzw_jpg2pdf_cfb7e4fd_7a46_4dfc_ac6d_3fd7051e73ce .wzw-workspace {
                display: none;
                background: rgba(15, 23, 42, 0.6);
                border: 1px solid #334155;
                border-radius: 14px;
                padding: 20px;
            }

            /* CONFIG PANEL */
            #wzw_jpg2pdf_cfb7e4fd_7a46_4dfc_ac6d_3fd7051e73ce .wzw-config-grid {
                display: grid;
                grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
                gap: 14px;
                background: #1e293b;
                border: 1px solid #334155;
                border-radius: 10px;
                padding: 16px;
                margin-bottom: 20px;
            }
            #wzw_jpg2pdf_cfb7e4fd_7a46_4dfc_ac6d_3fd7051e73ce .wzw-config-item label {
                display: block;
                font-size: 12px;
                font-weight: 700;
                color: #cbd5e1;
                margin-bottom: 6px;
                text-transform: uppercase;
                letter-spacing: 0.5px;
            }
            #wzw_jpg2pdf_cfb7e4fd_7a46_4dfc_ac6d_3fd7051e73ce .wzw-select {
                width: 100%;
                background: #0f172a;
                border: 1px solid #475569;
                color: #f8fafc;
                padding: 8px 10px;
                border-radius: 6px;
                font-size: 13px;
                outline: none;
            }
            #wzw_jpg2pdf_cfb7e4fd_7a46_4dfc_ac6d_3fd7051e73ce .wzw-select:focus {
                border-color: #f59e0b;
            }

            /* TOOLBAR */
            #wzw_jpg2pdf_cfb7e4fd_7a46_4dfc_ac6d_3fd7051e73ce .wzw-toolbar {
                display: flex;
                align-items: center;
                justify-content: space-between;
                flex-wrap: wrap;
                gap: 10px;
                margin-bottom: 14px;
            }
            #wzw_jpg2pdf_cfb7e4fd_7a46_4dfc_ac6d_3fd7051e73ce .wzw-toolbar-title {
                font-size: 14px;
                font-weight: 700;
                color: #f8fafc;
            }
            #wzw_jpg2pdf_cfb7e4fd_7a46_4dfc_ac6d_3fd7051e73ce .wzw-btn-add-more {
                background: #334155;
                color: #f8fafc;
                border: 1px solid #475569;
                padding: 6px 14px;
                border-radius: 6px;
                font-size: 12px;
                font-weight: 600;
                cursor: pointer;
                transition: all 0.2s ease;
            }
            #wzw_jpg2pdf_cfb7e4fd_7a46_4dfc_ac6d_3fd7051e73ce .wzw-btn-add-more:hover {
                background: #f59e0b;
                color: #0f172a;
                border-color: #f59e0b;
            }

            /* IMAGES GRID */
            #wzw_jpg2pdf_cfb7e4fd_7a46_4dfc_ac6d_3fd7051e73ce .wzw-images-grid {
                display: grid;
                grid-template-columns: repeat(auto-fill, minmax(170px, 1fr));
                gap: 16px;
                max-height: 480px;
                overflow-y: auto;
                background: #020617;
                border: 1px solid #334155;
                border-radius: 10px;
                padding: 16px;
                margin-bottom: 20px;
            }
            #wzw_jpg2pdf_cfb7e4fd_7a46_4dfc_ac6d_3fd7051e73ce .wzw-img-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_jpg2pdf_cfb7e4fd_7a46_4dfc_ac6d_3fd7051e73ce .wzw-img-card:hover {
                border-color: #f59e0b;
                transform: translateY(-2px);
            }
            #wzw_jpg2pdf_cfb7e4fd_7a46_4dfc_ac6d_3fd7051e73ce .wzw-img-thumb-wrap {
                background: #0f172a;
                border-radius: 4px;
                overflow: hidden;
                aspect-ratio: 1 / 1.25;
                display: flex;
                align-items: center;
                justify-content: center;
                margin-bottom: 8px;
            }
            #wzw_jpg2pdf_cfb7e4fd_7a46_4dfc_ac6d_3fd7051e73ce .wzw-img-thumb {
                max-width: 100%;
                max-height: 100%;
                object-fit: contain;
                display: block;
                transition: transform 0.25s ease;
            }
            #wzw_jpg2pdf_cfb7e4fd_7a46_4dfc_ac6d_3fd7051e73ce .wzw-img-name {
                font-size: 11px;
                font-weight: 600;
                color: #f8fafc;
                white-space: nowrap;
                overflow: hidden;
                text-overflow: ellipsis;
                margin-bottom: 4px;
            }
            #wzw_jpg2pdf_cfb7e4fd_7a46_4dfc_ac6d_3fd7051e73ce .wzw-img-meta {
                font-size: 10px;
                color: #94a3b8;
                margin-bottom: 8px;
            }
            #wzw_jpg2pdf_cfb7e4fd_7a46_4dfc_ac6d_3fd7051e73ce .wzw-img-actions {
                display: flex;
                align-items: center;
                justify-content: center;
                gap: 4px;
            }
            #wzw_jpg2pdf_cfb7e4fd_7a46_4dfc_ac6d_3fd7051e73ce .wzw-btn-img-act {
                background: #334155;
                color: #f8fafc;
                border: 1px solid #475569;
                border-radius: 4px;
                width: 26px;
                height: 24px;
                font-size: 11px;
                cursor: pointer;
                display: flex;
                align-items: center;
                justify-content: center;
                transition: all 0.15s ease;
            }
            #wzw_jpg2pdf_cfb7e4fd_7a46_4dfc_ac6d_3fd7051e73ce .wzw-btn-img-act:hover {
                background: #475569;
                color: #fff;
            }
            #wzw_jpg2pdf_cfb7e4fd_7a46_4dfc_ac6d_3fd7051e73ce .wzw-btn-img-act.del:hover {
                background: #ef4444;
                border-color: #ef4444;
                color: #fff;
            }

            /* BOTTOM BAR */
            #wzw_jpg2pdf_cfb7e4fd_7a46_4dfc_ac6d_3fd7051e73ce .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_jpg2pdf_cfb7e4fd_7a46_4dfc_ac6d_3fd7051e73ce .wzw-output-group {
                display: flex;
                align-items: center;
                gap: 8px;
            }
            #wzw_jpg2pdf_cfb7e4fd_7a46_4dfc_ac6d_3fd7051e73ce .wzw-output-group label {
                font-size: 13px;
                color: #94a3b8;
                font-weight: 600;
            }
            #wzw_jpg2pdf_cfb7e4fd_7a46_4dfc_ac6d_3fd7051e73ce .wzw-output-name {
                background: #1e293b;
                border: 1px solid #475569;
                color: #f8fafc;
                padding: 8px 12px;
                border-radius: 6px;
                font-size: 13px;
            }
            #wzw_jpg2pdf_cfb7e4fd_7a46_4dfc_ac6d_3fd7051e73ce .wzw-btn-save {
                background: linear-gradient(135deg, #f59e0b 0%, #d97706 100%);
                color: #0f172a;
                border: none;
                padding: 12px 24px;
                border-radius: 8px;
                font-size: 14px;
                font-weight: 800;
                cursor: pointer;
                transition: all 0.25s ease;
                box-shadow: 0 4px 15px rgba(245, 158, 11, 0.35);
            }
            #wzw_jpg2pdf_cfb7e4fd_7a46_4dfc_ac6d_3fd7051e73ce .wzw-btn-save:hover:not(:disabled) {
                background: linear-gradient(135deg, #fbbf24 0%, #f59e0b 100%);
                transform: translateY(-2px);
                box-shadow: 0 6px 20px rgba(245, 158, 11, 0.5);
            }
            #wzw_jpg2pdf_cfb7e4fd_7a46_4dfc_ac6d_3fd7051e73ce .wzw-btn-save:disabled {
                opacity: 0.5;
                cursor: not-allowed;
            }
            #wzw_jpg2pdf_cfb7e4fd_7a46_4dfc_ac6d_3fd7051e73ce .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_jpg2pdf_cfb7e4fd_7a46_4dfc_ac6d_3fd7051e73ce .wzw-btn-reset:hover {
                background: #334155;
                color: #fff;
            }
            #wzw_jpg2pdf_cfb7e4fd_7a46_4dfc_ac6d_3fd7051e73ce .wzw-progress-box {
                display: none;
                margin-top: 16px;
                background: #0f172a;
                border-radius: 8px;
                padding: 14px;
                border: 1px solid #334155;
            }
            #wzw_jpg2pdf_cfb7e4fd_7a46_4dfc_ac6d_3fd7051e73ce .wzw-progress-bar {
                height: 8px;
                background: #334155;
                border-radius: 4px;
                overflow: hidden;
                margin-bottom: 8px;
            }
            #wzw_jpg2pdf_cfb7e4fd_7a46_4dfc_ac6d_3fd7051e73ce .wzw-progress-fill {
                height: 100%;
                width: 0%;
                background: linear-gradient(90deg, #f59e0b, #fbbf24);
                transition: width 0.2s ease;
            }
            #wzw_jpg2pdf_cfb7e4fd_7a46_4dfc_ac6d_3fd7051e73ce .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> Conversor de JPG/PNG para PDF Online
            </h2>
            <div class="wzw-badge-client">
                🔒 100% Client-Side • Alta Definição
            </div>
        </div>

        <!-- DROPZONE -->
        <div class="wzw-dropzone" id="wzw_jpg2pdf_cfb7e4fd_7a46_4dfc_ac6d_3fd7051e73ce_dropzone">
            <span class="wzw-drop-icon">📸</span>
            <p class="wzw-drop-title">Arraste suas fotos aqui ou clique para selecionar</p>
            <p class="wzw-drop-sub">Suporta múltiplas imagens JPG, JPEG, PNG e WebP. Configure tamanho de página, orientação e margens.</p>
            <input type="file" id="wzw_jpg2pdf_cfb7e4fd_7a46_4dfc_ac6d_3fd7051e73ce_file_input" accept="image/jpeg,image/png,image/webp" multiple style="display: none;" />
        </div>

        <!-- WORKSPACE -->
        <div class="wzw-workspace" id="wzw_jpg2pdf_cfb7e4fd_7a46_4dfc_ac6d_3fd7051e73ce_workspace">
            <!-- PAINEL DE CONFIGURAÇÕES -->
            <div class="wzw-config-grid">
                <div class="wzw-config-item">
                    <label for="wzw_jpg2pdf_cfb7e4fd_7a46_4dfc_ac6d_3fd7051e73ce_page_size">Tamanho da Página</label>
                    <select id="wzw_jpg2pdf_cfb7e4fd_7a46_4dfc_ac6d_3fd7051e73ce_page_size" class="wzw-select">
                        <option value="A4" selected>A4 (210 x 297 mm)</option>
                        <option value="Letter">Carta / Letter (8.5 x 11 pol)</option>
                        <option value="Fit">Ajustar ao Tamanho da Foto</option>
                    </select>
                </div>
                <div class="wzw-config-item">
                    <label for="wzw_jpg2pdf_cfb7e4fd_7a46_4dfc_ac6d_3fd7051e73ce_page_orient">Orientação da Folha</label>
                    <select id="wzw_jpg2pdf_cfb7e4fd_7a46_4dfc_ac6d_3fd7051e73ce_page_orient" class="wzw-select">
                        <option value="auto" selected>Automática (Detecta foto)</option>
                        <option value="portrait">Retrato (Vertical)</option>
                        <option value="landscape">Paisagem (Horizontal)</option>
                    </select>
                </div>
                <div class="wzw-config-item">
                    <label for="wzw_jpg2pdf_cfb7e4fd_7a46_4dfc_ac6d_3fd7051e73ce_page_margin">Margens da Página</label>
                    <select id="wzw_jpg2pdf_cfb7e4fd_7a46_4dfc_ac6d_3fd7051e73ce_page_margin" class="wzw-select">
                        <option value="0" selected>Sem Margens (Totalmente Cheia)</option>
                        <option value="20">Margem Pequena (20 pt)</option>
                        <option value="40">Margem Normal (40 pt)</option>
                    </select>
                </div>
            </div>

            <!-- TOOLBAR -->
            <div class="wzw-toolbar">
                <span class="wzw-toolbar-title" id="wzw_jpg2pdf_cfb7e4fd_7a46_4dfc_ac6d_3fd7051e73ce_images_counter">0 imagem(ns) carregada(s)</span>
                <button type="button" class="wzw-btn-add-more" id="wzw_jpg2pdf_cfb7e4fd_7a46_4dfc_ac6d_3fd7051e73ce_btn_add_more">+ Adicionar Mais Fotos</button>
            </div>

            <!-- GRID DE IMAGENS -->
            <div class="wzw-images-grid" id="wzw_jpg2pdf_cfb7e4fd_7a46_4dfc_ac6d_3fd7051e73ce_grid">
                <!-- Cards inseridos via JS -->
            </div>

            <!-- BOTTOM BAR -->
            <div class="wzw-bottom-bar">
                <div class="wzw-output-group">
                    <label for="wzw_jpg2pdf_cfb7e4fd_7a46_4dfc_ac6d_3fd7051e73ce_output_name">Nome do arquivo PDF:</label>
                    <input type="text" id="wzw_jpg2pdf_cfb7e4fd_7a46_4dfc_ac6d_3fd7051e73ce_output_name" class="wzw-output-name" value="fotos-convertidas" />
                </div>
                <div style="display:flex; gap:10px;">
                    <button type="button" class="wzw-btn-reset" id="wzw_jpg2pdf_cfb7e4fd_7a46_4dfc_ac6d_3fd7051e73ce_btn_reset">Limpar Tudo</button>
                    <button type="button" class="wzw-btn-save" id="wzw_jpg2pdf_cfb7e4fd_7a46_4dfc_ac6d_3fd7051e73ce_btn_save">📥 Gerar e Baixar PDF</button>
                </div>
            </div>

            <!-- PROGRESS BOX -->
            <div class="wzw-progress-box" id="wzw_jpg2pdf_cfb7e4fd_7a46_4dfc_ac6d_3fd7051e73ce_progress">
                <div class="wzw-progress-bar">
                    <div class="wzw-progress-fill" id="wzw_jpg2pdf_cfb7e4fd_7a46_4dfc_ac6d_3fd7051e73ce_progress_fill"></div>
                </div>
                <div class="wzw-progress-status">
                    <span id="wzw_jpg2pdf_cfb7e4fd_7a46_4dfc_ac6d_3fd7051e73ce_status_label">Processando...</span>
                    <span id="wzw_jpg2pdf_cfb7e4fd_7a46_4dfc_ac6d_3fd7051e73ce_progress_percent">0%</span>
                </div>
            </div>
        </div>

        <script>
        (function() {
            var dropzone = document.getElementById('wzw_jpg2pdf_cfb7e4fd_7a46_4dfc_ac6d_3fd7051e73ce_dropzone');
            var fileInput = document.getElementById('wzw_jpg2pdf_cfb7e4fd_7a46_4dfc_ac6d_3fd7051e73ce_file_input');
            var workspace = document.getElementById('wzw_jpg2pdf_cfb7e4fd_7a46_4dfc_ac6d_3fd7051e73ce_workspace');
            var grid = document.getElementById('wzw_jpg2pdf_cfb7e4fd_7a46_4dfc_ac6d_3fd7051e73ce_grid');
            var btnAddMore = document.getElementById('wzw_jpg2pdf_cfb7e4fd_7a46_4dfc_ac6d_3fd7051e73ce_btn_add_more');
            var outputNameInput = document.getElementById('wzw_jpg2pdf_cfb7e4fd_7a46_4dfc_ac6d_3fd7051e73ce_output_name');
            var btnSave = document.getElementById('wzw_jpg2pdf_cfb7e4fd_7a46_4dfc_ac6d_3fd7051e73ce_btn_save');
            var btnReset = document.getElementById('wzw_jpg2pdf_cfb7e4fd_7a46_4dfc_ac6d_3fd7051e73ce_btn_reset');
            var imagesCounter = document.getElementById('wzw_jpg2pdf_cfb7e4fd_7a46_4dfc_ac6d_3fd7051e73ce_images_counter');

            var pageSizeSelect = document.getElementById('wzw_jpg2pdf_cfb7e4fd_7a46_4dfc_ac6d_3fd7051e73ce_page_size');
            var pageOrientSelect = document.getElementById('wzw_jpg2pdf_cfb7e4fd_7a46_4dfc_ac6d_3fd7051e73ce_page_orient');
            var pageMarginSelect = document.getElementById('wzw_jpg2pdf_cfb7e4fd_7a46_4dfc_ac6d_3fd7051e73ce_page_margin');

            var progressBox = document.getElementById('wzw_jpg2pdf_cfb7e4fd_7a46_4dfc_ac6d_3fd7051e73ce_progress');
            var progressFill = document.getElementById('wzw_jpg2pdf_cfb7e4fd_7a46_4dfc_ac6d_3fd7051e73ce_progress_fill');
            var statusLabel = document.getElementById('wzw_jpg2pdf_cfb7e4fd_7a46_4dfc_ac6d_3fd7051e73ce_status_label');
            var progressPercent = document.getElementById('wzw_jpg2pdf_cfb7e4fd_7a46_4dfc_ac6d_3fd7051e73ce_progress_percent');

            // Array de objetos de imagem:
            // { id, file, name, size, type, dataUrl, width, height, rotation: 0 }
            var imageItems = [];

            dropzone.addEventListener('click', function() { fileInput.click(); });
            btnAddMore.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.length) {
                    addFiles(e.dataTransfer.files);
                }
            });

            fileInput.addEventListener('change', function(e) {
                if (e.target.files && e.target.files.length) {
                    addFiles(e.target.files);
                    fileInput.value = '';
                }
            });

            btnReset.addEventListener('click', function() {
                imageItems = [];
                renderGrid();
                workspace.style.display = 'none';
                dropzone.style.display = 'block';
            });

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

            function updateUI() {
                imagesCounter.textContent = imageItems.length + ' imagem(ns) adicionada(s)';
                if (imageItems.length === 0) {
                    btnSave.disabled = true;
                    workspace.style.display = 'none';
                    dropzone.style.display = 'block';
                } else {
                    btnSave.disabled = false;
                    btnSave.textContent = '📥 Gerar e Baixar PDF com ' + imageItems.length + ' Foto(s)';
                }
            }

            function renderGrid() {
                grid.innerHTML = '';
                imageItems.forEach(function(item, idx) {
                    var card = document.createElement('div');
                    card.className = 'wzw-img-card';
                    card.setAttribute('data-idx', idx.toString());

                    var thumbWrap = document.createElement('div');
                    thumbWrap.className = 'wzw-img-thumb-wrap';

                    var img = document.createElement('img');
                    img.className = 'wzw-img-thumb';
                    img.src = item.dataUrl;
                    img.alt = item.name;
                    img.style.transform = 'rotate(' + item.rotation + 'deg)';
                    thumbWrap.appendChild(img);

                    var nameElem = document.createElement('div');
                    nameElem.className = 'wzw-img-name';
                    nameElem.title = item.name;
                    nameElem.textContent = (idx + 1) + '. ' + item.name;

                    var metaElem = document.createElement('div');
                    metaElem.className = 'wzw-img-meta';
                    metaElem.textContent = item.width + 'x' + item.height + ' • ' + formatBytes(item.size);

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

                    // Botão Subir
                    var btnUp = document.createElement('button');
                    btnUp.type = 'button';
                    btnUp.className = 'wzw-btn-img-act';
                    btnUp.title = 'Mover para cima';
                    btnUp.textContent = '▲';
                    btnUp.disabled = (idx === 0);
                    btnUp.addEventListener('click', function() {
                        if (idx > 0) {
                            var temp = imageItems[idx - 1];
                            imageItems[idx - 1] = imageItems[idx];
                            imageItems[idx] = temp;
                            renderGrid();
                        }
                    });

                    // Botão Descer
                    var btnDown = document.createElement('button');
                    btnDown.type = 'button';
                    btnDown.className = 'wzw-btn-img-act';
                    btnDown.title = 'Mover para baixo';
                    btnDown.textContent = '▼';
                    btnDown.disabled = (idx === imageItems.length - 1);
                    btnDown.addEventListener('click', function() {
                        if (idx < imageItems.length - 1) {
                            var temp = imageItems[idx + 1];
                            imageItems[idx + 1] = imageItems[idx];
                            imageItems[idx] = temp;
                            renderGrid();
                        }
                    });

                    // Botão Rodar 90
                    var btnRot = document.createElement('button');
                    btnRot.type = 'button';
                    btnRot.className = 'wzw-btn-img-act';
                    btnRot.title = 'Girar 90°';
                    btnRot.textContent = '↻';
                    btnRot.addEventListener('click', function() {
                        item.rotation = (item.rotation + 90) % 360;
                        img.style.transform = 'rotate(' + item.rotation + 'deg)';
                    });

                    // Botão Deletar
                    var btnDel = document.createElement('button');
                    btnDel.type = 'button';
                    btnDel.className = 'wzw-btn-img-act del';
                    btnDel.title = 'Excluir imagem';
                    btnDel.textContent = '✕';
                    btnDel.addEventListener('click', function() {
                        imageItems.splice(idx, 1);
                        renderGrid();
                        updateUI();
                    });

                    actions.appendChild(btnUp);
                    actions.appendChild(btnDown);
                    actions.appendChild(btnRot);
                    actions.appendChild(btnDel);

                    card.appendChild(thumbWrap);
                    card.appendChild(nameElem);
                    card.appendChild(metaElem);
                    card.appendChild(actions);

                    grid.appendChild(card);
                });

                updateUI();
            }

            function addFiles(files) {
                var validFiles = [];
                for (var i = 0; i < files.length; i++) {
                    var f = files[i];
                    var type = f.type.toLowerCase();
                    if (type.indexOf('image/') !== -1 || /\.(jpe?g|png|webp)$/i.test(f.name)) {
                        validFiles.push(f);
                    }
                }

                if (validFiles.length === 0) {
                    alert('Selecione arquivos de imagem válidos (JPG, JPEG, PNG ou WebP).');
                    return;
                }

                dropzone.style.display = 'none';
                workspace.style.display = 'block';

                var loadedCount = 0;
                validFiles.forEach(function(f) {
                    var reader = new FileReader();
                    reader.onload = function(e) {
                        var dataUrl = e.target.result;
                        var imgObj = new Image();
                        imgObj.onload = function() {
                            imageItems.push({
                                id: 'img_' + Math.random().toString(36).substr(2, 9),
                                file: f,
                                name: f.name,
                                size: f.size,
                                type: f.type,
                                dataUrl: dataUrl,
                                width: imgObj.naturalWidth,
                                height: imgObj.naturalHeight,
                                rotation: 0
                            });
                            loadedCount++;
                            if (loadedCount === validFiles.length) {
                                renderGrid();
                            }
                        };
                        imgObj.src = dataUrl;
                    };
                    reader.readAsDataURL(f);
                });
            }

            // Helper para obter os bytes JPEG de uma imagem (com rotação aplicada via Canvas se necessário)
            function getImageBytesForPdf(item) {
                return new Promise(function(resolve, reject) {
                    var isNativeJpg = (item.file.type === 'image/jpeg' || item.file.type === 'image/jpg') && item.rotation === 0;
                    var isNativePng = (item.file.type === 'image/png') && item.rotation === 0;

                    if (isNativeJpg || isNativePng) {
                        var reader = new FileReader();
                        reader.onload = function(e) {
                            resolve({
                                format: isNativePng ? 'png' : 'jpg',
                                bytes: new Uint8Array(e.target.result),
                                width: item.width,
                                height: item.height
                            });
                        };
                        reader.onerror = reject;
                        reader.readAsArrayBuffer(item.file);
                    } else {
                        // Converte via canvas para JPEG (suporta WebP e rotações de 90/180/270)
                        var img = new Image();
                        img.onload = function() {
                            var canvas = document.createElement('canvas');
                            var ctx = canvas.getContext('2d');
                            var rot = item.rotation;

                            var targetWidth = item.width;
                            var targetHeight = item.height;

                            if (rot === 90 || rot === 270) {
                                canvas.width = item.height;
                                canvas.height = item.width;
                                targetWidth = item.height;
                                targetHeight = item.width;
                            } else {
                                canvas.width = item.width;
                                canvas.height = item.height;
                            }

                            ctx.translate(canvas.width / 2, canvas.height / 2);
                            ctx.rotate((rot * Math.PI) / 180);
                            ctx.drawImage(img, -item.width / 2, -item.height / 2);

                            canvas.toBlob(function(blob) {
                                var reader = new FileReader();
                                reader.onload = function(e) {
                                    resolve({
                                        format: 'jpg',
                                        bytes: new Uint8Array(e.target.result),
                                        width: targetWidth,
                                        height: targetHeight
                                    });
                                };
                                reader.onerror = reject;
                                reader.readAsArrayBuffer(blob);
                            }, 'image/jpeg', 0.92);
                        };
                        img.onerror = reject;
                        img.src = item.dataUrl;
                    }
                });
            }

            // Geração e Compilação do PDF
            btnSave.addEventListener('click', async function() {
                if (imageItems.length === 0) return;

                btnSave.disabled = true;
                btnSave.textContent = '⏳ Compilando PDF...';
                progressBox.style.display = 'block';
                progressFill.style.width = '10%';
                statusLabel.textContent = 'Inicializando documento PDF...';
                progressPercent.textContent = '10%';

                try {
                    var { PDFDocument } = window.PDFLib;
                    var pdfDoc = await PDFDocument.create();

                    var pageSizeSetting = pageSizeSelect.value;
                    var pageOrientSetting = pageOrientSelect.value;
                    var margin = parseFloat(pageMarginSelect.value) || 0;

                    for (var i = 0; i < imageItems.length; i++) {
                        var item = imageItems[i];
                        var pct = 10 + Math.floor(((i + 1) / imageItems.length) * 75);
                        progressFill.style.width = pct + '%';
                        progressPercent.textContent = pct + '%';
                        statusLabel.textContent = 'Processando imagem ' + (i + 1) + ' de ' + imageItems.length + '...';

                        var imgData = await getImageBytesForPdf(item);
                        var embeddedImage;

                        if (imgData.format === 'png') {
                            embeddedImage = await pdfDoc.embedPng(imgData.bytes);
                        } else {
                            embeddedImage = await pdfDoc.embedJpg(imgData.bytes);
                        }

                        var imgW = imgData.width;
                        var imgH = imgData.height;

                        var pageWidth, pageHeight;

                        if (pageSizeSetting === 'Fit') {
                            pageWidth = imgW + (margin * 2);
                            pageHeight = imgH + (margin * 2);
                        } else {
                            // Dimensões base: A4 (595.28 x 841.89) ou Letter (612 x 792)
                            var baseW = (pageSizeSetting === 'Letter') ? 612 : 595.28;
                            var baseH = (pageSizeSetting === 'Letter') ? 792 : 841.89;

                            var isLandscape = false;
                            if (pageOrientSetting === 'landscape') {
                                isLandscape = true;
                            } else if (pageOrientSetting === 'auto') {
                                isLandscape = (imgW > imgH);
                            }

                            if (isLandscape) {
                                pageWidth = Math.max(baseW, baseH);
                                pageHeight = Math.min(baseW, baseH);
                            } else {
                                pageWidth = Math.min(baseW, baseH);
                                pageHeight = Math.max(baseW, baseH);
                            }
                        }

                        var page = pdfDoc.addPage([pageWidth, pageHeight]);

                        // Calcula escala para caber na página com margens mantendo aspect-ratio
                        var availW = pageWidth - (margin * 2);
                        var availH = pageHeight - (margin * 2);

                        var scale = Math.min(availW / imgW, availH / imgH);
                        var drawW = imgW * scale;
                        var drawH = imgH * scale;

                        // Centraliza o desenho na área disponível
                        var drawX = margin + (availW - drawW) / 2;
                        var drawY = margin + (availH - drawH) / 2;

                        page.drawImage(embeddedImage, {
                            x: drawX,
                            y: drawY,
                            width: drawW,
                            height: drawH
                        });
                    }

                    progressFill.style.width = '90%';
                    progressPercent.textContent = '90%';
                    statusLabel.textContent = 'Finalizando arquivo PDF...';

                    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() || 'fotos-convertidas') + '.pdf';
                    document.body.appendChild(a);
                    a.click();
                    document.body.removeChild(a);
                    URL.revokeObjectURL(url);

                    progressFill.style.width = '100%';
                    progressPercent.textContent = '100%';
                    statusLabel.textContent = '✓ PDF com ' + imageItems.length + ' foto(s) gerado com sucesso!';

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

                } catch (err) {
                    console.error('Erro ao converter fotos para PDF:', err);
                    alert('Erro na compilação do PDF: ' + err.message);
                    btnSave.disabled = false;
                    updateUI();
                    progressBox.style.display = 'none';
                }
            });
        })();
        </script>
    </div>
    
<h3>Opções Completas de Formatação de Folha</h3>
<ul>
<li><strong>Padrão de Folha:</strong> Escolha entre <strong>A4 (210 x 297 mm)</strong>, <strong>Carta (Letter)</strong> ou ajuste dinâmico à dimensão exata de cada imagem.</li>
<li><strong>Orientação Inteligente:</strong> Modo automático que detecta se a foto é horizontal ou vertical, além de travas manuais para Retrato ou Paisagem.</li>
<li><strong>Controle de Margens:</strong> Opções para preenchimento total da página (Sem margem), margem fina (20 pt) ou margem padrão de leitura (40 pt).</li>
</ul>
<p>Para o caminho inverso, você pode transformar documentos de volta em fotos através do nosso <a href="/web-ferramentas/pdf-para-jpg/">conversor de PDF para JPG</a> ou consultar nosso <a href="/ferramentas-de-imagens/">Hub de Imagens e Vetores</a>.</p>
<p><script>
{
  "@context": "https://schema.org",
  "@type": "FAQPage",
  "mainEntity": [
    {
      "@type": "Question",
      "name": "Como juntar várias fotos em um único arquivo PDF?",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "Arraste todas as fotos juntas para a área da ferramenta. Você pode reorganizar a ordem das fotos usando as setas para cima e para baixo antes de clicar em Gerar PDF."
      }
    },
    {
      "@type": "Question",
      "name": "A ferramenta aceita imagens PNG transparentes e formato WebP?",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "Sim. O conversor suporta nativamente arquivos JPG, PNG e o formato moderno WebP com renderização em alta fidelidade."
      }
    }
  ]
}
</script></p>
<p>O post <a href="https://webzoneware.com/web-ferramentas/pdf/jpg-para-pdf/">JPG para PDF: Converter Fotos e Imagens em PDF | 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/jpg-para-pdf/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
