{"id":83,"date":"2026-08-14T11:46:31","date_gmt":"2026-08-14T11:46:31","guid":{"rendered":"https:\/\/pinsave.site\/?page_id=83"},"modified":"2026-08-20T08:24:16","modified_gmt":"2026-08-20T08:24:16","slug":"file-converter","status":"publish","type":"page","link":"https:\/\/pinsave.site\/file-converter\/","title":{"rendered":"Converter"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"83\" class=\"elementor elementor-83\">\n\t\t\t\t<div class=\"elementor-element elementor-element-f03e225 e-con e-atomic-element e-flexbox-base e-56deb36 \" data-id=\"f03e225\" data-element_type=\"e-flexbox\" data-e-type=\"e-flexbox\" data-interaction-id=\"f03e225\">\n    \t\t<div class=\"elementor-element elementor-element-5e46723 elementor-widget elementor-widget-html\" data-id=\"5e46723\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\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>Free Online PDF, DOCX, HEIC & Image Converter | PinSave<\/title>\r\n\r\n<!-- Meta description \/ SEO -->\r\n<meta name=\"description\" content=\"Free online file converter to convert PDF, DOCX, HEIC, SVG, JPG, PNG and WEBP instantly in your browser. No upload to a server, no signup \u2014 convert PDF to JPG, DOCX to PDF, HEIC to JPG, image to PDF and more, free and secure with PinSave.\" \/>\r\n<meta name=\"keywords\" content=\"pdf to jpg converter, docx to pdf converter, heic to jpg converter, image to pdf converter, free online file converter, convert pdf to image, jpg to png converter, png to jpg converter online, svg converter online, svg to png converter, jpg to pdf converter free, webp to jpg converter, heic to png converter, word to pdf converter online, browser based file converter, convert file without uploading, PinSave converter\" \/>\r\n<meta name=\"robots\" content=\"index, follow\" \/>\r\n<link rel=\"canonical\" href=\"https:\/\/pinsave.site\/converter\" \/>\r\n\r\n<!-- Open Graph -->\r\n<meta property=\"og:type\" content=\"website\" \/>\r\n<meta property=\"og:title\" content=\"PinSave Converter \u2014 Free Online PDF, DOCX, HEIC & Image Converter\" \/>\r\n<meta property=\"og:description\" content=\"Convert PDF, DOCX, HEIC, SVG, JPG, PNG and WEBP files free, right in your browser. No uploads, no signup, no watermark.\" \/>\r\n<meta property=\"og:url\" content=\"https:\/\/pinsave.site\/converter\" \/>\r\n<meta property=\"og:site_name\" content=\"PinSave\" \/>\r\n\r\n<!-- Twitter Card -->\r\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\r\n<meta name=\"twitter:title\" content=\"PinSave Converter \u2014 Free Online PDF, DOCX, HEIC & Image Converter\" \/>\r\n<meta name=\"twitter:description\" content=\"Convert PDF, DOCX, HEIC, SVG, JPG, PNG and WEBP files free, right in your browser. No uploads, no signup, no watermark.\" \/>\r\n\r\n<!-- Structured data: SoftwareApplication -->\r\n<script type=\"application\/ld+json\">\r\n{\r\n  \"@context\": \"https:\/\/schema.org\",\r\n  \"@type\": \"SoftwareApplication\",\r\n  \"name\": \"PinSave Universal Converter\",\r\n  \"url\": \"https:\/\/pinsave.site\/converter\",\r\n  \"applicationCategory\": \"Utility\",\r\n  \"operatingSystem\": \"Any (Web Browser)\",\r\n  \"offers\": { \"@type\": \"Offer\", \"price\": \"0\", \"priceCurrency\": \"USD\" },\r\n  \"description\": \"Free browser-based tool to convert between PDF, DOCX, HEIC, SVG, JPG, PNG and WEBP formats without uploading files to a server.\",\r\n  \"featureList\": [\r\n    \"Convert PDF to JPG, PNG, WEBP or SVG\",\r\n    \"Convert DOCX to image or PDF\",\r\n    \"Convert HEIC to JPG or PNG\",\r\n    \"Convert images between JPG, PNG, WEBP and SVG\",\r\n    \"Adjustable image compression\",\r\n    \"100% in-browser processing, no file uploads\"\r\n  ]\r\n}\r\n<\/script>\r\n\r\n<!-- Structured data: HowTo -->\r\n<script type=\"application\/ld+json\">\r\n{\r\n  \"@context\": \"https:\/\/schema.org\",\r\n  \"@type\": \"HowTo\",\r\n  \"name\": \"How to convert a file with PinSave Converter\",\r\n  \"step\": [\r\n    { \"@type\": \"HowToStep\", \"name\": \"Upload your file\", \"text\": \"Click the drop zone or drag and drop a PDF, DOCX, HEIC, SVG, JPG, PNG or WEBP file into PinSave Converter.\" },\r\n    { \"@type\": \"HowToStep\", \"name\": \"Choose the output format\", \"text\": \"Select the format you want to convert to: JPG, PNG, WEBP, SVG or PDF.\" },\r\n    { \"@type\": \"HowToStep\", \"name\": \"Adjust compression (optional)\", \"text\": \"Use the quality slider to control the compression level and output file size for JPG and WEBP formats.\" },\r\n    { \"@type\": \"HowToStep\", \"name\": \"Convert the file\", \"text\": \"Click the Convert button and let PinSave process the file entirely in your browser.\" },\r\n    { \"@type\": \"HowToStep\", \"name\": \"Download the result\", \"text\": \"Click Download to save the converted file to your device.\" }\r\n  ]\r\n}\r\n<\/script>\r\n\r\n<!-- Structured data: FAQPage -->\r\n<script type=\"application\/ld+json\">\r\n{\r\n  \"@context\": \"https:\/\/schema.org\",\r\n  \"@type\": \"FAQPage\",\r\n  \"mainEntity\": [\r\n    {\r\n      \"@type\": \"Question\",\r\n      \"name\": \"Is PinSave Converter free to use?\",\r\n      \"acceptedAnswer\": { \"@type\": \"Answer\", \"text\": \"Yes. PinSave Converter is completely free, with no signup, no watermark and no limit on how many files you convert.\" }\r\n    },\r\n    {\r\n      \"@type\": \"Question\",\r\n      \"name\": \"Are my files uploaded to a server?\",\r\n      \"acceptedAnswer\": { \"@type\": \"Answer\", \"text\": \"No. All conversion happens locally in your browser using JavaScript. Your files are never uploaded, stored or sent to any server, which keeps them private.\" }\r\n    },\r\n    {\r\n      \"@type\": \"Question\",\r\n      \"name\": \"Which file formats does PinSave support?\",\r\n      \"acceptedAnswer\": { \"@type\": \"Answer\", \"text\": \"You can convert from PDF, DOCX, HEIC, SVG, JPG, PNG and WEBP, and export to JPG, PNG, WEBP, SVG or PDF.\" }\r\n    },\r\n    {\r\n      \"@type\": \"Question\",\r\n      \"name\": \"Can I convert a PDF to JPG online for free?\",\r\n      \"acceptedAnswer\": { \"@type\": \"Answer\", \"text\": \"Yes. Upload your PDF, choose JPG as the output format and click Convert. The first page of the PDF is rendered as a high-resolution image you can download instantly.\" }\r\n    },\r\n    {\r\n      \"@type\": \"Question\",\r\n      \"name\": \"Can I convert HEIC photos from an iPhone to JPG?\",\r\n      \"acceptedAnswer\": { \"@type\": \"Answer\", \"text\": \"Yes. PinSave decodes HEIC and HEIF photos directly in the browser and lets you export them as JPG or PNG so they open on any device.\" }\r\n    },\r\n    {\r\n      \"@type\": \"Question\",\r\n      \"name\": \"Does converting reduce image quality?\",\r\n      \"acceptedAnswer\": { \"@type\": \"Answer\", \"text\": \"You control this with the compression slider. Higher percentages keep more quality and produce larger files, while lower percentages shrink file size at the cost of some quality. PNG output is lossless.\" }\r\n    },\r\n    {\r\n      \"@type\": \"Question\",\r\n      \"name\": \"Do I need to install any software?\",\r\n      \"acceptedAnswer\": { \"@type\": \"Answer\", \"text\": \"No installation is required. PinSave Converter runs entirely in your web browser on desktop or mobile.\" }\r\n    }\r\n  ]\r\n}\r\n<\/script>\r\n\r\n<!-- PDF Input -->\r\n<script src=\"https:\/\/cdnjs.cloudflare.com\/ajax\/libs\/pdf.js\/2.16.105\/pdf.min.js\"><\/script>\r\n<script>pdfjsLib.GlobalWorkerOptions.workerSrc = 'https:\/\/cdnjs.cloudflare.com\/ajax\/libs\/pdf.js\/2.16.105\/pdf.worker.min.js';<\/script>\r\n\r\n<!-- DOCX Input -->\r\n<script src=\"https:\/\/cdnjs.cloudflare.com\/ajax\/libs\/mammoth\/1.6.0\/mammoth.browser.min.js\"><\/script>\r\n<script src=\"https:\/\/cdnjs.cloudflare.com\/ajax\/libs\/html2canvas\/1.4.1\/html2canvas.min.js\"><\/script>\r\n\r\n<!-- HEIC Input -->\r\n<script src=\"https:\/\/cdn.jsdelivr.net\/npm\/heic2any@0.0.4\/dist\/heic2any.min.js\"><\/script>\r\n\r\n<!-- PDF Output -->\r\n<script src=\"https:\/\/cdnjs.cloudflare.com\/ajax\/libs\/jspdf\/2.5.1\/jspdf.umd.min.js\"><\/script>\r\n\r\n<!-- DOCX Output -->\r\n<script src=\"https:\/\/unpkg.com\/docx@8.5.0\/build\/index.js\"><\/script>\r\n\r\n<style>\r\n  @import url('https:\/\/fonts.googleapis.com\/css2?family=Inter:wght@400;500;600;700;800&display=swap');\r\n\r\n  :root {\r\n    --primary: #4f46e5; --primary-hover: #4338ca; --primary-light: #e0e7ff;\r\n    --bg-main: #f8fafc; --surface: #ffffff;\r\n    --text-strong: #0f172a; --text-normal: #334155; --text-muted: #64748b;\r\n    --border: #e2e8f0; --border-hover: #cbd5e1;\r\n    --danger: #ef4444; --success: #10b981; --warning: #f59e0b;\r\n    --radius-sm: 6px; --radius-md: 12px; --radius-lg: 16px;\r\n    --shadow-sm: 0 1px 2px 0 rgb(0 0 0 \/ 0.05);\r\n    --shadow-md: 0 4px 6px -1px rgb(0 0 0 \/ 0.1), 0 2px 4px -2px rgb(0 0 0 \/ 0.1);\r\n  }\r\n\r\n  * { box-sizing: border-box; margin: 0; padding: 0; }\r\n  body { background-color: var(--bg-main); color: var(--text-normal); font-family: 'Inter', system-ui, sans-serif; -webkit-font-smoothing: antialiased; line-height: 1.5; }\r\n  :focus-visible { outline: 2px solid var(--primary); outline-offset: 2px; }\r\n\r\n  .container { max-width: 1000px; margin: 0 auto; padding: 40px 20px 80px; }\r\n  .header { text-align: center; margin-bottom: 40px; }\r\n  .brand { font-size: 28px; font-weight: 800; letter-spacing: -0.5px; background: linear-gradient(135deg, var(--primary), #9333ea); -webkit-background-clip: text; -webkit-text-fill-color: transparent; display: inline-block; margin-bottom: 16px; }\r\n  .header h1 { font-size: clamp(24px, 4vw, 36px); font-weight: 700; color: var(--text-strong); letter-spacing: -0.02em; margin-bottom: 12px; line-height: 1.2; }\r\n  .header p { font-size: 16px; color: var(--text-muted); max-width: 550px; margin: 0 auto; }\r\n\r\n  \/* Dropzone (icon container removed \u2014 clean text-only state before upload) *\/\r\n  .dropzone { background: var(--surface); border: 2px dashed var(--border); border-radius: var(--radius-lg); padding: 60px 20px; text-align: center; cursor: pointer; transition: all 0.2s ease; box-shadow: var(--shadow-sm); display: flex; flex-direction: column; align-items: center; justify-content: center; min-height: 200px; position: relative; }\r\n  .dropzone:hover { border-color: var(--primary-hover); background-color: #fcfdff; }\r\n  .dropzone.dragging { border-color: var(--primary); background-color: var(--primary-light); transform: scale(1.01); }\r\n  .dz-title { font-size: 18px; font-weight: 600; color: var(--text-strong); margin-bottom: 8px; }\r\n  .dz-title span { color: var(--primary); }\r\n  .dz-hint { font-size: 14px; color: var(--text-muted); }\r\n  .dz-error { margin-top: 16px; padding: 12px; background: #fef2f2; color: var(--danger); border-radius: var(--radius-sm); text-align: center; font-size: 14px; font-weight: 500; }\r\n\r\n  \/* Loader *\/\r\n  .loader { display: none; flex-direction: column; align-items: center; justify-content: center; position: absolute; inset: 0; background: rgba(255,255,255,0.9); border-radius: var(--radius-lg); z-index: 10; }\r\n  .spinner { width: 40px; height: 40px; border: 4px solid var(--border); border-top-color: var(--primary); border-radius: 50%; animation: spin 1s linear infinite; margin-bottom: 12px; }\r\n  @keyframes spin { to { transform: rotate(360deg); } }\r\n  .loader-text { font-size: 15px; font-weight: 500; color: var(--text-strong); }\r\n\r\n  \/* Workspace *\/\r\n  .workspace-panes { display: grid; grid-template-columns: 1fr 420px; gap: 32px; align-items: start; }\r\n  @media (max-width: 860px) { .workspace-panes { grid-template-columns: 1fr; } }\r\n\r\n  .preview-pane { display: flex; flex-direction: column; gap: 16px; }\r\n  .frame { position: relative; background-color: var(--surface); background-image: linear-gradient(45deg, #f1f5f9 25%, transparent 25%), linear-gradient(-45deg, #f1f5f9 25%, transparent 25%), linear-gradient(45deg, transparent 75%, #f1f5f9 75%), linear-gradient(-45deg, transparent 75%, #f1f5f9 75%); background-size: 20px 20px; background-position: 0 0, 0 10px, 10px -10px, -10px 0px; border: 1px solid var(--border); border-radius: var(--radius-lg); padding: 24px; display: flex; align-items: center; justify-content: center; min-height: 400px; box-shadow: var(--shadow-md); }\r\n  .frame img { max-width: 100%; max-height: 450px; object-fit: contain; border-radius: var(--radius-sm); box-shadow: var(--shadow-sm); }\r\n  .format-tag { position: absolute; bottom: 16px; left: 16px; background: rgba(15, 23, 42, 0.75); backdrop-filter: blur(4px); color: white; padding: 6px 12px; border-radius: 20px; font-size: 13px; font-weight: 500; }\r\n  \r\n  .controls-pane { background: var(--surface); border: 1px solid var(--border); border-radius: var(--radius-lg); padding: 32px; box-shadow: var(--shadow-md); display: flex; flex-direction: column; gap: 28px; }\r\n  .control-group { display: flex; flex-direction: column; gap: 10px; }\r\n  .control-label { font-size: 13px; font-weight: 600; color: var(--text-strong); text-transform: uppercase; display: flex; justify-content: space-between; align-items: center; }\r\n\r\n  .seg-group { display: flex; flex-wrap: wrap; gap: 6px; background: var(--bg-main); padding: 6px; border-radius: var(--radius-md); border: 1px solid var(--border); }\r\n  .seg-group button { flex: 1; min-width: 30%; background: transparent; border: none; padding: 10px 8px; font-size: 14px; font-weight: 600; color: var(--text-muted); border-radius: var(--radius-sm); cursor: pointer; transition: all 0.2s ease; }\r\n  .seg-group button.active { background: var(--surface); color: var(--primary); box-shadow: var(--shadow-sm); border: 1px solid var(--border); }\r\n  .seg-group button:disabled { opacity: 0.5; cursor: not-allowed; }\r\n\r\n  input[type=\"range\"] { -webkit-appearance: none; width: 100%; height: 6px; background: var(--bg-main); border-radius: 4px; outline: none; border: 1px solid var(--border); }\r\n  input[type=\"range\"]::-webkit-slider-thumb { -webkit-appearance: none; width: 20px; height: 20px; border-radius: 50%; background: var(--primary); cursor: pointer; border: 2px solid var(--surface); box-shadow: var(--shadow-sm); }\r\n  input[type=\"range\"]:disabled { opacity: 0.5; cursor: not-allowed; }\r\n\r\n  .size-compare { background: var(--bg-main); border-radius: var(--radius-md); padding: 16px; border: 1px solid var(--border); }\r\n  .size-row { display: flex; justify-content: space-between; font-size: 13px; margin-bottom: 6px; }\r\n  .size-row .label { color: var(--text-muted); font-weight: 500; }\r\n  .size-row .value { color: var(--text-strong); font-weight: 600; font-family: monospace; }\r\n  .progress-track { width: 100%; height: 6px; background: var(--border); border-radius: 4px; overflow: hidden; margin-bottom: 12px; }\r\n  .progress-track:last-child { margin-bottom: 0; }\r\n  .progress-fill { height: 100%; width: 0%; transition: width 0.3s ease; }\r\n  .progress-fill.orig { background: var(--text-muted); }\r\n  .progress-fill.new { background: var(--warning); }\r\n\r\n  .action-area { display: flex; flex-direction: column; gap: 12px; }\r\n  .primary-btn { width: 100%; background: var(--primary); color: white; border: none; border-radius: var(--radius-md); padding: 16px; font-size: 16px; font-weight: 600; cursor: pointer; display: flex; align-items: center; justify-content: center; gap: 8px; transition: all 0.2s ease; }\r\n  .primary-btn:hover:not(:disabled) { background: var(--primary-hover); transform: translateY(-1px); }\r\n  .secondary-btn { width: 100%; background: transparent; color: var(--primary); border: 2px solid var(--primary); border-radius: var(--radius-md); padding: 14px; font-size: 16px; font-weight: 600; cursor: pointer; display: flex; align-items: center; justify-content: center; gap: 8px; }\r\n  .secondary-btn:hover { background: var(--primary-light); }\r\n\r\n  .convert-progress-container { margin-bottom: 8px; display: flex; flex-direction: column; gap: 8px; }\r\n  .c-progress-bar { width: 100%; height: 10px; background: var(--border); border-radius: 6px; overflow: hidden; }\r\n  .c-progress-fill { height: 100%; width: 0%; background: var(--primary); transition: width 0.1s linear; }\r\n  .c-progress-text { font-size: 14px; color: var(--text-strong); font-weight: 500; text-align: center; }\r\n  \r\n  .footer { text-align: center; margin-top: 40px; font-size: 14px; color: var(--text-muted); }\r\n  #docxRenderArea { position: absolute; left: -9999px; width: 800px; background: white; padding: 40px; color: black; font-family: 'Times New Roman', serif; line-height: 1.6; font-size: 16px; }\r\n\r\n  \/* ---- SEO \/ content sections ---- *\/\r\n  .seo-section { max-width: 1000px; margin: 64px auto 0; padding: 0 20px; }\r\n  .seo-section h2 { font-size: 26px; font-weight: 700; color: var(--text-strong); letter-spacing: -0.01em; margin-bottom: 16px; }\r\n  .seo-section h3 { font-size: 18px; font-weight: 600; color: var(--text-strong); margin-bottom: 8px; }\r\n  .seo-section p { font-size: 15px; color: var(--text-normal); margin-bottom: 14px; }\r\n  .seo-intro { background: var(--surface); border: 1px solid var(--border); border-radius: var(--radius-lg); padding: 32px; box-shadow: var(--shadow-sm); }\r\n  .keyword-pills { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 16px; }\r\n  .keyword-pills span { background: var(--primary-light); color: var(--primary); font-size: 13px; font-weight: 600; padding: 6px 12px; border-radius: 20px; }\r\n\r\n  .steps-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(210px, 1fr)); gap: 20px; margin-top: 24px; }\r\n  .step-card { background: var(--surface); border: 1px solid var(--border); border-radius: var(--radius-lg); padding: 24px; box-shadow: var(--shadow-sm); position: relative; }\r\n  .step-num { width: 34px; height: 34px; border-radius: 50%; background: var(--primary); color: #fff; font-weight: 700; font-size: 15px; display: flex; align-items: center; justify-content: center; margin-bottom: 14px; }\r\n  .step-card h3 { font-size: 16px; margin-bottom: 6px; }\r\n  .step-card p { font-size: 14px; color: var(--text-muted); margin-bottom: 0; }\r\n\r\n  .format-table { width: 100%; border-collapse: collapse; margin-top: 20px; background: var(--surface); border-radius: var(--radius-lg); overflow: hidden; box-shadow: var(--shadow-sm); border: 1px solid var(--border); }\r\n  .format-table th, .format-table td { text-align: left; padding: 12px 16px; font-size: 14px; border-bottom: 1px solid var(--border); }\r\n  .format-table th { background: var(--bg-main); color: var(--text-strong); font-weight: 600; text-transform: uppercase; font-size: 12px; letter-spacing: 0.03em; }\r\n  .format-table tr:last-child td { border-bottom: none; }\r\n  .format-table td { color: var(--text-normal); }\r\n\r\n  .conversion-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(260px, 1fr)); gap: 20px; margin-top: 24px; }\r\n  .conversion-card { background: var(--surface); border: 1px solid var(--border); border-radius: var(--radius-lg); padding: 22px; box-shadow: var(--shadow-sm); }\r\n  .conversion-card h3 { font-size: 16px; margin-bottom: 8px; color: var(--primary); }\r\n  .conversion-card p { font-size: 14px; color: var(--text-muted); margin-bottom: 0; }\r\n\r\n  .faq-list { margin-top: 24px; display: flex; flex-direction: column; gap: 12px; }\r\n  .faq-item { background: var(--surface); border: 1px solid var(--border); border-radius: var(--radius-md); overflow: hidden; box-shadow: var(--shadow-sm); }\r\n  .faq-question { width: 100%; text-align: left; background: none; border: none; padding: 18px 20px; font-size: 15px; font-weight: 600; color: var(--text-strong); cursor: pointer; display: flex; justify-content: space-between; align-items: center; gap: 12px; }\r\n  .faq-question .chev { transition: transform 0.2s ease; flex-shrink: 0; color: var(--text-muted); }\r\n  .faq-item.open .faq-question .chev { transform: rotate(180deg); }\r\n  .faq-answer { max-height: 0; overflow: hidden; transition: max-height 0.25s ease; }\r\n  .faq-answer-inner { padding: 0 20px 18px; font-size: 14px; color: var(--text-normal); line-height: 1.6; }\r\n  .faq-item.open .faq-answer { max-height: 400px; }\r\n\r\n  .trust-note { margin-top: 28px; padding: 18px 20px; background: #f0fdf4; border: 1px solid #bbf7d0; border-radius: var(--radius-md); font-size: 14px; color: #166534; }\r\n\r\n  .site-footer { text-align: center; margin: 56px auto 0; padding: 24px 20px; color: var(--text-muted); font-size: 13px; border-top: 1px solid var(--border); max-width: 1000px; }\r\n<\/style>\r\n<\/head>\r\n<body>\r\n\r\n<div id=\"docxRenderArea\"><\/div>\r\n\r\n<div class=\"container\">\r\n  <header class=\"header\">\r\n   \r\n    <h1>Free Online PDF,JPG, PNG & Image Converter<\/h1>\r\n    <p>Convert seamlessly between PDF, DOCX, HEIC, and Images entirely in your browser \u2014 free, private, and with no signup required.<\/p>\r\n  <\/header>\r\n\r\n  <main id=\"workspace\">\r\n    <div class=\"dropzone\" id=\"dropzone\" tabindex=\"0\">\r\n      <div class=\"loader\" id=\"loader\">\r\n        <div class=\"spinner\"><\/div>\r\n        <div class=\"loader-text\" id=\"loaderText\">Loading file...<\/div>\r\n      <\/div>\r\n      <h3 class=\"dz-title\">Drop file here or <span>browse files<\/span><\/h3>\r\n      <p class=\"dz-hint\">Supports PDF, DOCX, HEIC, SVG, JPG, PNG, WEBP<\/p>\r\n    <\/div>\r\n    \r\n    <p class=\"dz-error\" id=\"dzError\" hidden><\/p>\r\n    <input type=\"file\" id=\"fileInput\" accept=\".pdf,.docx,.heic,.heif,.svg,.png,.jpg,.jpeg,.webp\" hidden \/>\r\n\r\n    <div class=\"workspace-panes\" id=\"panes\" hidden>\r\n      <div class=\"preview-pane\">\r\n        <div class=\"frame\" id=\"frame\">\r\n          <img id=\"previewImg\" alt=\"Preview\" \/>\r\n          <div class=\"format-tag\" id=\"formatTag\">ORIGINAL<\/div>\r\n        <\/div>\r\n      <\/div>\r\n\r\n      <div class=\"controls-pane\">\r\n        <div class=\"control-group\">\r\n          <span class=\"control-label\">Convert To<\/span>\r\n          <div class=\"seg-group\" id=\"formatGroup\">\r\n            <button type=\"button\" data-format=\"jpeg\" class=\"active\">JPG<\/button>\r\n            <button type=\"button\" data-format=\"png\">PNG<\/button>\r\n            <button type=\"button\" data-format=\"webp\">WEBP<\/button>\r\n            <button type=\"button\" data-format=\"svg\">SVG<\/button>\r\n            <button type=\"button\" data-format=\"pdf\">PDF<\/button>\r\n            \r\n          <\/div>\r\n        <\/div>\r\n\r\n        <div class=\"control-group\" id=\"qualityRow\">\r\n          <div class=\"control-label\">\r\n            <span>Image Compression<\/span>\r\n            <span style=\"color: var(--primary)\" id=\"qualityValue\">85%<\/span>\r\n          <\/div>\r\n          <input type=\"range\" id=\"qualityInput\" min=\"10\" max=\"100\" value=\"85\" \/>\r\n        <\/div>\r\n\r\n        <div class=\"size-compare\">\r\n          <div class=\"size-row\">\r\n            <span class=\"label\">Original Size<\/span><span class=\"value\" id=\"origSizeText\">\u2014<\/span>\r\n          <\/div>\r\n          <div class=\"progress-track\"><div class=\"progress-fill orig\" id=\"origBar\"><\/div><\/div>\r\n          <div class=\"size-row\" style=\"margin-top: 12px;\">\r\n            <span class=\"label\">Converted Size<\/span><span class=\"value\" id=\"newSizeText\"><\/span>\r\n          <\/div>\r\n          <div class=\"progress-track\"><div class=\"progress-fill new\" id=\"newBar\"><\/div><\/div>\r\n        <\/div>\r\n\r\n        <div class=\"action-area\">\r\n          <button class=\"primary-btn\" id=\"convertBtn\" type=\"button\">\r\n            Convert to <span id=\"btnExtConvert\" style=\"text-transform: uppercase; margin-left: 4px;\">JPG<\/span>\r\n          <\/button>\r\n\r\n          <div class=\"convert-progress-container\" id=\"progressContainer\" hidden>\r\n            <div class=\"c-progress-text\" id=\"progressText\"><\/div>\r\n            <div class=\"c-progress-bar\"><div class=\"c-progress-fill\" id=\"progressFill\"><\/div><\/div>\r\n          <\/div>\r\n\r\n          <div id=\"resultActions\" style=\"display: none; flex-direction: column; gap: 12px;\">\r\n            <button class=\"primary-btn\" id=\"downloadBtn\" type=\"button\">\r\n              <svg fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\" width=\"20\" height=\"20\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M4 16v1a3 3 0 003 3h10a3 3 0 003-3v-1m-4-4l-4 4m0 0l-4-4m4 4V4\"><\/path><\/svg>\r\n              Download <span id=\"btnExtDown\" style=\"text-transform: uppercase; margin-left: 4px;\">JPG<\/span>\r\n            <\/button>\r\n            <button class=\"secondary-btn\" id=\"convertAnotherBtn\" type=\"button\">Convert Another File<\/button>\r\n          <\/div>\r\n        <\/div>\r\n      <\/div>\r\n    <\/div>\r\n  <\/main>\r\n\r\n  <!-- ============ SEO \/ GEO CONTENT ============ -->\r\n\r\n  <section class=\"seo-section\" aria-labelledby=\"about-heading\">\r\n    <div class=\"seo-intro\">\r\n      <h2 id=\"about-heading\">A Free Online File Converter for PDF, DOCX, HEIC & Images<\/h2>\r\n      <p>PinSave Converter is a free online tool for converting <strong>PDF to JPG<\/strong>, <strong>DOCX to PDF<\/strong>, <strong>HEIC to JPG<\/strong>, and image formats like <strong>JPG, PNG, WEBP and SVG<\/strong> \u2014 all without uploading a single file to a server. Every conversion runs locally inside your browser using JavaScript, so your documents and photos stay private on your own device. There's no signup, no installation, no watermark, and no daily limit on how many files you can convert.<\/p>\r\n      <p>Whether you need to quickly turn an iPhone HEIC photo into a JPG you can share, convert a Word document into a PDF, or compress a large image before uploading it elsewhere, PinSave Converter handles it in a few clicks \u2014 completely free.<\/p>\r\n      <div class=\"keyword-pills\">\r\n        <span>PDF to JPG<\/span>\r\n        <span>DOCX to PDF<\/span>\r\n        <span>HEIC to JPG<\/span>\r\n        <span>Image to PDF<\/span>\r\n        <span>JPG to PNG<\/span>\r\n        <span>PNG to JPG<\/span>\r\n        <span>SVG to PNG<\/span>\r\n        <span>WEBP to JPG<\/span>\r\n        <span>Free File Converter<\/span>\r\n        <span>No Upload Required<\/span>\r\n      <\/div>\r\n    <\/div>\r\n  <\/section>\r\n\r\n  <section class=\"seo-section\" aria-labelledby=\"howto-heading\">\r\n    <h2 id=\"howto-heading\">How to Use PinSave Converter<\/h2>\r\n    <p>Converting a file takes less than a minute. Here's how it works:<\/p>\r\n    <div class=\"steps-grid\">\r\n      <div class=\"step-card\">\r\n        <div class=\"step-num\">1<\/div>\r\n        <h3>Upload your file<\/h3>\r\n        <p>Click the drop zone or drag and drop a PDF, DOCX, HEIC, SVG, JPG, PNG or WEBP file.<\/p>\r\n      <\/div>\r\n      <div class=\"step-card\">\r\n        <div class=\"step-num\">2<\/div>\r\n        <h3>Pick the output format<\/h3>\r\n        <p>Choose JPG, PNG, WEBP, SVG or PDF as the format you want to convert to.<\/p>\r\n      <\/div>\r\n      <div class=\"step-card\">\r\n        <div class=\"step-num\">3<\/div>\r\n        <h3>Adjust quality (optional)<\/h3>\r\n        <p>Use the compression slider to balance image quality against final file size.<\/p>\r\n      <\/div>\r\n      <div class=\"step-card\">\r\n        <div class=\"step-num\">4<\/div>\r\n        <h3>Convert<\/h3>\r\n        <p>Click \"Convert\" and PinSave processes the file instantly in your browser.<\/p>\r\n      <\/div>\r\n      <div class=\"step-card\">\r\n        <div class=\"step-num\">5<\/div>\r\n        <h3>Download<\/h3>\r\n        <p>Click \"Download\" to save the converted file straight to your device.<\/p>\r\n      <\/div>\r\n    <\/div>\r\n  <\/section>\r\n\r\n  <section class=\"seo-section\" aria-labelledby=\"formats-heading\">\r\n    <h2 id=\"formats-heading\">Supported Conversions<\/h2>\r\n    <p>PinSave Converter supports the most commonly needed document and image conversions:<\/p>\r\n    <table class=\"format-table\">\r\n      <thead>\r\n        <tr><th>From<\/th><th>To<\/th><th>Common use case<\/th><\/tr>\r\n      <\/thead>\r\n      <tbody>\r\n        <tr><td>PDF<\/td><td>JPG, PNG, WEBP, SVG<\/td><td>Turn a PDF page into an image for sharing or editing<\/td><\/tr>\r\n        <tr><td>DOCX<\/td><td>JPG, PNG, PDF<\/td><td>Convert a Word document to PDF or an image snapshot<\/td><\/tr>\r\n        <tr><td>HEIC \/ HEIF<\/td><td>JPG, PNG<\/td><td>Make iPhone photos viewable on any device<\/td><\/tr>\r\n        <tr><td>JPG \/ PNG \/ WEBP<\/td><td>JPG, PNG, WEBP, SVG, PDF<\/td><td>Change image format or compress file size<\/td><\/tr>\r\n        <tr><td>SVG<\/td><td>JPG, PNG, WEBP, PDF<\/td><td>Rasterize a vector graphic for use where SVG isn't supported<\/td><\/tr>\r\n      <\/tbody>\r\n    <\/table>\r\n  <\/section>\r\n\r\n  <!-- Individual keyword-targeted conversion sections for long-tail search terms -->\r\n  <section class=\"seo-section\" aria-labelledby=\"popular-heading\">\r\n    <h2 id=\"popular-heading\">Popular Conversions Explained<\/h2>\r\n    <div class=\"conversion-grid\">\r\n      <div class=\"conversion-card\">\r\n        <h3>PDF to JPG Converter<\/h3>\r\n        <p>Turn any PDF page into a JPG image in seconds. Useful for sharing a document as a picture, embedding a page in a presentation, or previewing content without opening a PDF reader.<\/p>\r\n      <\/div>\r\n      <div class=\"conversion-card\">\r\n        <h3>HEIC to JPG Converter<\/h3>\r\n        <p>iPhone photos are often saved as HEIC, which many apps and older devices can't open. Convert HEIC or HEIF photos to JPG or PNG so they open everywhere, without losing photo quality.<\/p>\r\n      <\/div>\r\n      <div class=\"conversion-card\">\r\n        <h3>DOCX to PDF Converter<\/h3>\r\n        <p>Convert a Word document into a PDF for a format that looks the same on every device, or export it as an image snapshot to paste into an email or chat.<\/p>\r\n      <\/div>\r\n      <div class=\"conversion-card\">\r\n        <h3>Image to PDF Converter<\/h3>\r\n        <p>Turn a JPG, PNG or WEBP photo into a PDF file \u2014 handy for submitting scanned documents, receipts, or ID photos where a PDF is required.<\/p>\r\n      <\/div>\r\n      <div class=\"conversion-card\">\r\n        <h3>PNG to JPG \/ JPG to PNG<\/h3>\r\n        <p>Switch between PNG and JPG depending on whether you need transparency (PNG) or a smaller file size (JPG) \u2014 with a compression slider to fine-tune the result.<\/p>\r\n      <\/div>\r\n      <div class=\"conversion-card\">\r\n        <h3>WEBP Converter<\/h3>\r\n        <p>Convert images to or from WEBP, the modern format used by most websites for faster page loads, without needing any design software.<\/p>\r\n      <\/div>\r\n    <\/div>\r\n  <\/section>\r\n\r\n  <section class=\"seo-section\" aria-labelledby=\"faq-heading\">\r\n    <h2 id=\"faq-heading\">Frequently Asked Questions<\/h2>\r\n    <div class=\"faq-list\" id=\"faqList\">\r\n      <div class=\"faq-item\">\r\n        <button class=\"faq-question\" type=\"button\">Is PinSave Converter free to use?<svg class=\"chev\" width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"><path d=\"M6 9l6 6 6-6\"\/><\/svg><\/button>\r\n        <div class=\"faq-answer\"><div class=\"faq-answer-inner\">Yes. PinSave Converter is completely free, with no signup, no watermark, and no limit on how many files you convert.<\/div><\/div>\r\n      <\/div>\r\n      <div class=\"faq-item\">\r\n        <button class=\"faq-question\" type=\"button\">Are my files uploaded to a server?<svg class=\"chev\" width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"><path d=\"M6 9l6 6 6-6\"\/><\/svg><\/button>\r\n        <div class=\"faq-answer\"><div class=\"faq-answer-inner\">No. All conversion happens locally in your browser using JavaScript. Your files are never uploaded, stored, or sent to any server, which keeps them private.<\/div><\/div>\r\n      <\/div>\r\n      <div class=\"faq-item\">\r\n        <button class=\"faq-question\" type=\"button\">Which file formats does PinSave support?<svg class=\"chev\" width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"><path d=\"M6 9l6 6 6-6\"\/><\/svg><\/button>\r\n        <div class=\"faq-answer\"><div class=\"faq-answer-inner\">You can convert from PDF, DOCX, HEIC, SVG, JPG, PNG and WEBP, and export to JPG, PNG, WEBP, SVG or PDF.<\/div><\/div>\r\n      <\/div>\r\n      <div class=\"faq-item\">\r\n        <button class=\"faq-question\" type=\"button\">Can I convert a PDF to JPG online for free?<svg class=\"chev\" width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"><path d=\"M6 9l6 6 6-6\"\/><\/svg><\/button>\r\n        <div class=\"faq-answer\"><div class=\"faq-answer-inner\">Yes. Upload your PDF, choose JPG as the output format, and click Convert. The first page of the PDF is rendered as a high-resolution image you can download instantly.<\/div><\/div>\r\n      <\/div>\r\n      <div class=\"faq-item\">\r\n        <button class=\"faq-question\" type=\"button\">Can I convert HEIC photos from an iPhone to JPG?<svg class=\"chev\" width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"><path d=\"M6 9l6 6 6-6\"\/><\/svg><\/button>\r\n        <div class=\"faq-answer\"><div class=\"faq-answer-inner\">Yes. PinSave decodes HEIC and HEIF photos directly in the browser and lets you export them as JPG or PNG so they open on any device.<\/div><\/div>\r\n      <\/div>\r\n      <div class=\"faq-item\">\r\n        <button class=\"faq-question\" type=\"button\">Does converting reduce image quality?<svg class=\"chev\" width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"><path d=\"M6 9l6 6 6-6\"\/><\/svg><\/button>\r\n        <div class=\"faq-answer\"><div class=\"faq-answer-inner\">You control this with the compression slider. Higher percentages keep more quality and produce larger files, while lower percentages shrink file size at the cost of some quality. PNG output is lossless.<\/div><\/div>\r\n      <\/div>\r\n      <div class=\"faq-item\">\r\n        <button class=\"faq-question\" type=\"button\">Do I need to install any software?<svg class=\"chev\" width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"><path d=\"M6 9l6 6 6-6\"\/><\/svg><\/button>\r\n        <div class=\"faq-answer\"><div class=\"faq-answer-inner\">No installation is required. PinSave Converter runs entirely in your web browser on desktop or mobile.<\/div><\/div>\r\n      <\/div>\r\n    <\/div>\r\n    <div class=\"trust-note\">\ud83d\udd12 Privacy note: PinSave Converter is independent and not affiliated with Adobe, Microsoft, or Apple. All processing happens on your device \u2014 your files are never sent anywhere.<\/div>\r\n  <\/section>\r\n\r\n  <footer class=\"site-footer\">\r\n    \r\n  <\/footer>\r\n<\/div>\r\n\r\n<script>\r\n(function(){\r\n  const dropzone = document.getElementById('dropzone'), fileInput = document.getElementById('fileInput');\r\n  const dzError = document.getElementById('dzError'), loader = document.getElementById('loader'), loaderText = document.getElementById('loaderText');\r\n  const panes = document.getElementById('panes'), previewImg = document.getElementById('previewImg'), formatTag = document.getElementById('formatTag');\r\n  const formatBtns = document.getElementById('formatGroup').querySelectorAll('button');\r\n  const qualityRow = document.getElementById('qualityRow'), qualityInput = document.getElementById('qualityInput'), qualityValue = document.getElementById('qualityValue');\r\n  const origSizeText = document.getElementById('origSizeText'), newSizeText = document.getElementById('newSizeText');\r\n  const origBar = document.getElementById('origBar'), newBar = document.getElementById('newBar');\r\n  const convertBtn = document.getElementById('convertBtn'), btnExtConvert = document.getElementById('btnExtConvert');\r\n  const progressContainer = document.getElementById('progressContainer'), progressText = document.getElementById('progressText'), progressFill = document.getElementById('progressFill');\r\n  const resultActions = document.getElementById('resultActions'), downloadBtn = document.getElementById('downloadBtn'), btnExtDown = document.getElementById('btnExtDown'), convertAnotherBtn = document.getElementById('convertAnotherBtn');\r\n  const docxRenderArea = document.getElementById('docxRenderArea');\r\n\r\n  let renderableImage = null, originalSize = 0, baseFileName = 'file', targetFormat = 'jpeg', currentOutputBlob = null, originalExt = '';\r\n\r\n  function formatBytes(bytes){\r\n    if (bytes === 0) return '0 B';\r\n    const k = 1024, sizes = ['B', 'KB', 'MB', 'GB'], i = Math.floor(Math.log(bytes) \/ Math.log(k));\r\n    return parseFloat((bytes \/ Math.pow(k, i)).toFixed(2)) + ' ' + sizes[i];\r\n  }\r\n  function showError(msg) { loader.style.display = 'none'; dzError.textContent = msg; dzError.hidden = false; }\r\n  function setInputsDisabled(disabled) {\r\n    formatBtns.forEach(btn => btn.disabled = disabled);\r\n    qualityInput.disabled = disabled;\r\n    if (disabled) qualityRow.style.opacity = '0.5'; else updateQualityRowOpacity();\r\n  }\r\n  function updateQualityRowOpacity() {\r\n    if (['png', 'svg', 'pdf', 'docx'].includes(targetFormat)) { qualityRow.style.opacity = '0.4'; qualityInput.disabled = true; } \r\n    else { qualityRow.style.opacity = '1'; qualityInput.disabled = false; }\r\n  }\r\n\r\n  \/* Safe local conversion utility - Replaces problematic fetch() dataUrl calls *\/\r\n  function dataURLtoArrayBuffer(dataurl) {\r\n    const bstr = window.atob(dataurl.split(',')[1]);\r\n    let n = bstr.length;\r\n    const u8arr = new Uint8Array(n);\r\n    while (n--) { u8arr[n] = bstr.charCodeAt(n); }\r\n    return u8arr.buffer;\r\n  }\r\n\r\n  async function processPDF(file) {\r\n    try {\r\n      const arrayBuffer = await file.arrayBuffer();\r\n      const pdf = await pdfjsLib.getDocument({data: arrayBuffer}).promise;\r\n      const page = await pdf.getPage(1);\r\n      const viewport = page.getViewport({scale: 2.0}); \r\n      const canvas = document.createElement('canvas'); const ctx = canvas.getContext('2d');\r\n      canvas.width = viewport.width; canvas.height = viewport.height;\r\n      ctx.fillStyle = \"white\"; ctx.fillRect(0, 0, canvas.width, canvas.height);\r\n      await page.render({canvasContext: ctx, viewport: viewport}).promise;\r\n      canvas.toBlob(blob => setupWorkspace(blob, file.size, file.name, 'pdf'), 'image\/png');\r\n    } catch (e) { showError(\"Failed to read PDF.\"); }\r\n  }\r\n\r\n  async function processDOCX(file) {\r\n    try {\r\n      const result = await mammoth.convertToHtml({arrayBuffer: await file.arrayBuffer()});\r\n      docxRenderArea.innerHTML = result.value || \"<p>No text found.<\/p>\";\r\n      setTimeout(async () => {\r\n        const canvas = await html2canvas(docxRenderArea, { scale: 2, backgroundColor: \"#ffffff\" });\r\n        canvas.toBlob(blob => { docxRenderArea.innerHTML = \"\"; setupWorkspace(blob, file.size, file.name, 'docx'); }, 'image\/png');\r\n      }, 100);\r\n    } catch (e) { showError(\"Failed to read DOCX file.\"); }\r\n  }\r\n\r\n  function processHEIC(file) {\r\n    if (typeof heic2any === \"undefined\") { showError(\"HEIC converter offline.\"); return; }\r\n    heic2any({ blob: file, toType: \"image\/png\" }).then(resBlob => setupWorkspace(Array.isArray(resBlob) ? resBlob[0] : resBlob, file.size, file.name, 'heic')).catch(e => showError(\"Could not convert HEIC.\"));\r\n  }\r\n\r\n  function setupWorkspace(drawableBlob, origSize, fileName, sourceExt) {\r\n    originalSize = origSize; baseFileName = fileName.replace(\/\\.[^.]+$\/, '') || 'file'; originalExt = sourceExt; formatTag.textContent = sourceExt.toUpperCase();\r\n    const img = new Image();\r\n    img.onload = function() {\r\n      renderableImage = img; previewImg.src = img.src; origSizeText.textContent = formatBytes(originalSize); origBar.style.width = '100%';\r\n      resetToConvertState(); dropzone.hidden = true; loader.style.display = 'none'; panes.hidden = false;\r\n    };\r\n    img.src = URL.createObjectURL(drawableBlob);\r\n  }\r\n\r\n  function handleFile(file) {\r\n    if (!file) return; dzError.hidden = true; loader.style.display = 'flex';\r\n    const ext = file.name.split('.').pop().toLowerCase();\r\n    if (ext === 'pdf' || file.type === 'application\/pdf') { loaderText.textContent = \"Parsing PDF...\"; processPDF(file); }\r\n    else if (ext === 'docx') { loaderText.textContent = \"Parsing Word Document...\"; processDOCX(file); }\r\n    else if (ext === 'heic' || ext === 'heif') { loaderText.textContent = \"Decoding HEIC...\"; processHEIC(file); }\r\n    else if (file.type.startsWith('image\/')) { loaderText.textContent = \"Loading image...\"; setupWorkspace(file, file.size, file.name, ext); }\r\n    else { showError(\"Unsupported file type.\"); }\r\n  }\r\n\r\n  function exportPDF(canvas) {\r\n    return new Promise((resolve) => {\r\n      const pdf = new window.jspdf.jsPDF({ orientation: canvas.width > canvas.height ? 'landscape' : 'portrait', unit: 'px', format: [canvas.width, canvas.height] });\r\n      pdf.addImage(canvas.toDataURL('image\/jpeg', 0.95), 'JPEG', 0, 0, canvas.width, canvas.height);\r\n      resolve(pdf.output('blob'));\r\n    });\r\n  }\r\n\r\n  async function exportDOCX(canvas) {\r\n    \/\/ BUG FIX: Compress to JPEG and convert safely via ArrayBuffer to prevent docx pack crash on large file sizes\r\n    const dataUrl = canvas.toDataURL('image\/jpeg', 0.85);\r\n    const arrayBuffer = dataURLtoArrayBuffer(dataUrl);\r\n    \r\n    let w = canvas.width, h = canvas.height;\r\n    if (w > 600) { h = Math.round((600 \/ w) * h); w = 600; } \/\/ Format width to A4 doc standard\r\n\r\n    const doc = new docx.Document({\r\n      sections: [{ children: [ new docx.Paragraph({ children: [ new docx.ImageRun({ data: arrayBuffer, transformation: { width: w, height: h } }) ]}) ]}]\r\n    });\r\n    return await docx.Packer.toBlob(doc);\r\n  }\r\n\r\n  function executeConversion() {\r\n    return new Promise(async (resolve, reject) => {\r\n      try {\r\n        const canvas = document.createElement('canvas'); const ctx = canvas.getContext('2d');\r\n        canvas.width = renderableImage.naturalWidth; canvas.height = renderableImage.naturalHeight;\r\n        if (['jpeg', 'pdf', 'docx'].includes(targetFormat)) { ctx.fillStyle = \"#ffffff\"; ctx.fillRect(0, 0, canvas.width, canvas.height); }\r\n        ctx.drawImage(renderableImage, 0, 0);\r\n\r\n        if (targetFormat === 'pdf') { resolve(await exportPDF(canvas)); return; }\r\n        if (targetFormat === 'docx') { resolve(await exportDOCX(canvas)); return; }\r\n        if (targetFormat === 'svg') {\r\n           if (originalExt === 'svg') { fetch(previewImg.src).then(res => res.blob()).then(resolve); } \r\n           else { resolve(new Blob([`<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"${canvas.width}\" height=\"${canvas.height}\"><image href=\"${canvas.toDataURL('image\/png')}\" width=\"${canvas.width}\" height=\"${canvas.height}\"\/><\/svg>`], {type: 'image\/svg+xml'})); }\r\n           return;\r\n        }\r\n        canvas.toBlob(resolve, targetFormat === 'jpeg' ? 'image\/jpeg' : `image\/${targetFormat}`, targetFormat === 'png' ? undefined : (qualityInput.valueAsNumber \/ 100));\r\n      } catch (err) { reject(err); }\r\n    });\r\n  }\r\n\r\n  convertBtn.addEventListener('click', async () => {\r\n    convertBtn.style.display = 'none'; progressContainer.hidden = false; setInputsDisabled(true);\r\n    let progress = 0; progressFill.style.width = '0%'; progressText.textContent = `Converting to ${targetFormat.toUpperCase()}... 0%`;\r\n\r\n    const interval = setInterval(() => {\r\n      progress += Math.random() * 15; if (progress > 85) progress = 85;\r\n      progressFill.style.width = `${progress}%`; progressText.textContent = `Converting... ${Math.round(progress)}%`;\r\n    }, 200);\r\n\r\n    try {\r\n      const [blob] = await Promise.all([ executeConversion(), new Promise(r => setTimeout(r, 1500)) ]);\r\n      \r\n      clearInterval(interval); progressFill.style.width = `100%`; progressText.textContent = `Complete!`;\r\n      currentOutputBlob = blob; newSizeText.textContent = formatBytes(blob.size);\r\n      const max = Math.max(originalSize, blob.size, 1);\r\n      origBar.style.width = (originalSize \/ max * 100) + '%'; newBar.style.width = (blob.size \/ max * 100) + '%';\r\n\r\n      setTimeout(() => { progressContainer.hidden = true; resultActions.style.display = 'flex'; setInputsDisabled(false); }, 400);\r\n    } catch (e) {\r\n      clearInterval(interval);\r\n      alert(\"Conversion failed. Please try again.\");\r\n      resetToConvertState(); setInputsDisabled(false);\r\n    }\r\n  });\r\n\r\n  function resetToConvertState() {\r\n    convertBtn.style.display = 'flex'; progressContainer.hidden = true; resultActions.style.display = 'none';\r\n    newSizeText.textContent = 'Pending...'; origBar.style.width = '100%'; newBar.style.width = '0%'; currentOutputBlob = null;\r\n  }\r\n  function resetEverything() { panes.hidden = true; dropzone.hidden = false; fileInput.value = ''; currentOutputBlob = null; renderableImage = null; resetToConvertState(); }\r\n\r\n  formatBtns.forEach(btn => {\r\n    btn.addEventListener('click', () => {\r\n      formatBtns.forEach(b => b.classList.remove('active')); btn.classList.add('active');\r\n      targetFormat = btn.dataset.format;\r\n      const lbl = targetFormat === 'jpeg' ? 'JPG' : targetFormat;\r\n      btnExtConvert.textContent = lbl; btnExtDown.textContent = lbl;\r\n      updateQualityRowOpacity(); resetToConvertState();\r\n    });\r\n  });\r\n\r\n  qualityInput.addEventListener('input', () => { qualityValue.textContent = qualityInput.value + '%'; resetToConvertState(); });\r\n  dropzone.addEventListener('click', () => fileInput.click());\r\n  fileInput.addEventListener('change', (e) => handleFile(e.target.files[0]));\r\n  ['dragenter', 'dragover'].forEach(evt => dropzone.addEventListener(evt, (e) => { e.preventDefault(); dropzone.classList.add('dragging'); }));\r\n  ['dragleave', 'drop'].forEach(evt => dropzone.addEventListener(evt, (e) => { e.preventDefault(); dropzone.classList.remove('dragging'); }));\r\n  dropzone.addEventListener('drop', (e) => handleFile(e.dataTransfer.files && e.dataTransfer.files[0]));\r\n  convertAnotherBtn.addEventListener('click', resetEverything);\r\n\r\n  downloadBtn.addEventListener('click', () => {\r\n    if (!currentOutputBlob) return;\r\n    const a = document.createElement('a'); a.href = URL.createObjectURL(currentOutputBlob);\r\n    a.download = `${baseFileName}-converted.${targetFormat === 'jpeg' ? 'jpg' : targetFormat}`;\r\n    document.body.appendChild(a); a.click(); document.body.removeChild(a);\r\n    setTimeout(() => URL.revokeObjectURL(a.href), 2000);\r\n  });\r\n\r\n  \/\/ FAQ accordion\r\n  document.querySelectorAll('.faq-question').forEach(btn => {\r\n    btn.addEventListener('click', () => {\r\n      const item = btn.closest('.faq-item');\r\n      item.classList.toggle('open');\r\n    });\r\n  });\r\n})();\r\n<\/script>\r\n<\/body>\r\n<\/html>\t\t\t\t<\/div>\n\t\t\n<\/div>\n\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>Free Online PDF, DOCX, HEIC &#038; Image Converter | PinSave Free Online PDF,JPG, PNG &#038; Image Converter Convert seamlessly between [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"elementor_header_footer","meta":{"_monsterinsights_skip_tracking":false,"site-sidebar-layout":"no-sidebar","site-content-layout":"","ast-site-content-layout":"full-width-container","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"","ast-breadcrumbs-content":"","ast-featured-img":"disabled","footer-sml-layout":"","ast-disable-related-posts":"","theme-transparent-header-meta":"","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"default","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"footnotes":""},"class_list":["post-83","page","type-page","status-publish","hentry"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.1.1 - aioseo.com -->\n\t<meta name=\"description\" content=\"Free Online PDF, DOCX, HEIC &amp; Image Converter | PinSave Free Online PDF,JPG, PNG &amp; Image Converter Convert seamlessly between PDF, DOCX, HEIC, and Images entirely in your browser \u2014 free, private, and with no signup required. Loading file... Drop file here or browse files Supports PDF, DOCX, HEIC, SVG, JPG, PNG, WEBP ORIGINAL Convert\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<link rel=\"canonical\" href=\"https:\/\/pinsave.site\/file-converter\/\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.1.1\" \/>\n\t\t<meta property=\"og:locale\" content=\"en_US\" \/>\n\t\t<meta property=\"og:site_name\" content=\"- Image Resizer, Cropper, Bg Remover , Compressor Tool\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"Converter -\" \/>\n\t\t<meta property=\"og:description\" content=\"Free Online PDF, DOCX, HEIC &amp; Image Converter | PinSave Free Online PDF,JPG, PNG &amp; Image Converter Convert seamlessly between PDF, DOCX, HEIC, and Images entirely in your browser \u2014 free, private, and with no signup required. Loading file... Drop file here or browse files Supports PDF, DOCX, HEIC, SVG, JPG, PNG, WEBP ORIGINAL Convert\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/pinsave.site\/file-converter\/\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/pinsave.site\/wp-content\/uploads\/2026\/09\/cropped-ChatGPT_Image_Aug_15__2026__02_08_20_PM-compressed-removebg-preview.png\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/pinsave.site\/wp-content\/uploads\/2026\/09\/cropped-ChatGPT_Image_Aug_15__2026__02_08_20_PM-compressed-removebg-preview.png\" \/>\n\t\t<meta property=\"og:image:width\" content=\"707\" \/>\n\t\t<meta property=\"og:image:height\" content=\"236\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2026-08-14T11:46:31+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2026-08-20T08:24:16+00:00\" \/>\n\t\t<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n\t\t<meta name=\"twitter:title\" content=\"Converter -\" \/>\n\t\t<meta name=\"twitter:description\" content=\"Free Online PDF, DOCX, HEIC &amp; Image Converter | PinSave Free Online PDF,JPG, PNG &amp; Image Converter Convert seamlessly between PDF, DOCX, HEIC, and Images entirely in your browser \u2014 free, private, and with no signup required. Loading file... Drop file here or browse files Supports PDF, DOCX, HEIC, SVG, JPG, PNG, WEBP ORIGINAL Convert\" \/>\n\t\t<meta name=\"twitter:image\" content=\"https:\/\/pinsave.site\/wp-content\/uploads\/2026\/09\/cropped-ChatGPT_Image_Aug_15__2026__02_08_20_PM-compressed-removebg-preview.png\" \/>\n\t\t<script type=\"application\/ld+json\" class=\"aioseo-schema\">\n\t\t\t{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/pinsave.site\\\/file-converter\\\/#breadcrumblist\",\"itemListElement\":[{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/pinsave.site#listItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/pinsave.site\",\"nextItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/pinsave.site\\\/file-converter\\\/#listItem\",\"name\":\"Converter\"}},{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/pinsave.site\\\/file-converter\\\/#listItem\",\"position\":2,\"name\":\"Converter\",\"previousItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/pinsave.site#listItem\",\"name\":\"Home\"}}]},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/pinsave.site\\\/#organization\",\"description\":\"Image Resizer, Cropper, Bg Remover , Compressor Tool\",\"url\":\"https:\\\/\\\/pinsave.site\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https:\\\/\\\/pinsave.site\\\/wp-content\\\/uploads\\\/2026\\\/09\\\/cropped-ChatGPT_Image_Aug_15__2026__02_08_20_PM-compressed-removebg-preview.png\",\"@id\":\"https:\\\/\\\/pinsave.site\\\/file-converter\\\/#organizationLogo\",\"width\":707,\"height\":236,\"caption\":\"pinsave.site logo\"},\"image\":{\"@id\":\"https:\\\/\\\/pinsave.site\\\/file-converter\\\/#organizationLogo\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/pinsave.site\\\/file-converter\\\/#webpage\",\"url\":\"https:\\\/\\\/pinsave.site\\\/file-converter\\\/\",\"name\":\"Converter -\",\"description\":\"Free Online PDF, DOCX, HEIC & Image Converter | PinSave Free Online PDF,JPG, PNG & Image Converter Convert seamlessly between PDF, DOCX, HEIC, and Images entirely in your browser \\u2014 free, private, and with no signup required. Loading file... Drop file here or browse files Supports PDF, DOCX, HEIC, SVG, JPG, PNG, WEBP ORIGINAL Convert\",\"inLanguage\":\"en-US\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/pinsave.site\\\/#website\"},\"breadcrumb\":{\"@id\":\"https:\\\/\\\/pinsave.site\\\/file-converter\\\/#breadcrumblist\"},\"datePublished\":\"2026-08-14T11:46:31+00:00\",\"dateModified\":\"2026-08-20T08:24:16+00:00\"},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/pinsave.site\\\/#website\",\"url\":\"https:\\\/\\\/pinsave.site\\\/\",\"description\":\"Image Resizer, Cropper, Bg Remover , Compressor Tool\",\"inLanguage\":\"en-US\",\"publisher\":{\"@id\":\"https:\\\/\\\/pinsave.site\\\/#organization\"}}]}\n\t\t<\/script>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"Converter -","description":"Free Online PDF, DOCX, HEIC & Image Converter | PinSave Free Online PDF,JPG, PNG & Image Converter Convert seamlessly between PDF, DOCX, HEIC, and Images entirely in your browser \u2014 free, private, and with no signup required. Loading file... Drop file here or browse files Supports PDF, DOCX, HEIC, SVG, JPG, PNG, WEBP ORIGINAL Convert","canonical_url":"https:\/\/pinsave.site\/file-converter\/","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"BreadcrumbList","@id":"https:\/\/pinsave.site\/file-converter\/#breadcrumblist","itemListElement":[{"@type":"ListItem","@id":"https:\/\/pinsave.site#listItem","position":1,"name":"Home","item":"https:\/\/pinsave.site","nextItem":{"@type":"ListItem","@id":"https:\/\/pinsave.site\/file-converter\/#listItem","name":"Converter"}},{"@type":"ListItem","@id":"https:\/\/pinsave.site\/file-converter\/#listItem","position":2,"name":"Converter","previousItem":{"@type":"ListItem","@id":"https:\/\/pinsave.site#listItem","name":"Home"}}]},{"@type":"Organization","@id":"https:\/\/pinsave.site\/#organization","description":"Image Resizer, Cropper, Bg Remover , Compressor Tool","url":"https:\/\/pinsave.site\/","logo":{"@type":"ImageObject","url":"https:\/\/pinsave.site\/wp-content\/uploads\/2026\/09\/cropped-ChatGPT_Image_Aug_15__2026__02_08_20_PM-compressed-removebg-preview.png","@id":"https:\/\/pinsave.site\/file-converter\/#organizationLogo","width":707,"height":236,"caption":"pinsave.site logo"},"image":{"@id":"https:\/\/pinsave.site\/file-converter\/#organizationLogo"}},{"@type":"WebPage","@id":"https:\/\/pinsave.site\/file-converter\/#webpage","url":"https:\/\/pinsave.site\/file-converter\/","name":"Converter -","description":"Free Online PDF, DOCX, HEIC & Image Converter | PinSave Free Online PDF,JPG, PNG & Image Converter Convert seamlessly between PDF, DOCX, HEIC, and Images entirely in your browser \u2014 free, private, and with no signup required. Loading file... Drop file here or browse files Supports PDF, DOCX, HEIC, SVG, JPG, PNG, WEBP ORIGINAL Convert","inLanguage":"en-US","isPartOf":{"@id":"https:\/\/pinsave.site\/#website"},"breadcrumb":{"@id":"https:\/\/pinsave.site\/file-converter\/#breadcrumblist"},"datePublished":"2026-08-14T11:46:31+00:00","dateModified":"2026-08-20T08:24:16+00:00"},{"@type":"WebSite","@id":"https:\/\/pinsave.site\/#website","url":"https:\/\/pinsave.site\/","description":"Image Resizer, Cropper, Bg Remover , Compressor Tool","inLanguage":"en-US","publisher":{"@id":"https:\/\/pinsave.site\/#organization"}}]},"og:locale":"en_US","og:site_name":"- Image Resizer, Cropper, Bg Remover , Compressor Tool","og:type":"article","og:title":"Converter -","og:description":"Free Online PDF, DOCX, HEIC &amp; Image Converter | PinSave Free Online PDF,JPG, PNG &amp; Image Converter Convert seamlessly between PDF, DOCX, HEIC, and Images entirely in your browser \u2014 free, private, and with no signup required. Loading file... Drop file here or browse files Supports PDF, DOCX, HEIC, SVG, JPG, PNG, WEBP ORIGINAL Convert","og:url":"https:\/\/pinsave.site\/file-converter\/","og:image":"https:\/\/pinsave.site\/wp-content\/uploads\/2026\/09\/cropped-ChatGPT_Image_Aug_15__2026__02_08_20_PM-compressed-removebg-preview.png","og:image:secure_url":"https:\/\/pinsave.site\/wp-content\/uploads\/2026\/09\/cropped-ChatGPT_Image_Aug_15__2026__02_08_20_PM-compressed-removebg-preview.png","og:image:width":707,"og:image:height":236,"article:published_time":"2026-08-14T11:46:31+00:00","article:modified_time":"2026-08-20T08:24:16+00:00","twitter:card":"summary_large_image","twitter:title":"Converter -","twitter:description":"Free Online PDF, DOCX, HEIC &amp; Image Converter | PinSave Free Online PDF,JPG, PNG &amp; Image Converter Convert seamlessly between PDF, DOCX, HEIC, and Images entirely in your browser \u2014 free, private, and with no signup required. Loading file... Drop file here or browse files Supports PDF, DOCX, HEIC, SVG, JPG, PNG, WEBP ORIGINAL Convert","twitter:image":"https:\/\/pinsave.site\/wp-content\/uploads\/2026\/09\/cropped-ChatGPT_Image_Aug_15__2026__02_08_20_PM-compressed-removebg-preview.png"},"aioseo_meta_data":{"post_id":"83","title":null,"description":null,"keywords":null,"keyphrases":null,"focus_keyword":null,"additional_keywords":null,"truseo_locale":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_custom_url":null,"og_image_custom_fields":null,"og_image_url":null,"og_image_width":null,"og_image_height":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_image_url":null,"twitter_title":null,"twitter_description":null,"schema_type":"default","schema_type_options":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"limit_modified_date":false,"ai":null,"breadcrumb_settings":null,"seo_analyzer_scan_date":null,"created":"2026-09-05 16:07:12","updated":"2026-09-05 16:07:12"},"aioseo_breadcrumb":"<div class=\"aioseo-breadcrumbs\"><span class=\"aioseo-breadcrumb\">\n\t\t\t<a href=\"https:\/\/pinsave.site\" title=\"Home\">Home<\/a>\n\t\t<\/span><span class=\"aioseo-breadcrumb-separator\">&raquo;<\/span><span class=\"aioseo-breadcrumb\">\n\t\t\tConverter\n\t\t<\/span><\/div>","aioseo_breadcrumb_json":[{"label":"Home","link":"https:\/\/pinsave.site"},{"label":"Converter","link":"https:\/\/pinsave.site\/file-converter\/"}],"_links":{"self":[{"href":"https:\/\/pinsave.site\/wp-json\/wp\/v2\/pages\/83","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/pinsave.site\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/pinsave.site\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/pinsave.site\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/pinsave.site\/wp-json\/wp\/v2\/comments?post=83"}],"version-history":[{"count":35,"href":"https:\/\/pinsave.site\/wp-json\/wp\/v2\/pages\/83\/revisions"}],"predecessor-version":[{"id":320,"href":"https:\/\/pinsave.site\/wp-json\/wp\/v2\/pages\/83\/revisions\/320"}],"wp:attachment":[{"href":"https:\/\/pinsave.site\/wp-json\/wp\/v2\/media?parent=83"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}