{"id":90,"date":"2026-03-17T12:36:16","date_gmt":"2026-03-17T11:36:16","guid":{"rendered":"https:\/\/caselabel.baer-live.com\/?page_id=90"},"modified":"2026-03-17T21:21:16","modified_gmt":"2026-03-17T20:21:16","slug":"dhl-converter","status":"publish","type":"page","link":"https:\/\/caselabel.baer-live.com\/?page_id=90","title":{"rendered":"DHL Converter"},"content":{"rendered":"<div data-colibri-id=\"90-c1\" class=\"style-365 style-local-90-c1 position-relative\">\r\n  <!---->\r\n  <div data-colibri-component=\"section\" data-colibri-id=\"90-c2\" id=\"initial-content\" class=\"h-section h-section-global-spacing d-flex align-items-lg-center align-items-md-center align-items-center style-366 style-local-90-c2 position-relative\">\r\n    <!---->\r\n    <!---->\r\n    <div class=\"h-section-grid-container h-section-boxed-container\">\r\n      <!---->\r\n      <div data-colibri-id=\"90-c3\" class=\"h-row-container gutters-row-lg-2 gutters-row-md-2 gutters-row-0 gutters-row-v-lg-2 gutters-row-v-md-2 gutters-row-v-2 style-367 style-local-90-c3 position-relative\">\r\n        <!---->\r\n        <div class=\"h-row justify-content-lg-center justify-content-md-center justify-content-center align-items-lg-stretch align-items-md-stretch align-items-stretch gutters-col-lg-2 gutters-col-md-2 gutters-col-0 gutters-col-v-lg-2 gutters-col-v-md-2 gutters-col-v-2\">\r\n          <!---->\r\n          <div class=\"h-column h-column-container d-flex h-col-lg-auto h-col-md-auto h-col-auto style-368-outer style-local-90-c4-outer\">\r\n            <div data-colibri-id=\"90-c4\" class=\"d-flex h-flex-basis h-column__inner h-px-lg-2 h-px-md-2 h-px-2 v-inner-lg-2 v-inner-md-2 v-inner-2 style-368 style-local-90-c4 position-relative\">\r\n              <!---->\r\n              <!---->\r\n              <div class=\"w-100 h-y-container h-column__content h-column__v-align flex-basis-100 align-self-lg-start align-self-md-start align-self-start\">\r\n                <!---->\r\n                <div data-colibri-id=\"90-c5\" class=\"style-369 style-local-90-c5 position-relative h-element\">\r\n                  <!---->\r\n                  <div>\r\n                    \r\n\r\n\r\n\r\n                    <meta charset=\"UTF-8\">\r\n                    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\r\n                    <title>A4 PDF \u2192 obere H\u00e4lfte als A5<\/title>\r\n                    <script src=\"https:\/\/unpkg.com\/pdf-lib\/dist\/pdf-lib.min.js\"><\/script>\r\n                    <style>\r\n                      :root {\r\n                        --bg: #f5f7fb;\r\n                        --card: #ffffff;\r\n                        --text: #18212f;\r\n                        --muted: #5d6b82;\r\n                        --border: #d8dfeb;\r\n                        --accent: #0b57d0;\r\n                        --accent-hover: #0848ad;\r\n                        --success: #0f9d58;\r\n                        --danger: #c62828;\r\n                        --shadow: 0 12px 28px rgba(24, 33, 47, 0.08);\r\n                        --radius: 18px;\r\n                      }\r\n\r\n                      * {\r\n                        box-sizing: border-box;\r\n                      }\r\n\r\n                      body {\r\n                        margin: 0;\r\n                        font-family: Inter, Arial, Helvetica, sans-serif;\r\n                        background: linear-gradient(180deg, #f7f9fc 0%, #eef3fb 100%);\r\n                        color: var(--text);\r\n                        padding: 24px;\r\n                      }\r\n\r\n                      .wrap {\r\n                        max-width: 860px;\r\n                        margin: 0 auto;\r\n                      }\r\n\r\n                      .card {\r\n                        background: var(--card);\r\n                        border: 1px solid var(--border);\r\n                        border-radius: var(--radius);\r\n                        box-shadow: var(--shadow);\r\n                        padding: 28px;\r\n                      }\r\n\r\n                      h1 {\r\n                        margin: 0 0 10px;\r\n                        font-size: 28px;\r\n                        line-height: 1.2;\r\n                      }\r\n\r\n                      .sub {\r\n                        margin: 0 0 24px;\r\n                        color: var(--muted);\r\n                        font-size: 16px;\r\n                        line-height: 1.5;\r\n                      }\r\n\r\n                      .dropzone {\r\n                        border: 2px dashed #b8c4d8;\r\n                        border-radius: 16px;\r\n                        background: #fafcff;\r\n                        padding: 28px;\r\n                        text-align: center;\r\n                        transition: 0.2s ease;\r\n                        cursor: pointer;\r\n                      }\r\n\r\n                      .dropzone.dragover {\r\n                        border-color: var(--accent);\r\n                        background: #eef5ff;\r\n                      }\r\n\r\n                      .dropzone strong {\r\n                        display: block;\r\n                        font-size: 18px;\r\n                        margin-bottom: 8px;\r\n                      }\r\n\r\n                      .dropzone span {\r\n                        color: var(--muted);\r\n                      }\r\n\r\n                      input[type=\"file\"] {\r\n                        display: none;\r\n                      }\r\n\r\n                      .file-info,\r\n                      .status {\r\n                        margin-top: 18px;\r\n                        padding: 14px 16px;\r\n                        border-radius: 12px;\r\n                        font-size: 14px;\r\n                        line-height: 1.5;\r\n                        display: none;\r\n                      }\r\n\r\n                      .file-info {\r\n                        background: #f3f6fb;\r\n                        border: 1px solid var(--border);\r\n                        color: var(--text);\r\n                      }\r\n\r\n                      .status.info {\r\n                        display: block;\r\n                        background: #eef5ff;\r\n                        border: 1px solid #c9dcff;\r\n                        color: #103b7a;\r\n                      }\r\n\r\n                      .status.success {\r\n                        display: block;\r\n                        background: #edf9f1;\r\n                        border: 1px solid #c6ebd2;\r\n                        color: #0e6a3d;\r\n                      }\r\n\r\n                      .status.error {\r\n                        display: block;\r\n                        background: #fff2f2;\r\n                        border: 1px solid #f0c7c7;\r\n                        color: #8b1e1e;\r\n                      }\r\n\r\n                      .actions {\r\n                        display: flex;\r\n                        flex-wrap: wrap;\r\n                        gap: 12px;\r\n                        margin-top: 22px;\r\n                      }\r\n\r\n                      button,\r\n                      .button-link {\r\n                        appearance: none;\r\n                        border: 0;\r\n                        border-radius: 12px;\r\n                        padding: 14px 18px;\r\n                        font-size: 15px;\r\n                        font-weight: 600;\r\n                        cursor: pointer;\r\n                        text-decoration: none;\r\n                        display: inline-flex;\r\n                        align-items: center;\r\n                        justify-content: center;\r\n                        min-height: 48px;\r\n                      }\r\n\r\n                      .primary {\r\n                        background: var(--accent);\r\n                        color: #fff;\r\n                      }\r\n\r\n                      .primary:hover {\r\n                        background: var(--accent-hover);\r\n                      }\r\n\r\n                      .secondary {\r\n                        background: #eef3fb;\r\n                        color: var(--text);\r\n                        border: 1px solid var(--border);\r\n                      }\r\n\r\n                      .secondary:hover {\r\n                        background: #e6edf8;\r\n                      }\r\n\r\n                      .disabled,\r\n                      button:disabled {\r\n                        opacity: 0.55;\r\n                        cursor: not-allowed;\r\n                      }\r\n\r\n                      .preview {\r\n                        margin-top: 24px;\r\n                        display: none;\r\n                      }\r\n\r\n                      .preview iframe {\r\n                        width: 100%;\r\n                        height: 620px;\r\n                        border: 1px solid var(--border);\r\n                        border-radius: 14px;\r\n                        background: #fff;\r\n                      }\r\n\r\n                      .hint {\r\n                        margin-top: 18px;\r\n                        color: var(--muted);\r\n                        font-size: 13px;\r\n                        line-height: 1.5;\r\n                      }\r\n\r\n                      .code-block {\r\n                        margin-top: 28px;\r\n                        background: #10151d;\r\n                        color: #eaf1ff;\r\n                        border-radius: 16px;\r\n                        padding: 18px;\r\n                        overflow: auto;\r\n                        font-size: 13px;\r\n                        line-height: 1.55;\r\n                        display: none;\r\n                        white-space: pre-wrap;\r\n                        word-break: break-word;\r\n                      }\r\n                    <\/style>\r\n\r\n\r\n                    <div class=\"wrap\">\r\n                      <div class=\"card\">\r\n                        <h1>A4-PDF auf obere H\u00e4lfte reduzieren<\/h1>\r\n                        <p class=\"sub\">\r\n                          Dieses Tool beh\u00e4lt pro PDF-Seite nur die <strong>obere H\u00e4lfte<\/strong>. Bei einer normalen A4-Seite entsteht dadurch direkt ein Format in <strong>A5 quer<\/strong> \u2013 ideal, wenn auf dem oberen Teil das relevante Versandlabel sitzt.\r\n                        <\/p>\r\n\r\n                        <label class=\"dropzone\" id=\"dropzone\" for=\"pdfFile\">\r\n                          <strong>PDF hier ablegen oder anklicken<\/strong>\r\n                          <span>Es wird lokal im Browser verarbeitet. Es wird nichts hochgeladen.<\/span>\r\n                        <\/label>\r\n                        <input id=\"pdfFile\" type=\"file\" accept=\"application\/pdf\">\r\n\r\n                        <div class=\"file-info\" id=\"fileInfo\"><\/div>\r\n                        <div class=\"status\" id=\"status\"><\/div>\r\n\r\n                        <div class=\"actions\">\r\n                          <button class=\"primary\" id=\"convertBtn\" disabled=\"\">In A5-PDF umwandeln<\/button>\r\n                          <a class=\"button-link secondary disabled\" id=\"downloadBtn\" href=\"#\" download=\"\">PDF herunterladen<\/a>\r\n                          <button class=\"secondary\" id=\"printBtn\" disabled=\"\">Direkt drucken<\/button>\r\n                        <\/div>\r\n\r\n                        <div class=\"preview\" id=\"previewWrap\">\r\n                          <iframe id=\"previewFrame\" title=\"PDF Vorschau\"><\/iframe>\r\n                        <\/div>\r\n\r\n                        <p class=\"hint\">\r\n                          Hinweis: Der Druck startet je nach Browser direkt oder \u00f6ffnet zuerst die PDF-Vorschau. Falls n\u00f6tig, dort einfach normal drucken.\r\n                        <\/p>\r\n                      <\/div>\r\n                    <\/div>\r\n\r\n                    <script>\r\n                      const {\r\n                        PDFDocument\r\n                      } = PDFLib;\r\n\r\n                      const fileInput = document.getElementById('pdfFile');\r\n                      const dropzone = document.getElementById('dropzone');\r\n                      const fileInfo = document.getElementById('fileInfo');\r\n                      const statusBox = document.getElementById('status');\r\n                      const convertBtn = document.getElementById('convertBtn');\r\n                      const downloadBtn = document.getElementById('downloadBtn');\r\n                      const printBtn = document.getElementById('printBtn');\r\n                      const previewWrap = document.getElementById('previewWrap');\r\n                      const previewFrame = document.getElementById('previewFrame');\r\n\r\n                      let selectedFile = null;\r\n                      let outputBlobUrl = null;\r\n                      let outputFileName = 'pdf_obere_haelfte_a5.pdf';\r\n\r\n                      function setStatus(message = '', type = 'info') {\r\n                        if (!message) {\r\n                          statusBox.style.display = 'none';\r\n                          statusBox.textContent = '';\r\n                          statusBox.className = 'status';\r\n                          return;\r\n                        }\r\n                        statusBox.textContent = message;\r\n                        statusBox.className = `status ${type}`;\r\n                      }\r\n\r\n                      function setFile(file) {\r\n                        selectedFile = file;\r\n                        convertBtn.disabled = !file;\r\n                        downloadBtn.classList.add('disabled');\r\n                        downloadBtn.removeAttribute('href');\r\n                        printBtn.disabled = true;\r\n                        previewWrap.style.display = 'none';\r\n\r\n                        if (outputBlobUrl) {\r\n                          URL.revokeObjectURL(outputBlobUrl);\r\n                          outputBlobUrl = null;\r\n                        }\r\n\r\n                        if (file) {\r\n                          fileInfo.style.display = 'block';\r\n                          fileInfo.innerHTML = `<strong>Datei:<\/strong> ${file.name}<br><strong>Gr\u00f6\u00dfe:<\/strong> ${(file.size \/ 1024 \/ 1024).toFixed(2)} MB`;\r\n                          const cleanName = file.name.replace(\/.pdf$\/i, '');\r\n                          outputFileName = `${cleanName}_obere_haelfte_a5.pdf`;\r\n                          setStatus('Datei geladen. Du kannst jetzt die Umwandlung starten.', 'info');\r\n                        } else {\r\n                          fileInfo.style.display = 'none';\r\n                          fileInfo.textContent = '';\r\n                          setStatus();\r\n                        }\r\n                      }\r\n\r\n                      async function convertPdfKeepUpperHalf(file) {\r\n                        const arrayBuffer = await file.arrayBuffer();\r\n                        const inputPdf = await PDFDocument.load(arrayBuffer);\r\n                        const outputPdf = await PDFDocument.create();\r\n                        const pages = inputPdf.getPages();\r\n\r\n                        for (const page of pages) {\r\n                          const pageWidth = page.getWidth();\r\n                          const pageHeight = page.getHeight();\r\n                          const halfHeight = pageHeight \/ 2;\r\n\r\n                          const embeddedPage = await outputPdf.embedPage(page, {\r\n                            left: 0,\r\n                            bottom: halfHeight,\r\n                            right: pageWidth,\r\n                            top: pageHeight,\r\n                          });\r\n\r\n                          const newPage = outputPdf.addPage([pageWidth, halfHeight]);\r\n                          newPage.drawPage(embeddedPage, {\r\n                            x: 0,\r\n                            y: 0,\r\n                            width: pageWidth,\r\n                            height: halfHeight,\r\n                          });\r\n                        }\r\n\r\n                        const pdfBytes = await outputPdf.save();\r\n                        return new Blob([pdfBytes], {\r\n                          type: 'application\/pdf'\r\n                        });\r\n                      }\r\n\r\n                      async function handleConvert() {\r\n                        if (!selectedFile) {\r\n                          setStatus('Bitte zuerst eine PDF-Datei ausw\u00e4hlen.', 'error');\r\n                          return;\r\n                        }\r\n\r\n                        try {\r\n                          convertBtn.disabled = true;\r\n                          printBtn.disabled = true;\r\n                          setStatus('PDF wird verarbeitet \u2026', 'info');\r\n\r\n                          const blob = await convertPdfKeepUpperHalf(selectedFile);\r\n\r\n                          if (outputBlobUrl) {\r\n                            URL.revokeObjectURL(outputBlobUrl);\r\n                          }\r\n\r\n                          outputBlobUrl = URL.createObjectURL(blob);\r\n                          downloadBtn.href = outputBlobUrl;\r\n                          downloadBtn.download = outputFileName;\r\n                          downloadBtn.classList.remove('disabled');\r\n                          printBtn.disabled = false;\r\n                          previewFrame.src = outputBlobUrl;\r\n                          previewWrap.style.display = 'block';\r\n\r\n                          setStatus('Fertig. Die neue PDF enth\u00e4lt nur die obere H\u00e4lfte jeder Seite.', 'success');\r\n                        } catch (error) {\r\n                          console.error(error);\r\n                          setStatus('Die PDF konnte nicht verarbeitet werden. Bitte pr\u00fcfe, ob es eine g\u00fcltige PDF ist.', 'error');\r\n                        } finally {\r\n                          convertBtn.disabled = !selectedFile;\r\n                        }\r\n                      }\r\n\r\n                      function handlePrint() {\r\n                        if (!outputBlobUrl) {\r\n                          setStatus('Bitte erst eine PDF umwandeln.', 'error');\r\n                          return;\r\n                        }\r\n\r\n                        const iframe = document.createElement('iframe');\r\n                        iframe.style.position = 'fixed';\r\n                        iframe.style.right = '0';\r\n                        iframe.style.bottom = '0';\r\n                        iframe.style.width = '0';\r\n                        iframe.style.height = '0';\r\n                        iframe.style.border = '0';\r\n                        iframe.src = outputBlobUrl;\r\n\r\n                        iframe.onload = () => {\r\n                          try {\r\n                            iframe.contentWindow.focus();\r\n                            iframe.contentWindow.print();\r\n                            setStatus('Druckdialog wurde ge\u00f6ffnet.', 'success');\r\n                          } catch (err) {\r\n                            console.error(err);\r\n                            window.open(outputBlobUrl, '_blank');\r\n                            setStatus('Der Browser hat den Direktdruck blockiert. Die PDF wurde in einem neuen Tab ge\u00f6ffnet.', 'info');\r\n                          }\r\n                        };\r\n\r\n                        document.body.appendChild(iframe);\r\n                        setTimeout(() => {\r\n                          try {\r\n                            document.body.removeChild(iframe);\r\n                          } catch (e) {}\r\n                        }, 30000);\r\n                      }\r\n\r\n                      fileInput.addEventListener('change', (event) => {\r\n                        const file = event.target.files ? .[0] || null;\r\n                        if (file && file.type !== 'application\/pdf') {\r\n                          setFile(null);\r\n                          setStatus('Bitte nur PDF-Dateien ausw\u00e4hlen.', 'error');\r\n                          return;\r\n                        }\r\n                        setFile(file);\r\n                      });\r\n\r\n                      ['dragenter', 'dragover'].forEach((eventName) => {\r\n                        dropzone.addEventListener(eventName, (event) => {\r\n                          event.preventDefault();\r\n                          event.stopPropagation();\r\n                          dropzone.classList.add('dragover');\r\n                        });\r\n                      });\r\n\r\n                      ['dragleave', 'dragend', 'drop'].forEach((eventName) => {\r\n                        dropzone.addEventListener(eventName, (event) => {\r\n                          event.preventDefault();\r\n                          event.stopPropagation();\r\n                          dropzone.classList.remove('dragover');\r\n                        });\r\n                      });\r\n\r\n                      dropzone.addEventListener('drop', (event) => {\r\n                        const file = event.dataTransfer ? .files ? .[0] || null;\r\n                        if (file && file.type !== 'application\/pdf') {\r\n                          setStatus('Bitte nur PDF-Dateien ausw\u00e4hlen.', 'error');\r\n                          return;\r\n                        }\r\n                        if (file) {\r\n                          fileInput.files = event.dataTransfer.files;\r\n                        }\r\n                        setFile(file);\r\n                      });\r\n\r\n                      convertBtn.addEventListener('click', handleConvert);\r\n                      printBtn.addEventListener('click', handlePrint);\r\n                    <\/script>\r\n\r\n\r\n                    \r\n                  <\/div>\r\n                <\/div>\r\n              <\/div>\r\n            <\/div>\r\n          <\/div>\r\n        <\/div>\r\n      <\/div>\r\n    <\/div>\r\n  <\/div>\r\n  <div data-colibri-component=\"section\" data-colibri-id=\"90-c6\" id=\"custom\" class=\"h-section h-section-global-spacing d-flex align-items-lg-center align-items-md-center align-items-center style-370 style-local-90-c6 position-relative\">\r\n    <!---->\r\n    <!---->\r\n    <div class=\"h-section-grid-container h-section-boxed-container\">\r\n      <!---->\r\n      <div data-colibri-id=\"90-c7\" class=\"h-row-container gutters-row-lg-2 gutters-row-md-2 gutters-row-0 gutters-row-v-lg-2 gutters-row-v-md-2 gutters-row-v-2 style-371 style-local-90-c7 position-relative\">\r\n        <!---->\r\n        <div class=\"h-row justify-content-lg-center justify-content-md-center justify-content-center align-items-lg-stretch align-items-md-stretch align-items-stretch gutters-col-lg-2 gutters-col-md-2 gutters-col-0 gutters-col-v-lg-2 gutters-col-v-md-2 gutters-col-v-2\">\r\n          <!---->\r\n          <div class=\"h-column h-column-container d-flex h-col-lg-auto h-col-md-auto h-col-auto style-372-outer style-local-90-c8-outer\">\r\n            <div data-colibri-id=\"90-c8\" class=\"d-flex h-flex-basis h-column__inner h-px-lg-2 h-px-md-2 h-px-2 v-inner-lg-2 v-inner-md-2 v-inner-2 style-372 style-local-90-c8 position-relative\">\r\n              <!---->\r\n              <!---->\r\n              <div class=\"w-100 h-y-container h-column__content h-column__v-align flex-basis-100 align-self-lg-start align-self-md-start align-self-start\">\r\n                <!---->\r\n                <div data-colibri-id=\"90-c9\" class=\"h-x-container style-373 style-local-90-c9 position-relative h-element\">\r\n                  <!---->\r\n                  <div class=\"h-x-container-inner style-dynamic-90-c9-group\">\r\n                    <!----><span class=\"h-button__outer style-374-outer style-local-90-c10-outer d-inline-flex h-element\"><a  h-use-smooth-scroll=\"true\" href=\"https:\/\/caselabel.baer-live.com\/\"  data-colibri-id=\"90-c10\" class=\"d-flex w-100 align-items-center h-button justify-content-lg-center justify-content-md-center justify-content-center style-374 style-local-90-c10 position-relative\"><!----><!----> <span >Go to Homepage!<\/span><\/a>\r\n                    <\/span>\r\n                  <\/div>\r\n                <\/div>\r\n              <\/div>\r\n            <\/div>\r\n          <\/div>\r\n        <\/div>\r\n      <\/div>\r\n    <\/div>\r\n  <\/div>\r\n<\/div>","protected":false},"excerpt":{"rendered":"<p>A4 PDF \u2192 obere H\u00e4lfte als A5 A4-PDF auf obere H\u00e4lfte reduzieren Dieses [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"page-templates\/full-width-page.php","meta":{"footnotes":""},"class_list":["post-90","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/caselabel.baer-live.com\/index.php?rest_route=\/wp\/v2\/pages\/90","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/caselabel.baer-live.com\/index.php?rest_route=\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/caselabel.baer-live.com\/index.php?rest_route=\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/caselabel.baer-live.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/caselabel.baer-live.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=90"}],"version-history":[{"count":2,"href":"https:\/\/caselabel.baer-live.com\/index.php?rest_route=\/wp\/v2\/pages\/90\/revisions"}],"predecessor-version":[{"id":127,"href":"https:\/\/caselabel.baer-live.com\/index.php?rest_route=\/wp\/v2\/pages\/90\/revisions\/127"}],"wp:attachment":[{"href":"https:\/\/caselabel.baer-live.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=90"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}