{"id":404,"date":"2025-10-13T14:51:41","date_gmt":"2025-10-13T05:51:41","guid":{"rendered":"https:\/\/optu.sunnyday.jp\/tanoura_aquathlon\/?page_id=404"},"modified":"2025-10-13T15:50:05","modified_gmt":"2025-10-13T06:50:05","slug":"%e8%a8%98%e9%8c%b2%e8%a8%bc","status":"publish","type":"page","link":"https:\/\/optu.sunnyday.jp\/tanoura_aquathlon\/%e8%a8%98%e9%8c%b2%e8%a8%bc\/","title":{"rendered":"\u8a18\u9332\u8a3c"},"content":{"rendered":"<form id=\"bib-form\">\n  <label>\u30ec\u30fc\u30b9No.\u3092\u5165\u529b\uff1a<\/label>\n  <input type=\"text\" id=\"bib-number\" name=\"bib\" required>\n  <button type=\"submit\">\u691c\u7d22<\/button>\n<\/form>\n\n<div id=\"result\" style=\"margin-top:30px;\"><\/div>\n\n<!-- jsPDF \u8aad\u307f\u8fbc\u307f -->\n<script src=\"https:\/\/cdnjs.cloudflare.com\/ajax\/libs\/html2canvas\/1.4.1\/html2canvas.min.js\"><\/script>\n\n<script src=\"https:\/\/cdnjs.cloudflare.com\/ajax\/libs\/jspdf\/2.5.1\/jspdf.umd.min.js\"><\/script>\n\n<script>\ndocument.getElementById('bib-form').addEventListener('submit', function(e) {\n  e.preventDefault();\n  const bib = document.getElementById('bib-number').value;\n  fetch('https:\/\/optu.sunnyday.jp\/tanoura_aquathlon\/wp-admin\/admin-ajax.php', {\n    method: 'POST',\n    headers: {'Content-Type': 'application\/x-www-form-urlencoded'},\n    body: 'action=get_record_from_csv&bib=' + bib\n  })\n  .then(res => res.text())\n  .then(html => {\n    document.getElementById('result').innerHTML = html;\n\t      \/\/ --- \u3010\u8ffd\u52a0\u3011\u753b\u50cf\u5316\u306e\u51e6\u7406 ---\n    const cert = document.getElementById('certificate');\n    if (cert) {\n      \/\/ html2canvas\u3092\u5b9f\u884c\n      html2canvas(cert, {\n        scale: 1, \/\/ Web\u8868\u793a\u7528\u306a\u306e\u3067\u3001\u30b9\u30b1\u30fc\u30eb\u306f1\u307e\u305f\u306fDPR (window.devicePixelRatio) \u306b\u8a2d\u5b9a\n        useCORS: true,\n        backgroundColor: null\n      }).then(canvas => {\n        \/\/ \u30ad\u30e3\u30f3\u30d0\u30b9\u304b\u3089\u753b\u50cf\u30c7\u30fc\u30bfURI\u3092\u53d6\u5f97\n        const imgData = canvas.toDataURL('image\/png');\n        \n        \/\/ \u5143\u306e\u8a3c\u660e\u66f8div\u3092\u975e\u8868\u793a\u306b\u3057\u3001\u753b\u50cf\u3092\u8868\u793a\u3059\u308b\n        cert.style.display = 'none';\n        \n        \/\/ \u65b0\u3057\u3044 <img> \u8981\u7d20\u3092\u4f5c\u6210\u3057\u3066\u753b\u50cf\u3092\u8868\u793a\n        const img = document.createElement('img');\n        img.src = imgData;\n        img.style.maxWidth = '100%'; \/\/ \u30ec\u30b9\u30dd\u30f3\u30b7\u30d6\u5bfe\u5fdc\n\n        \/\/ result\u306b\u633f\u5165\n        const resultDiv = document.getElementById('result');\n        const pdfBtn = document.getElementById('pdf-btn');\n\u3000\u3000\u3000\u3000resultDiv.insertBefore(img, pdfBtn);\n\t\t  \n\/\/ PDF\u30dc\u30bf\u30f3\u52d5\u4f5c\n        pdfBtn.onclick = function() {\n          const { jsPDF } = window.jspdf;\n          const pdf = new jsPDF({\n            orientation: 'portrait',\n            unit: 'px',\n            format: [canvas.width, canvas.height]\n          });\n          pdf.addImage(imgData, 'PNG', 0, 0, canvas.width, canvas.height);\n          pdf.save('certificate.pdf');\n        };\n      });\n    }\n  });\n});\t\t\n<\/script>\n\n\n\n\n<!-- jsPDF\u672c\u4f53 -->\n<script src=\"https:\/\/cdnjs.cloudflare.com\/ajax\/libs\/jspdf\/2.5.1\/jspdf.umd.min.js\"><\/script>\n\n<!-- html2canvas\uff08\u3053\u308c\u304c\u629c\u3051\u3066\u3044\u305f\uff09 -->\n<script src=\"https:\/\/cdnjs.cloudflare.com\/ajax\/libs\/html2canvas\/1.4.1\/html2canvas.min.js\"><\/script>\n\n<!-- \u30a4\u30d9\u30f3\u30c8\u59d4\u8b72\u30b9\u30af\u30ea\u30d7\u30c8 -->\n<script>\ndocument.addEventListener('click', function(e) {\n  if (e.target && e.target.id === 'pdf-btn') {\n    console.log('PDF\u30dc\u30bf\u30f3\u304c\u62bc\u3055\u308c\u307e\u3057\u305f');\n\n    const { jsPDF } = window.jspdf || {};\n    if (!jsPDF) {\n      console.error('jsPDF \u304c\u30ed\u30fc\u30c9\u3055\u308c\u3066\u3044\u307e\u305b\u3093');\n      return;\n    }\n\n    const doc = new jsPDF({\n      orientation: 'landscape',\n      unit: 'px',\n      format: [800, 565]\n    });\n\n    const cert = document.getElementById('certificate');\n    if (!cert) {\n      console.error('certificate \u8981\u7d20\u304c\u898b\u3064\u304b\u308a\u307e\u305b\u3093');\n      return;\n    }\n\n    doc.html(cert, {\n      callback: function(doc) {\n        console.log('PDF\u3092\u4fdd\u5b58\u3057\u307e\u3059');\n        doc.save('record.pdf');\n      },\n      x: 0,\n      y: 0,\n      html2canvas: { scale: 2, useCORS: true }\n    });\n  }\n});\n<\/script>\n\n\n\n\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"vkexunit_cta_each_option":"","footnotes":""},"class_list":["post-404","page","type-page","status-publish","hentry"],"jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/optu.sunnyday.jp\/tanoura_aquathlon\/wp-json\/wp\/v2\/pages\/404","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/optu.sunnyday.jp\/tanoura_aquathlon\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/optu.sunnyday.jp\/tanoura_aquathlon\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/optu.sunnyday.jp\/tanoura_aquathlon\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/optu.sunnyday.jp\/tanoura_aquathlon\/wp-json\/wp\/v2\/comments?post=404"}],"version-history":[{"count":7,"href":"https:\/\/optu.sunnyday.jp\/tanoura_aquathlon\/wp-json\/wp\/v2\/pages\/404\/revisions"}],"predecessor-version":[{"id":413,"href":"https:\/\/optu.sunnyday.jp\/tanoura_aquathlon\/wp-json\/wp\/v2\/pages\/404\/revisions\/413"}],"wp:attachment":[{"href":"https:\/\/optu.sunnyday.jp\/tanoura_aquathlon\/wp-json\/wp\/v2\/media?parent=404"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}