{"id":628,"date":"2024-12-17T09:00:40","date_gmt":"2024-12-17T09:00:40","guid":{"rendered":"https:\/\/textsnapper.com\/?page_id=628"},"modified":"2025-06-02T16:37:14","modified_gmt":"2025-06-02T16:37:14","slug":"konto","status":"publish","type":"page","link":"https:\/\/textsnapper.com\/en\/konto\/","title":{"rendered":"Account"},"content":{"rendered":"<div data-elementor-type=\"wp-page\" data-elementor-id=\"628\" class=\"elementor elementor-628\" data-elementor-post-type=\"page\">\n\t\t\t\t<div class=\"elementor-element elementor-element-daf3e10 e-flex e-con-boxed e-con e-parent\" data-id=\"daf3e10\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t<div class=\"elementor-element elementor-element-feaea20 e-con-full e-flex e-con e-child\" data-id=\"feaea20\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-aa274f1 e-con-full e-flex e-con e-child\" data-id=\"aa274f1\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-37e1eea elementor-widget elementor-widget-shortcode\" data-id=\"37e1eea\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"shortcode.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-shortcode\">[pmpro_account]<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-9a1843f elementor-widget elementor-widget-html\" data-id=\"9a1843f\" 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<div id=\"textsnp-invoices-widget\">\r\n  <h2 style=\"color:#222222; font-family:'Atkinson Hyperlegible', Arial, sans-serif; font-size:32px;\">\r\n    My invoices\r\n  <\/h2>\r\n  <div id=\"invoices-container\">Lade Rechnungen...<\/div>\r\n<\/div>\r\n\r\n<style>\r\n\r\n#textsnp-invoices-widget {\r\n  font-family: 'Atkinson Hyperlegible', Arial, sans-serif;\r\n  max-width: 600px;\r\n}\r\n\r\n.invoice-box {\r\n  background-color: #ffffff;\r\n  border: 1px solid #e2e2e2;\r\n  border-radius: 6px;\r\n  padding: 15px 20px;\r\n  margin-top: 15px;\r\n  box-shadow: 0 4px 6px rgba(0,0,0,0.08);\r\n  display: flex;\r\n  align-items: center;\r\n  justify-content: space-between;\r\n}\r\n\r\n.invoice-box a {\r\n  color: #0066cc;\r\n  text-decoration: none;\r\n  font-weight: bold;\r\n  font-size: 16px;\r\n}\r\n\r\n.invoice-box a:hover {\r\n  text-decoration: underline;\r\n}\r\n\r\n.invoice-number {\r\n  font-size: 18px;\r\n  font-weight: bold;\r\n}\r\n\r\n.no-invoices {\r\n  color: #555;\r\n  padding: 15px;\r\n}\r\n<\/style>\r\n\r\n<script>\r\ndocument.addEventListener('DOMContentLoaded', function() {\r\n    fetch(window.ajaxurl, {\r\n        method: 'POST',\r\n        credentials: 'include',\r\n        headers: { \"Content-Type\": \"application\/x-www-form-urlencoded\" },\r\n        body: new URLSearchParams({ action: 'textsnp_get_my_invoices' })\r\n    })\r\n    .then(response => response.json())\r\n    .then(result => {\r\n        const container = document.getElementById('invoices-container');\r\n\r\n        if (!result.success || !result.data.length) {\r\n            container.innerHTML = '<div class=\"no-invoices\">Keine Rechnungen verf\u00fcgbar oder du bist nicht angemeldet.<\/div>';\r\n            return;\r\n        }\r\n\r\n        container.innerHTML = '';\r\n        result.data.forEach(invoice => {\r\n            const invoiceElement = document.createElement('div');\r\n            invoiceElement.className = 'invoice-box';\r\n            invoiceElement.innerHTML = `\r\n              <div style=\"font-size: 18px; font-weight: bold;\">\r\n                Rechnung Nr. ${invoice.invoice_number}\r\n              <\/div>\r\n              <div style=\"margin-top:15px;\">\r\n                <a href=\"${invoice.pdf_url}\" target=\"_blank\">Herunterladen<\/a>\r\n              <\/div>\r\n            `;\r\n            container.appendChild(invoiceElement);\r\n        });\r\n    })\r\n    .catch(error => {\r\n        document.getElementById('invoices-container').innerHTML = '<div class=\"no-invoices\">Fehler beim Laden der Rechnungen.<\/div>';\r\n    });\r\n});\r\n<\/script>\r\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-c2b3840 elementor-widget elementor-widget-html\" data-id=\"c2b3840\" 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<div id=\"tts-usage-widget\">\n  <h2 style=\"color:#222222; font-family:'Atkinson Hyperlegible', Arial, sans-serif; font-size:32px;\">\n    My Monthly TTS Usage\n  <\/h2>\n  <div id=\"credit-usage-container\">Loading data...<\/div>\n  <div id=\"ocr-usage-container\" style=\"margin-top:10px;\">Lade Upload-Limits...<\/div>\n  <div id=\"upgrade-button-container\" style=\"display:none; margin-top:10px;\">\n    <a href=\"https:\/\/textsnapper.com\/en\/pricing\/\" class=\"upgrade-btn\">upgrade now<\/a>\n  <\/div>\n<\/div>\n\n<style>\n#tts-usage-widget {\n  font-family: 'Atkinson Hyperlegible', Arial, sans-serif;\n  max-width: 600px;\n}\n\n.usage-box {\n  background-color: #ffffff;\n  border: 1px solid #e2e2e2;\n  border-radius: 6px;\n  padding: 15px 20px;\n  margin-top: 15px;\n  box-shadow: 0 4px 6px rgba(0,0,0,0.08);\n}\n\n.usage-details {\n  font-size: 18px;\n  margin-bottom: 10px;\n}\n\n.progress-bar {\n  width: 100%;\n  background-color: #e0e0e0;\n  border-radius: 10px;\n  overflow: hidden;\n}\n\n.progress-fill {\n  height: 15px;\n  width: 0;\n  background-color: #4CAF50;\n  transition: width 0.5s ease-in-out;\n}\n\n.warning {\n  color: #f44336;\n  font-weight: bold;\n  margin-top: 10px;\n}\n\n.unlimited {\n  color: #4CAF50;\n  font-weight: bold;\n  margin-top: 10px;\n}\n\n.upgrade-btn {\n  display: inline-block;\n  padding: 10px 20px;\n  background: #2F5591;\n  color: #FFFFFF;\n  font-weight: bold;\n  border: none;\n  border-radius: 4px;\n  text-decoration: none;\n  cursor: pointer;\n  transition: background 0.3s, transform 0.2s ease;\n}\n.upgrade-btn:hover {\n  background: #24467a;\n  transform: translateY(-2px);\n}\n<\/style>\n\n<script>\ndocument.addEventListener('DOMContentLoaded', function() {\n  const lang = document.documentElement.lang && document.documentElement.lang.startsWith('en') ? 'en' : 'de';\n  const t = (de, en) => lang === 'en' ? en : de;\n\n  const creditContainer = document.getElementById('credit-usage-container');\n  const ocrContainer = document.getElementById('ocr-usage-container');\n  const upgradeBtnContainer = document.getElementById('upgrade-button-container');\n  let showUpgradeButton = false;\n\n  function setUpgradeBtnVisibility() {\n    upgradeBtnContainer.style.display = showUpgradeButton ? 'block' : 'none';\n  }\n\n  function updateCreditUsage() {\n    fetch(window.ajaxurl, {\n      method: 'POST',\n      credentials: 'include',\n      headers: { \"Content-Type\": \"application\/x-www-form-urlencoded\" },\n      body: new URLSearchParams({ action: 'get_user_credit_count' })\n    })\n    .then(res => res.json())\n    .then(data => {\n      if (!data.success) {\n        creditContainer.innerHTML = `<div class=\"usage-box\">${t('Fehler beim Laden der Daten.', 'Error loading data.')}<\/div>`;\n        return;\n      }\n\n      const monthlyRemaining = data.data.monthly_credits_remaining;\n      const packageRemaining = data.data.package_credits_remaining;\n      const totalRemaining = monthlyRemaining + packageRemaining;\n\n      let contentHtml = `\n        <div class=\"usage-box\">\n          <div class=\"usage-details\"><strong>${t('Monatliche Credits verbleibend:', 'Monthly credits left:')}<\/strong> ${monthlyRemaining.toLocaleString()}<\/div>\n          <div class=\"usage-details\"><strong>${t('Paket-Credits verbleibend:', 'Package credits left:')}<\/strong> ${packageRemaining.toLocaleString()}<\/div>\n          <div class=\"usage-details\"><strong>${t('Gesamt verf\u00fcgbare Credits:', 'Total available credits:')}<\/strong> ${totalRemaining.toLocaleString()}<\/div>\n      `;\n\n      const maxLimit = (monthlyRemaining === -1) ? -1 : Math.max(monthlyRemaining, packageRemaining);\n      let percent = 0;\n      if (maxLimit > 0) {\n        percent = Math.min(100, ((maxLimit - totalRemaining) \/ maxLimit) * 100);\n      }\n\n      contentHtml += `\n          <div class=\"progress-bar\">\n            <div class=\"progress-fill\" style=\"width:${percent}%\"><\/div>\n          <\/div>\n          ${(totalRemaining <= 10000 && totalRemaining >= 0) ? `<div class=\"warning\">\u26a0\ufe0f ${t('Dein Credit-Limit ist bald erreicht!', 'Credit limit almost reached!')}<\/div>` : ''}\n      `;\n\n      if (monthlyRemaining <= 0 && packageRemaining <= 0) {\n        contentHtml += `<div class=\"warning\">\u26a0\ufe0f ${t('Du hast keine Credits mehr verf\u00fcgbar. Bitte Credits nachkaufen oder Limit erh\u00f6hen.', 'You have no credits left. Please purchase credits or upgrade your limit.')}<\/div>`;\n        showUpgradeButton = true;\n      }\n\n      contentHtml += '<\/div>';\n      creditContainer.innerHTML = contentHtml;\n      setUpgradeBtnVisibility();\n    })\n    .catch(() => {\n      creditContainer.innerHTML = `<div class=\"usage-box\">${t('Fehler beim Laden der Daten.', 'Error loading data.')}<\/div>`;\n    });\n  }\n\n  function updateOCRUsage() {\n    fetch(window.ajaxurl, {\n      method: 'POST',\n      credentials: 'include',\n      headers: { \"Content-Type\": \"application\/x-www-form-urlencoded\" },\n      body: new URLSearchParams({ action: 'get_user_ocr_count' })\n    })\n    .then(res => res.json())\n    .then(data => {\n      if (!data.success) {\n        ocrContainer.innerHTML = `<div class=\"usage-box\">${t('Fehler beim Laden der Upload-Limits.', 'Error loading upload limits.')}<\/div>`;\n        return;\n      }\n      const ocrLimit = data.data.ocr_limit;\n      const usedOCR = data.data.used_ocr || 0;\n\n      let ocrLeft = (ocrLimit === -1) ? -1 : (ocrLimit - usedOCR);\n\n      let ocrHtml = `<div class=\"usage-box\" style=\"margin-top:0;\">`;\n\n      if (ocrLimit === -1) {\n        ocrHtml += `<span class=\"unlimited\">${t('Verf\u00fcgbare Uploads: unbegrenzt \u2714\ufe0f', 'Available uploads: unlimited \u2714\ufe0f')}<\/span>`;\n      } else if (ocrLeft <= 0) {\n        ocrHtml += `<span class=\"warning\">\u26a0\ufe0f ${t('Keine Uploads mehr verf\u00fcgbar.', 'No uploads available.')}<\/span>`;\n        showUpgradeButton = true;\n      } else {\n        ocrHtml += `<span><strong>${t('Uploads verf\u00fcgbar diesen Monat:', 'Uploads available this month:')}<\/strong> ${ocrLeft}<\/span>`;\n        if (ocrLeft <= 1) {\n          ocrHtml += `<br><span class=\"warning\">\u26a0\ufe0f ${t('Upload-Limit fast erreicht!', 'Upload limit almost reached!')}<\/span>`;\n          showUpgradeButton = true;\n        }\n      }\n      ocrHtml += '<\/div>';\n      ocrContainer.innerHTML = ocrHtml;\n      setUpgradeBtnVisibility();\n    })\n    .catch(() => {\n      ocrContainer.innerHTML = `<div class=\"usage-box\">${t('Fehler beim Laden der Upload-Limits.', 'Error loading upload limits.')}<\/div>`;\n    });\n  }\n\n  updateCreditUsage();\n  updateOCRUsage();\n\n  document.addEventListener('ttsUsageUpdated', updateCreditUsage);\n  document.addEventListener('ocrUsageUpdated', updateOCRUsage);\n});\n<\/script>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-c961633 e-con-full e-flex e-con e-child\" data-id=\"c961633\" data-element_type=\"container\" data-e-type=\"container\">\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>","protected":false},"excerpt":{"rendered":"<p>[pmpro_account] Meine Rechnungen Lade Rechnungen&#8230; Meine monatliche TTS-Nutzung Lade Daten&#8230; Lade Upload-Limits&#8230; Jetzt upgraden<\/p>","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"page-templates\/template-pagebuilder-full-width.php","meta":{"neve_meta_sidebar":"","neve_meta_container":"","neve_meta_enable_content_width":"","neve_meta_content_width":0,"neve_meta_title_alignment":"","neve_meta_author_avatar":"","neve_post_elements_order":"","neve_meta_disable_header":"","neve_meta_disable_footer":"","neve_meta_disable_title":"","footnotes":""},"class_list":["post-628","page","type-page","status-publish","hentry"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.4 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Konto - TextSnapper<\/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:\/\/textsnapper.com\/en\/konto\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Konto - TextSnapper\" \/>\n<meta property=\"og:description\" content=\"[pmpro_account] Meine Rechnungen Lade Rechnungen&#8230; Meine monatliche TTS-Nutzung Lade Daten&#8230; Lade Upload-Limits&#8230; Jetzt upgraden\" \/>\n<meta property=\"og:url\" content=\"https:\/\/textsnapper.com\/en\/konto\/\" \/>\n<meta property=\"og:site_name\" content=\"TextSnapper\" \/>\n<meta property=\"article:modified_time\" content=\"2025-06-02T16:37:14+00:00\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data1\" content=\"1 minute\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/textsnapper.com\\\/konto\\\/\",\"url\":\"https:\\\/\\\/textsnapper.com\\\/konto\\\/\",\"name\":\"Konto - TextSnapper\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/textsnapper.com\\\/#website\"},\"datePublished\":\"2024-12-17T09:00:40+00:00\",\"dateModified\":\"2025-06-02T16:37:14+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/textsnapper.com\\\/konto\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/textsnapper.com\\\/konto\\\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/textsnapper.com\\\/konto\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/textsnapper.com\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Konto\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/textsnapper.com\\\/#website\",\"url\":\"https:\\\/\\\/textsnapper.com\\\/\",\"name\":\"TextSnapper\",\"description\":\"Texte aus Bildern vorlesen, \u00fcbersetzen und einfach h\u00f6ren.\",\"publisher\":{\"@id\":\"https:\\\/\\\/textsnapper.com\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/textsnapper.com\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/textsnapper.com\\\/#organization\",\"name\":\"Textsnapper\",\"url\":\"https:\\\/\\\/textsnapper.com\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/textsnapper.com\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/textsnapper.com\\\/wp-content\\\/uploads\\\/2024\\\/12\\\/cropped-cropped-cropped-textsnapper.png\",\"contentUrl\":\"https:\\\/\\\/textsnapper.com\\\/wp-content\\\/uploads\\\/2024\\\/12\\\/cropped-cropped-cropped-textsnapper.png\",\"width\":200,\"height\":200,\"caption\":\"Textsnapper\"},\"image\":{\"@id\":\"https:\\\/\\\/textsnapper.com\\\/#\\\/schema\\\/logo\\\/image\\\/\"}}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Konto - TextSnapper","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:\/\/textsnapper.com\/en\/konto\/","og_locale":"en_US","og_type":"article","og_title":"Konto - TextSnapper","og_description":"[pmpro_account] Meine Rechnungen Lade Rechnungen&#8230; Meine monatliche TTS-Nutzung Lade Daten&#8230; Lade Upload-Limits&#8230; Jetzt upgraden","og_url":"https:\/\/textsnapper.com\/en\/konto\/","og_site_name":"TextSnapper","article_modified_time":"2025-06-02T16:37:14+00:00","twitter_card":"summary_large_image","twitter_misc":{"Est. reading time":"1 minute"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/textsnapper.com\/konto\/","url":"https:\/\/textsnapper.com\/konto\/","name":"Konto - TextSnapper","isPartOf":{"@id":"https:\/\/textsnapper.com\/#website"},"datePublished":"2024-12-17T09:00:40+00:00","dateModified":"2025-06-02T16:37:14+00:00","breadcrumb":{"@id":"https:\/\/textsnapper.com\/konto\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/textsnapper.com\/konto\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/textsnapper.com\/konto\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/textsnapper.com\/"},{"@type":"ListItem","position":2,"name":"Konto"}]},{"@type":"WebSite","@id":"https:\/\/textsnapper.com\/#website","url":"https:\/\/textsnapper.com\/","name":"TextSnapper","description":"Texte aus Bildern vorlesen, \u00fcbersetzen und einfach h\u00f6ren.","publisher":{"@id":"https:\/\/textsnapper.com\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/textsnapper.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/textsnapper.com\/#organization","name":"Textsnapper","url":"https:\/\/textsnapper.com\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/textsnapper.com\/#\/schema\/logo\/image\/","url":"https:\/\/textsnapper.com\/wp-content\/uploads\/2024\/12\/cropped-cropped-cropped-textsnapper.png","contentUrl":"https:\/\/textsnapper.com\/wp-content\/uploads\/2024\/12\/cropped-cropped-cropped-textsnapper.png","width":200,"height":200,"caption":"Textsnapper"},"image":{"@id":"https:\/\/textsnapper.com\/#\/schema\/logo\/image\/"}}]}},"_links":{"self":[{"href":"https:\/\/textsnapper.com\/en\/wp-json\/wp\/v2\/pages\/628","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/textsnapper.com\/en\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/textsnapper.com\/en\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/textsnapper.com\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/textsnapper.com\/en\/wp-json\/wp\/v2\/comments?post=628"}],"version-history":[{"count":79,"href":"https:\/\/textsnapper.com\/en\/wp-json\/wp\/v2\/pages\/628\/revisions"}],"predecessor-version":[{"id":10194,"href":"https:\/\/textsnapper.com\/en\/wp-json\/wp\/v2\/pages\/628\/revisions\/10194"}],"wp:attachment":[{"href":"https:\/\/textsnapper.com\/en\/wp-json\/wp\/v2\/media?parent=628"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}