{"id":5638,"date":"2025-09-24T06:07:11","date_gmt":"2025-09-24T06:07:11","guid":{"rendered":"https:\/\/webevolvv.com\/?page_id=5638"},"modified":"2025-09-24T06:27:40","modified_gmt":"2025-09-24T06:27:40","slug":"psd","status":"publish","type":"page","link":"https:\/\/webevolvv.com\/ar\/psd\/","title":{"rendered":"PSD"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"5638\" class=\"elementor elementor-5638\">\n\t\t\t\t<div class=\"has_eae_slider elementor-element elementor-element-6e53a80 e-flex e-con-boxed e-con e-parent\" data-eae-slider=\"68511\" data-id=\"6e53a80\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-b004745 exad-sticky-section-no exad-glass-effect-no elementor-widget elementor-widget-html\" data-id=\"b004745\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<!DOCTYPE html>\r\n<html lang=\"en\">\r\n<head>\r\n    <meta charset=\"UTF-8\">\r\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\r\n    <title>Secure PSD to PDF Converter<\/title>\r\n    <script src=\"https:\/\/cdn.tailwindcss.com\"><\/script>\r\n    <link rel=\"preconnect\" href=\"https:\/\/fonts.googleapis.com\">\r\n    <link rel=\"preconnect\" href=\"https:\/\/fonts.gstatic.com\" crossorigin>\r\n    <link href=\"https:\/\/fonts.googleapis.com\/css2?family=Inter:wght@400;600;700&display=swap\" rel=\"stylesheet\">\r\n    <style>\r\n        body {\r\n            font-family: 'Inter', sans-serif;\r\n            background-color: #f3f4f6;\r\n        }\r\n    <\/style>\r\n<\/head>\r\n<body class=\"min-h-screen flex items-center justify-center p-4\">\r\n    <div id=\"app\" class=\"bg-white p-8 rounded-2xl shadow-lg w-full max-w-md space-y-6\">\r\n        <h1 class=\"text-3xl font-bold text-center text-gray-800\">PSD to PDF Converter<\/h1>\r\n        <div id=\"login-form\" class=\"space-y-4\">\r\n            <h2 class=\"text-xl font-semibold text-gray-700 text-center\">Employee Login<\/h2>\r\n            <div>\r\n                <label for=\"username\" class=\"block text-sm font-medium text-gray-700\">Username<\/label>\r\n                <input type=\"text\" id=\"username\" class=\"mt-1 block w-full px-3 py-2 bg-gray-100 rounded-lg shadow-inner focus:outline-none focus:ring-2 focus:ring-blue-500\">\r\n            <\/div>\r\n            <div>\r\n                <label for=\"password\" class=\"block text-sm font-medium text-gray-700\">Password<\/label>\r\n                <input type=\"password\" id=\"password\" class=\"mt-1 block w-full px-3 py-2 bg-gray-100 rounded-lg shadow-inner focus:outline-none focus:ring-2 focus:ring-blue-500\">\r\n            <\/div>\r\n            <button id=\"login-button\" class=\"w-full bg-blue-600 text-white py-2 rounded-lg font-semibold hover:bg-blue-700 transition duration-200 ease-in-out transform hover:scale-105 focus:outline-none focus:ring-2 focus:ring-blue-500 focus:ring-offset-2\">Log In<\/button>\r\n            <p id=\"login-message\" class=\"text-center text-sm text-red-500\"><\/p>\r\n        <\/div>\r\n\r\n        <div id=\"conversion-form\" class=\"hidden space-y-4\">\r\n            <h2 class=\"text-xl font-semibold text-gray-700 text-center\">File Converter<\/h2>\r\n            <p id=\"welcome-message\" class=\"text-center text-gray-500\"><\/p>\r\n            <div>\r\n                <label for=\"file-input\" class=\"block text-sm font-medium text-gray-700\">Select .psd file(s)<\/label>\r\n                <input type=\"file\" id=\"file-input\" accept=\".psd\" multiple class=\"mt-1 block w-full text-gray-700 border border-gray-300 rounded-lg shadow-inner focus:outline-none focus:ring-2 focus:ring-blue-500 file:mr-4 file:py-2 file:px-4 file:rounded-full file:border-0 file:text-sm file:font-semibold file:bg-blue-50 file:text-blue-700 hover:file:bg-blue-100\">\r\n            <\/div>\r\n            <button id=\"convert-button\" class=\"w-full bg-green-600 text-white py-2 rounded-lg font-semibold hover:bg-green-700 transition duration-200 ease-in-out transform hover:scale-105 focus:outline-none focus:ring-2 focus:ring-green-500 focus:ring-offset-2\">Convert to PDF<\/button>\r\n            <p id=\"status-message\" class=\"text-center text-sm text-gray-500\"><\/p>\r\n            <a id=\"download-link\" href=\"#\" class=\"hidden w-full bg-indigo-600 text-white text-center py-2 rounded-lg font-semibold hover:bg-indigo-700 transition duration-200 ease-in-out transform hover:scale-105 focus:outline-none focus:ring-2 focus:ring-indigo-500 focus:ring-offset-2\">Download PDFs (.zip)<\/a>\r\n            <button id=\"logout-button\" class=\"w-full bg-red-600 text-white py-2 rounded-lg font-semibold hover:bg-red-700 transition duration-200 ease-in-out transform hover:scale-105 focus:outline-none focus:ring-2 focus:ring-red-500 focus:ring-offset-2\">Log Out<\/button>\r\n        <\/div>\r\n    <\/div>\r\n\r\n    <script>\r\n        const API_SERVER = 'http:\/\/178.128.118.147:5000';\r\n\r\n        const loginForm = document.getElementById('login-form');\r\n        const conversionForm = document.getElementById('conversion-form');\r\n        const loginButton = document.getElementById('login-button');\r\n        const convertButton = document.getElementById('convert-button');\r\n        const logoutButton = document.getElementById('logout-button');\r\n        const fileInput = document.getElementById('file-input');\r\n        const loginMessage = document.getElementById('login-message');\r\n        const statusMessage = document.getElementById('status-message');\r\n        const welcomeMessage = document.getElementById('welcome-message');\r\n        const downloadLink = document.getElementById('download-link');\r\n\r\n        let authToken = null;\r\n\r\n        document.addEventListener('DOMContentLoaded', () => {\r\n            const storedToken = localStorage.getItem('authToken');\r\n            if (storedToken) {\r\n                authToken = storedToken;\r\n                showConversionForm();\r\n            }\r\n        });\r\n\r\n        function showConversionForm() {\r\n            loginForm.classList.add('hidden');\r\n            conversionForm.classList.remove('hidden');\r\n            const tokenPayload = JSON.parse(atob(authToken.split('.')[1]));\r\n            welcomeMessage.textContent = `Welcome, ${tokenPayload.username}!`;\r\n        }\r\n\r\n        function showLoginScreen() {\r\n            loginForm.classList.remove('hidden');\r\n            conversionForm.classList.add('hidden');\r\n            localStorage.removeItem('authToken');\r\n            authToken = null;\r\n        }\r\n\r\n        loginButton.addEventListener('click', async () => {\r\n            const username = document.getElementById('username').value;\r\n            const password = document.getElementById('password').value;\r\n\r\n            loginMessage.textContent = 'Logging in...';\r\n            loginButton.disabled = true;\r\n\r\n            try {\r\n                const response = await fetch(`${API_SERVER}\/login`, {\r\n                    method: 'POST',\r\n                    headers: {\r\n                        'Content-Type': 'application\/json'\r\n                    },\r\n                    body: JSON.stringify({ username, password })\r\n                });\r\n\r\n                const data = await response.json();\r\n\r\n                if (response.ok) {\r\n                    authToken = data.token;\r\n                    localStorage.setItem('authToken', authToken);\r\n                    loginMessage.textContent = '';\r\n                    showConversionForm();\r\n                } else {\r\n                    loginMessage.textContent = data.error || 'Login failed.';\r\n                }\r\n            } catch (error) {\r\n                loginMessage.textContent = 'Could not connect to the server.';\r\n            } finally {\r\n                loginButton.disabled = false;\r\n            }\r\n        });\r\n\r\n        convertButton.addEventListener('click', async () => {\r\n            const files = fileInput.files;\r\n            if (files.length === 0) {\r\n                statusMessage.textContent = 'Please select one or more files first.';\r\n                return;\r\n            }\r\n\r\n            statusMessage.textContent = `Converting ${files.length} file(s)... Please wait.`;\r\n            convertButton.disabled = true;\r\n            downloadLink.classList.add('hidden');\r\n\r\n            const formData = new FormData();\r\n            for (const file of files) {\r\n                if (file.size === 0) {\r\n                    statusMessage.textContent = `The file \"${file.name}\" is empty or could not be read.`;\r\n                    convertButton.disabled = false;\r\n                    return;\r\n                }\r\n                formData.append('files[]', file);\r\n            }\r\n\r\n            try {\r\n                const response = await fetch(`${API_SERVER}\/convert_psd_to_pdf`, {\r\n                    method: 'POST',\r\n                    headers: {\r\n                        'Authorization': `Bearer ${authToken}`\r\n                    },\r\n                    body: formData\r\n                });\r\n\r\n                if (response.ok) {\r\n                    const blob = await response.blob();\r\n                    const url = URL.createObjectURL(blob);\r\n                    downloadLink.href = url;\r\n                    downloadLink.download = 'converted_pdfs.zip'; \r\n                    downloadLink.classList.remove('hidden');\r\n                    statusMessage.textContent = `Conversion successful! All ${files.length} files are in the .zip archive.`;\r\n                } else if (response.status === 401) {\r\n                    statusMessage.textContent = 'Session expired. Please log in again.';\r\n                    showLoginScreen();\r\n                } else {\r\n                    const data = await response.json();\r\n                    statusMessage.textContent = data.error || 'Conversion failed.';\r\n                }\r\n            } catch (error) {\r\n                statusMessage.textContent = 'Could not connect to the server or an error occurred.';\r\n            } finally {\r\n                convertButton.disabled = false;\r\n            }\r\n        });\r\n\r\n        logoutButton.addEventListener('click', () => {\r\n            showLoginScreen();\r\n            statusMessage.textContent = 'You have been logged out.';\r\n        });\r\n    <\/script>\r\n<\/body>\r\n<\/html>\r\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>Secure PSD to PDF Converter PSD to PDF Converter Employee Login Username Password Log In File Converter Select .psd file(s) Convert to PDF Download PDFs (.zip) Log Out<\/p>","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_acf_changed":false,"_eb_attr":"","_uag_custom_page_level_css":"","footnotes":""},"class_list":["post-5638","page","type-page","status-publish","hentry"],"blocksy_meta":[],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.6 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>PSD | Web Evolve<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/webevolvv.com\/ar\/psd\/\" \/>\n<meta property=\"og:locale\" content=\"ar_AR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"PSD | Web Evolve\" \/>\n<meta property=\"og:description\" content=\"Secure PSD to PDF Converter PSD to PDF Converter Employee Login Username Password Log In File Converter Select .psd file(s) Convert to PDF Download PDFs (.zip) Log Out\" \/>\n<meta property=\"og:url\" content=\"https:\/\/webevolvv.com\/ar\/psd\/\" \/>\n<meta property=\"og:site_name\" content=\"Web Evolve\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/webevolv\/\" \/>\n<meta property=\"article:modified_time\" content=\"2025-09-24T06:27:40+00:00\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"\u0648\u0642\u062a \u0627\u0644\u0642\u0631\u0627\u0621\u0629 \u0627\u0644\u0645\u064f\u0642\u062f\u0651\u0631\" \/>\n\t<meta name=\"twitter:data1\" content=\"\u062f\u0642\u064a\u0642\u0629 \u0648\u0627\u062d\u062f\u0629\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/webevolvv.com\\\/psd\\\/\",\"url\":\"https:\\\/\\\/webevolvv.com\\\/psd\\\/\",\"name\":\"PSD | Web Evolve\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/webevolvv.com\\\/#website\"},\"datePublished\":\"2025-09-24T06:07:11+00:00\",\"dateModified\":\"2025-09-24T06:27:40+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/webevolvv.com\\\/psd\\\/#breadcrumb\"},\"inLanguage\":\"ar\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/webevolvv.com\\\/psd\\\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/webevolvv.com\\\/psd\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/webevolvv.com\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"PSD\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/webevolvv.com\\\/#website\",\"url\":\"https:\\\/\\\/webevolvv.com\\\/\",\"name\":\"WebEvolvv.com\",\"description\":\"Design, Marketing, and Unlimited Growth!\",\"publisher\":{\"@id\":\"https:\\\/\\\/webevolvv.com\\\/#organization\"},\"alternateName\":\"Web Evolve Web Design Agency\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/webevolvv.com\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"ar\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/webevolvv.com\\\/#organization\",\"name\":\"Web Evolve\",\"alternateName\":\"Web Evolve Web Design Agency\",\"url\":\"https:\\\/\\\/webevolvv.com\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"ar\",\"@id\":\"https:\\\/\\\/webevolvv.com\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/webevolvv.com\\\/wp-content\\\/uploads\\\/2024\\\/05\\\/w-logo-345-490x490-ezgif.com-crop.jpg\",\"contentUrl\":\"https:\\\/\\\/webevolvv.com\\\/wp-content\\\/uploads\\\/2024\\\/05\\\/w-logo-345-490x490-ezgif.com-crop.jpg\",\"width\":319,\"height\":295,\"caption\":\"Web Evolve\"},\"image\":{\"@id\":\"https:\\\/\\\/webevolvv.com\\\/#\\\/schema\\\/logo\\\/image\\\/\"},\"sameAs\":[\"https:\\\/\\\/www.facebook.com\\\/webevolv\\\/\"]}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"PSD | Web Evolve","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/webevolvv.com\/ar\/psd\/","og_locale":"ar_AR","og_type":"article","og_title":"PSD | Web Evolve","og_description":"Secure PSD to PDF Converter PSD to PDF Converter Employee Login Username Password Log In File Converter Select .psd file(s) Convert to PDF Download PDFs (.zip) Log Out","og_url":"https:\/\/webevolvv.com\/ar\/psd\/","og_site_name":"Web Evolve","article_publisher":"https:\/\/www.facebook.com\/webevolv\/","article_modified_time":"2025-09-24T06:27:40+00:00","twitter_card":"summary_large_image","twitter_misc":{"\u0648\u0642\u062a \u0627\u0644\u0642\u0631\u0627\u0621\u0629 \u0627\u0644\u0645\u064f\u0642\u062f\u0651\u0631":"\u062f\u0642\u064a\u0642\u0629 \u0648\u0627\u062d\u062f\u0629"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/webevolvv.com\/psd\/","url":"https:\/\/webevolvv.com\/psd\/","name":"PSD | Web Evolve","isPartOf":{"@id":"https:\/\/webevolvv.com\/#website"},"datePublished":"2025-09-24T06:07:11+00:00","dateModified":"2025-09-24T06:27:40+00:00","breadcrumb":{"@id":"https:\/\/webevolvv.com\/psd\/#breadcrumb"},"inLanguage":"ar","potentialAction":[{"@type":"ReadAction","target":["https:\/\/webevolvv.com\/psd\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/webevolvv.com\/psd\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/webevolvv.com\/"},{"@type":"ListItem","position":2,"name":"PSD"}]},{"@type":"WebSite","@id":"https:\/\/webevolvv.com\/#website","url":"https:\/\/webevolvv.com\/","name":"WebEvolvv.com","description":"\u062a\u0635\u0645\u064a\u0645\u060c \u062a\u0633\u0648\u064a\u0642\u060c \u0646\u0645\u0648 \u0628\u0644\u0627 \u062d\u062f\u0648\u062f!","publisher":{"@id":"https:\/\/webevolvv.com\/#organization"},"alternateName":"Web Evolve Web Design Agency","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/webevolvv.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"ar"},{"@type":"Organization","@id":"https:\/\/webevolvv.com\/#organization","name":"Web Evolve","alternateName":"Web Evolve Web Design Agency","url":"https:\/\/webevolvv.com\/","logo":{"@type":"ImageObject","inLanguage":"ar","@id":"https:\/\/webevolvv.com\/#\/schema\/logo\/image\/","url":"https:\/\/webevolvv.com\/wp-content\/uploads\/2024\/05\/w-logo-345-490x490-ezgif.com-crop.jpg","contentUrl":"https:\/\/webevolvv.com\/wp-content\/uploads\/2024\/05\/w-logo-345-490x490-ezgif.com-crop.jpg","width":319,"height":295,"caption":"Web Evolve"},"image":{"@id":"https:\/\/webevolvv.com\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/webevolv\/"]}]}},"uagb_featured_image_src":{"full":false,"thumbnail":false,"medium":false,"medium_large":false,"large":false,"1536x1536":false,"2048x2048":false,"trp-custom-language-flag":false},"uagb_author_info":{"display_name":"WebEvolve","author_link":"https:\/\/webevolvv.com\/ar\/author\/webevolve\/"},"uagb_comment_info":0,"uagb_excerpt":"Secure PSD to PDF Converter PSD to PDF Converter Employee Login Username Password Log In File Converter Select .psd file(s) Convert to PDF Download PDFs (.zip) Log Out","_links":{"self":[{"href":"https:\/\/webevolvv.com\/ar\/wp-json\/wp\/v2\/pages\/5638","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/webevolvv.com\/ar\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/webevolvv.com\/ar\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/webevolvv.com\/ar\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/webevolvv.com\/ar\/wp-json\/wp\/v2\/comments?post=5638"}],"version-history":[{"count":20,"href":"https:\/\/webevolvv.com\/ar\/wp-json\/wp\/v2\/pages\/5638\/revisions"}],"predecessor-version":[{"id":5659,"href":"https:\/\/webevolvv.com\/ar\/wp-json\/wp\/v2\/pages\/5638\/revisions\/5659"}],"wp:attachment":[{"href":"https:\/\/webevolvv.com\/ar\/wp-json\/wp\/v2\/media?parent=5638"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}