{"id":172,"date":"2026-09-01T00:07:11","date_gmt":"2026-09-01T00:07:11","guid":{"rendered":"https:\/\/baoqi-smart.com\/edth\/?page_id=172"},"modified":"2026-09-01T00:14:46","modified_gmt":"2026-09-01T00:14:46","slug":"share","status":"publish","type":"page","link":"https:\/\/baoqi-smart.com\/edth\/share\/","title":{"rendered":"\u88fd\u4f5c\u6211\u7684 TDTH \u53c3\u8207\u5ba3\u544a\u5716"},"content":{"rendered":"\n<!-- TDTH 2026 Share Card Generator | WordPress code-editor block -->\n<section id=\"tdth-share\" class=\"tdth-share\" aria-labelledby=\"tdth-share-title\">\n  <header class=\"tdth-share__intro\">\n    <p class=\"tdth-share__eyebrow\">TDTH 2026 \u00b7 SHARE CARD GENERATOR<\/p>\n    <h1 id=\"tdth-share-title\">\u88fd\u4f5c\u4f60\u7684\u53c3\u8207\u5ba3\u544a\u5716<\/h1>\n    <p>Create your Taiwan Defense Tech Hackathon attendee card, then share it with your network.<\/p>\n    <div class=\"tdth-share__privacy\" role=\"note\">\u25cf \u7167\u7247\u53ea\u5728\u4f60\u7684\u88dd\u7f6e\u5167\u8655\u7406\uff0c\u4e0d\u6703\u4e0a\u50b3\u3002 Your photo stays on your device.<\/div>\n  <\/header>\n\n  <div class=\"tdth-share__builder\">\n    <div class=\"tdth-share__preview\">\n      <canvas id=\"tdthShareCanvas\" width=\"1080\" height=\"1350\" aria-label=\"\u53c3\u8207\u5ba3\u544a\u5716\u9810\u89bd\"><\/canvas>\n      <p>\u4e0a\u50b3\u5f8c\u53ef\u76f4\u63a5\u62d6\u66f3\u7167\u7247\u8abf\u6574\u4f4d\u7f6e\uff0c\u4e26\u4ee5\u6ed1\u687f\u6216\u6ed1\u9f20\u6efe\u8f2a\u7e2e\u653e\u3002<\/p>\n    <\/div>\n\n    <form class=\"tdth-share__controls\" onsubmit=\"return false\">\n      <fieldset>\n        <legend><b>01<\/b> \u8a9e\u8a00 \/ LANGUAGE<\/legend>\n        <div class=\"tdth-share__segment\">\n          <label><input type=\"radio\" name=\"tdth-language\" value=\"zh\" checked><span>\u4e2d\u6587<\/span><\/label>\n          <label><input type=\"radio\" name=\"tdth-language\" value=\"en\"><span>English<\/span><\/label>\n        <\/div>\n      <\/fieldset>\n\n      <fieldset>\n        <legend><b>02<\/b> \u53c3\u8207\u72c0\u614b \/ STATUS<\/legend>\n        <div class=\"tdth-share__status-options\">\n          <label><input type=\"radio\" name=\"tdth-status\" value=\"applied\"><span><strong>\u5df2\u5b8c\u6210\u7533\u8acb<\/strong><small>Application submitted<\/small><\/span><\/label>\n          <label><input type=\"radio\" name=\"tdth-status\" value=\"joining\" checked><span><strong>\u6211\u5c07\u53c3\u52a0<\/strong><small>I&#8217;m joining<\/small><\/span><\/label>\n          <label><input type=\"radio\" name=\"tdth-status\" value=\"demo\"><span><strong>Demo Day<\/strong><small>I&#8217;m coming to Demo Day<\/small><\/span><\/label>\n        <\/div>\n      <\/fieldset>\n\n      <fieldset>\n        <legend><b>03<\/b> \u80cc\u666f \/ BACKGROUND<\/legend>\n        <div class=\"tdth-share__backgrounds\">\n          <label><input type=\"radio\" name=\"tdth-background\" value=\"taipei\" checked><span style=\"background-image:url('https:\/\/baoqi-smart.com\/edth\/wp-content\/uploads\/2026\/08\/taipei.webp');background-position:center;background-size:cover\"><i>\u81fa\u5317 TAIPEI<\/i><\/span><\/label>\n          <label><input type=\"radio\" name=\"tdth-background\" value=\"drone\"><span style=\"background-image:url('https:\/\/baoqi-smart.com\/edth\/wp-content\/uploads\/2026\/08\/drone.webp');background-position:center;background-size:cover\"><i>\u7121\u4eba\u6a5f BUILD<\/i><\/span><\/label>\n          <label><input type=\"radio\" name=\"tdth-background\" value=\"builders\"><span style=\"background-image:url('https:\/\/baoqi-smart.com\/edth\/wp-content\/uploads\/2026\/08\/builders.webp');background-position:center;background-size:cover\"><i>\u5354\u4f5c BUILDERS<\/i><\/span><\/label>\n        <\/div>\n      <\/fieldset>\n\n      <fieldset>\n        <legend><b>04<\/b> \u7167\u7247 \/ PHOTO<\/legend>\n        <div class=\"tdth-share__upload-row\">\n          <label class=\"tdth-share__upload\" for=\"tdthSharePhoto\"><strong>\u4e0a\u50b3\u7167\u7247<\/strong><small>Upload photo<\/small><\/label>\n          <input id=\"tdthSharePhoto\" type=\"file\" accept=\"image\/jpeg,image\/png,image\/webp,image\/heic,image\/heif\">\n          <button id=\"tdthShareRemove\" type=\"button\" disabled>\u79fb\u9664<\/button>\n        <\/div>\n        <label class=\"tdth-share__zoom\" for=\"tdthShareZoom\"><span>\u7e2e\u653e \/ ZOOM<\/span><input id=\"tdthShareZoom\" type=\"range\" min=\"1\" max=\"2.8\" value=\"1\" step=\"0.01\" disabled><\/label>\n        <p class=\"tdth-share__error\" id=\"tdthShareError\" role=\"alert\" hidden><\/p>\n      <\/fieldset>\n\n      <div class=\"tdth-share__actions\">\n        <button class=\"is-primary\" id=\"tdthNativeShare\" type=\"button\"><strong>\u5206\u4eab\u5716\u7247<\/strong><small>Share image<\/small><\/button>\n        <button id=\"tdthDownload\" type=\"button\"><strong>\u4e0b\u8f09 PNG<\/strong><small>Download<\/small><\/button>\n        <button id=\"tdthCopy\" type=\"button\"><strong>\u8907\u88fd\u8cbc\u6587<\/strong><small>Copy caption<\/small><\/button>\n        <button class=\"is-linkedin\" id=\"tdthLinkedIn\" type=\"button\"><strong>LinkedIn<\/strong><small>\u4e0b\u8f09\u5716\u7247\u4e26\u958b\u555f\u767c\u6587<\/small><\/button>\n      <\/div>\n      <p class=\"tdth-share__message\" id=\"tdthShareMessage\" role=\"status\" aria-live=\"polite\"><\/p>\n    <\/form>\n  <\/div>\n\n  <aside class=\"tdth-share__guide\"><strong>\u96fb\u8166\u7248 LinkedIn<\/strong><span>\u6309\u4e0b LinkedIn \u5f8c\u6703\u4e0b\u8f09\u5716\u7247\u3001\u8907\u88fd\u5efa\u8b70\u8cbc\u6587\uff0c\u518d\u958b\u555f LinkedIn\uff1b\u767c\u6587\u6642\u4e0a\u50b3\u525b\u4e0b\u8f09\u7684 PNG \u5373\u53ef\u3002<\/span><\/aside>\n<\/section>\n\n<style>\n.tdth-share{--ink:#f5f8f8;--muted:#9db2b7;--line:rgba(172,205,210,.23);--yellow:#ffc528;--teal:#1fc0b0;width:100%;max-width:1220px;margin:0 auto;padding:clamp(38px,7vw,88px) 16px 72px;color:var(--ink);background:radial-gradient(circle at 8% 0,rgba(31,192,176,.13),transparent 26rem),radial-gradient(circle at 90% 22%,rgba(242,68,58,.1),transparent 28rem),#06151c;font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,\"PingFang TC\",\"Noto Sans TC\",\"Microsoft JhengHei\",sans-serif;box-sizing:border-box}.tdth-share *{box-sizing:border-box}.tdth-share button,.tdth-share input{font:inherit}.tdth-share__intro{max-width:840px;margin-bottom:36px}.tdth-share__eyebrow,.tdth-share legend{margin:0;color:var(--yellow);font-size:12px;font-weight:800;letter-spacing:.18em}.tdth-share h1{margin:12px 0 4px;color:var(--ink);font-size:clamp(34px,5vw,62px);line-height:1.05;letter-spacing:-.04em}.tdth-share__intro>p:not(.tdth-share__eyebrow){margin:0;color:var(--muted);font-size:clamp(16px,2vw,20px);line-height:1.55}.tdth-share__privacy{display:inline-flex;align-items:center;gap:9px;margin-top:20px;padding:10px 14px;border:1px solid rgba(31,192,176,.3);border-radius:999px;color:#bfe9e4;background:rgba(31,192,176,.08);font-size:13px}.tdth-share__builder{display:grid;grid-template-columns:minmax(0,1.05fr) minmax(360px,.95fr);gap:clamp(28px,5vw,64px);align-items:start}.tdth-share__preview{min-width:0}.tdth-share__preview canvas{display:block;width:min(100%,610px);height:auto;aspect-ratio:4\/5;border:1px solid rgba(204,230,233,.27);border-radius:10px;background:#061016;box-shadow:0 28px 80px rgba(0,0,0,.36);cursor:grab;touch-action:none;user-select:none}.tdth-share__preview canvas:active{cursor:grabbing}.tdth-share__preview>p{width:min(100%,610px);margin:13px 0 0;color:var(--muted);font-size:13px;line-height:1.65}.tdth-share__controls{overflow:hidden;margin:0;border:1px solid var(--line);border-radius:10px;background:rgba(8,31,40,.9);box-shadow:0 20px 54px rgba(0,0,0,.2)}.tdth-share fieldset{min-width:0;margin:0;padding:22px;border:0;border-bottom:1px solid var(--line)}.tdth-share legend{display:block;width:100%;padding:0 0 13px}.tdth-share legend b{color:var(--teal)}.tdth-share input[type=radio]{position:absolute;width:1px;height:1px;opacity:0}.tdth-share__segment{display:grid;grid-template-columns:1fr 1fr;gap:6px;padding:5px;border:1px solid var(--line);border-radius:7px;background:rgba(0,0,0,.16)}.tdth-share__segment span{display:grid;min-height:40px;place-items:center;border-radius:4px;color:var(--muted);cursor:pointer;font-weight:700}.tdth-share__segment input:checked+span{color:#071820;background:var(--yellow)}.tdth-share__status-options{display:grid;gap:7px}.tdth-share__status-options label>span{display:flex;align-items:center;justify-content:space-between;gap:14px;padding:13px 14px;border:1px solid var(--line);border-radius:6px;cursor:pointer;background:rgba(255,255,255,.025)}.tdth-share__status-options small{color:var(--muted)}.tdth-share__status-options input:checked+span{border-color:var(--yellow);box-shadow:inset 4px 0 var(--yellow);background:rgba(255,197,40,.08)}.tdth-share__backgrounds{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}.tdth-share__backgrounds label>span{position:relative;display:block;overflow:hidden;aspect-ratio:4\/3;border:2px solid transparent;border-radius:6px;cursor:pointer;background:#0b1820}.tdth-share__backgrounds label>span:after{position:absolute;inset:42% 0 0;content:\"\";background:linear-gradient(transparent,rgba(0,0,0,.82))}.tdth-share__backgrounds img{width:100%;height:100%;object-fit:cover}.tdth-share__backgrounds i{position:absolute;z-index:1;right:8px;bottom:7px;left:8px;color:#fff;font-size:9px;font-style:normal;font-weight:800;letter-spacing:.08em}.tdth-share__backgrounds input:checked+span{border-color:var(--yellow);box-shadow:0 0 0 2px rgba(255,197,40,.2)}.tdth-share__upload-row{display:flex;align-items:stretch;gap:8px}.tdth-share #tdthSharePhoto{position:absolute;width:1px;height:1px;opacity:0}.tdth-share__upload,.tdth-share__upload-row button{display:inline-flex;min-height:48px;align-items:center;justify-content:center;border-radius:5px;cursor:pointer}.tdth-share__upload{flex:1;flex-direction:column;border:1px solid var(--teal);color:#e9fffd;background:rgba(31,192,176,.1)}.tdth-share__upload small{margin-top:2px;color:#98d8d2}.tdth-share__upload-row button{padding:0 16px;border:1px solid var(--line);color:var(--ink);background:transparent}.tdth-share__upload-row button:disabled{cursor:not-allowed;opacity:.35}.tdth-share__zoom{display:grid;grid-template-columns:auto 1fr;gap:14px;align-items:center;margin-top:14px;color:var(--muted);font-size:11px;font-weight:800;letter-spacing:.11em}.tdth-share__zoom input{width:100%;accent-color:var(--yellow)}.tdth-share__error{margin:12px 0 0;color:#ff928c;font-size:13px}.tdth-share__actions{display:grid;grid-template-columns:1fr 1fr;gap:8px;padding:22px}.tdth-share__actions button{min-height:58px;padding:9px 12px;border:1px solid var(--line);border-radius:5px;color:var(--ink);background:rgba(255,255,255,.03);cursor:pointer}.tdth-share__actions button:hover{border-color:rgba(255,255,255,.45)}.tdth-share__actions strong,.tdth-share__actions small{display:block}.tdth-share__actions small{margin-top:3px;color:var(--muted);font-size:10px}.tdth-share__actions .is-primary{border-color:var(--yellow);color:#071820;background:var(--yellow)}.tdth-share__actions .is-primary small{color:rgba(7,24,32,.72)}.tdth-share__actions .is-linkedin{border-color:#4a91db;background:rgba(10,102,194,.14)}.tdth-share__message{min-height:20px;margin:0;padding:0 22px 22px;color:#bfe9e4;font-size:13px;line-height:1.5}.tdth-share__guide{display:grid;grid-template-columns:auto 1fr;gap:18px;align-items:start;margin-top:34px;padding:18px 20px;border-left:3px solid var(--yellow);color:var(--muted);background:rgba(255,255,255,.025);font-size:13px;line-height:1.65}.tdth-share__guide strong{color:var(--ink);white-space:nowrap}@media(max-width:900px){.tdth-share__builder{grid-template-columns:1fr}.tdth-share__preview canvas,.tdth-share__preview>p,.tdth-share__controls{margin-inline:auto}.tdth-share__controls{max-width:610px}}@media(max-width:560px){.tdth-share{padding:28px 10px 52px}.tdth-share__privacy{align-items:flex-start;border-radius:8px;line-height:1.45}.tdth-share fieldset,.tdth-share__actions{padding:18px}.tdth-share__status-options label>span{align-items:flex-start;flex-direction:column;gap:2px}.tdth-share__backgrounds{gap:5px}.tdth-share__backgrounds i{font-size:8px}.tdth-share__actions{grid-template-columns:1fr}.tdth-share__guide{grid-template-columns:1fr;gap:4px}.tdth-share__guide strong{white-space:normal}}\n<\/style>\n\n<style>\n.wp-site-blocks>main>.wp-block-group{margin:0!important}.wp-block-post-content>.tdth-share{max-width:none!important;width:100%!important;margin:0!important}.wp-site-blocks>main,.wp-site-blocks>main>.wp-block-group,.wp-block-post-content{padding:0!important;width:100%!important}.wp-site-blocks{padding:0!important}body .wp-site-blocks>header,body .wp-site-blocks>footer,.wp-block-post-title{display:none!important}body .wp-site-blocks,body main,body .wp-block-post-content{margin:0!important;padding:0!important;max-width:none!important}\n.tdth-share{max-width:none!important;padding-left:0!important;padding-right:0!important;overflow:hidden}.tdth-share__intro,.tdth-share__builder,.tdth-share__guide{width:min(1220px,calc(100% - 32px));margin-left:auto;margin-right:auto}\n@media(max-width:560px){.tdth-share__intro,.tdth-share__builder,.tdth-share__guide{width:min(100% - 20px,1220px)}}\n<\/style>\n\n<script>\n(()=>{'use strict';\nconst root=document.getElementById('tdth-share');if(!root||root.dataset.ready)return;root.dataset.ready='true';\nconst W=1080,H=1350,EVENT_URL='https:\/\/tdth.org\/',MAX=25*1024*1024;\nconst $=s=>root.querySelector(s),$$=s=>root.querySelectorAll(s),canvas=$('#tdthShareCanvas'),ctx=canvas.getContext('2d'),file=$('#tdthSharePhoto'),zoom=$('#tdthShareZoom'),remove=$('#tdthShareRemove'),error=$('#tdthShareError'),message=$('#tdthShareMessage');\nconst state={lang:'zh',status:'joining',bg:'taipei',photo:null,photoUrl:null,zoom:1,x:0,y:0,drag:false,sx:0,sy:0,ox:0,oy:0};\nconst sources={taipei:'https:\/\/baoqi-smart.com\/edth\/wp-content\/uploads\/2026\/08\/taipei.webp',builders:'https:\/\/baoqi-smart.com\/edth\/wp-content\/uploads\/2026\/08\/builders.webp',drone:'https:\/\/baoqi-smart.com\/edth\/wp-content\/uploads\/2026\/08\/drone.webp',edth:'https:\/\/baoqi-smart.com\/edth\/wp-content\/uploads\/2026\/09\/edth-logo.png',ntu:'https:\/\/baoqi-smart.com\/edth\/wp-content\/uploads\/2026\/09\/ntu-uv-logo-scaled.png'},assets={};\nconst words={zh:{applied:{k:'\u6211\u5df2\u7533\u8acb\u53c3\u52a0',c:'\u6211\u5df2\u5b8c\u6210 2026 \u81fa\u7063\u570b\u9632\u79d1\u6280\u9ed1\u5ba2\u677e\u7684\u6b63\u5f0f\u7533\u8acb\u3002\u671f\u5f85 10 \u6708 2\u20134 \u65e5\u5728\u570b\u7acb\u81fa\u7063\u5927\u5b78\uff0c\u548c\u5de5\u7a0b\u5e2b\u3001\u7814\u7a76\u8005\u3001\u5b78\u751f\u8207\u5275\u696d\u8005\u4e00\u8d77\uff0c\u70ba\u81fa\u7063\u7684\u5b89\u5168\u8207\u793e\u6703\u97cc\u6027\u6253\u9020\u53ef\u6301\u7e8c\u767c\u5c55\u7684\u6280\u8853\u539f\u578b\u3002'},joining:{k:'\u6211\u5c07\u53c3\u52a0',c:'\u6211\u5c07\u53c3\u52a0 2026 \u81fa\u7063\u570b\u9632\u79d1\u6280\u9ed1\u5ba2\u677e\u300210 \u6708 2\u20134 \u65e5\uff0c\u5728\u570b\u7acb\u81fa\u7063\u5927\u5b78\u548c\u5de5\u7a0b\u5e2b\u3001\u7814\u7a76\u8005\u3001\u5b78\u751f\u8207\u5275\u696d\u8005\u4e00\u8d77\uff0c\u628a\u6280\u8853\u7528\u5728\u81fa\u7063\u771f\u6b63\u91cd\u8981\u7684\u5b89\u5168\u8207\u97cc\u6027\u554f\u984c\u4e0a\u3002'},demo:{k:'\u6211\u5c07\u53c3\u52a0 DEMO DAY',c:'\u6211\u5c07\u53c3\u52a0 2026 \u81fa\u7063\u570b\u9632\u79d1\u6280\u9ed1\u5ba2\u677e Demo Day\uff0c\u4e00\u8d77\u770b\u898b\u53c3\u8cfd\u5718\u968a\u70ba\u81fa\u7063\u5b89\u5168\u8207\u793e\u6703\u97cc\u6027\u6253\u9020\u7684\u6280\u8853\u539f\u578b\u3002'},title:['2026 \u81fa\u7063\u570b\u9632\u79d1\u6280','\u9ed1\u5ba2\u677e'],details:'2026.10.02\u201310.04  \u00b7  \u570b\u7acb\u81fa\u7063\u5927\u5b78'},en:{applied:{k:\"I'VE APPLIED TO JOIN\",c:\"I've applied to join the Taiwan Defense Tech Hackathon 2026. I look forward to building practical technology for Taiwan's security and resilience with engineers, researchers, students, and founders at National Taiwan University on October 2\u20134.\"},joining:{k:\"I'M JOINING\",c:\"I'm joining the Taiwan Defense Tech Hackathon 2026. From October 2\u20134 at National Taiwan University, I'll build alongside engineers, researchers, students, and founders working on practical technology for Taiwan's security and resilience.\"},demo:{k:\"I'M COMING TO DEMO DAY\",c:\"I'm coming to Demo Day at the Taiwan Defense Tech Hackathon 2026 to see what teams have built for Taiwan's security and resilience.\"},title:['TAIWAN DEFENSE TECH','HACKATHON 2026'],details:'OCT 2\u20134  \u00b7  NATIONAL TAIWAN UNIVERSITY'}};\nconst load=src=>new Promise((ok,no)=>{const i=new Image;i.onload=()=>ok(i);i.onerror=no;i.src=src});\nfunction rounded(c,x,y,w,h,r){r=Math.min(r,w\/2,h\/2);c.beginPath();c.moveTo(x+r,y);c.arcTo(x+w,y,x+w,y+h,r);c.arcTo(x+w,y+h,x,y+h,r);c.arcTo(x,y+h,x,y,r);c.arcTo(x,y,x+w,y,r);c.closePath()}\nfunction cover(image,x,y,w,h,fx=.5,fy=.5){const s=Math.max(w\/image.naturalWidth,h\/image.naturalHeight),sw=w\/s,sh=h\/s,mx=image.naturalWidth-sw,my=image.naturalHeight-sh;ctx.drawImage(image,Math.max(0,Math.min(mx,mx*fx)),Math.max(0,Math.min(my,my*fy)),sw,sh,x,y,w,h)}\nfunction logo(image,x,y,mw,mh){const s=Math.min(mw\/image.naturalWidth,mh\/image.naturalHeight);ctx.drawImage(image,x,y,image.naturalWidth*s,image.naturalHeight*s)}\nfunction photo(){const f={x:190,y:270,w:700,h:550,r:52};ctx.save();rounded(ctx,f.x,f.y,f.w,f.h,f.r);ctx.clip();if(state.photo){const b=Math.max(f.w\/state.photo.naturalWidth,f.h\/state.photo.naturalHeight)*state.zoom,w=state.photo.naturalWidth*b,h=state.photo.naturalHeight*b;ctx.drawImage(state.photo,f.x+f.w\/2-w\/2+state.x,f.y+f.h\/2-h\/2+state.y,w,h)}else{const g=ctx.createLinearGradient(f.x,f.y,f.x+f.w,f.y+f.h);g.addColorStop(0,'rgba(18,69,82,.92)');g.addColorStop(1,'rgba(5,27,36,.95)');ctx.fillStyle=g;ctx.fillRect(f.x,f.y,f.w,f.h);ctx.fillStyle='rgba(255,255,255,.12)';ctx.beginPath();ctx.arc(540,450,92,0,Math.PI*2);ctx.fill();ctx.beginPath();ctx.ellipse(540,692,205,138,0,Math.PI,Math.PI*2);ctx.fill();ctx.fillStyle='rgba(255,255,255,.72)';ctx.textAlign='center';ctx.font='700 24px Arial,sans-serif';ctx.fillText('UPLOAD YOUR PHOTO',540,760)}ctx.restore();ctx.save();rounded(ctx,f.x,f.y,f.w,f.h,f.r);ctx.lineWidth=7;ctx.strokeStyle='#ffc528';ctx.stroke();ctx.restore()}\nfunction draw(){if(!assets[state.bg])return;ctx.clearRect(0,0,W,H);const fp={taipei:[.52,.43],drone:[.58,.48],builders:[.5,.46]}[state.bg];cover(assets[state.bg],0,0,W,H,...fp);const sh=ctx.createLinearGradient(0,0,0,H);sh.addColorStop(0,'rgba(2,18,26,.66)');sh.addColorStop(.28,'rgba(2,18,26,.3)');sh.addColorStop(.62,'rgba(2,18,26,.72)');sh.addColorStop(1,'rgba(2,18,26,.97)');ctx.fillStyle=sh;ctx.fillRect(0,0,W,H);ctx.fillStyle='rgba(5,28,37,.78)';ctx.fillRect(0,0,W,160);logo(assets.edth,54,43,300,92);logo(assets.ntu,494,54,530,78);ctx.fillStyle='#ffc528';ctx.fillRect(54,186,44,5);ctx.textAlign='left';ctx.fillStyle='#fff';ctx.font='800 22px Arial,sans-serif';ctx.fillText('TDTH \/ TAIPEI 2026',116,197);photo();const l=words[state.lang],s=l[state.status];ctx.fillStyle='#ffc528';ctx.font=state.lang==='zh'?'800 38px \"PingFang TC\",\"Noto Sans TC\",sans-serif':'800 36px Arial,sans-serif';ctx.fillText(s.k,70,900);ctx.fillStyle='#fff';if(state.lang==='zh'){ctx.font='900 72px \"PingFang TC\",\"Noto Sans TC\",sans-serif';ctx.fillText(l.title[0],70,995);ctx.font='900 100px \"PingFang TC\",\"Noto Sans TC\",sans-serif';ctx.fillText(l.title[1],70,1111)}else{ctx.font='900 66px Arial,sans-serif';ctx.fillText(l.title[0],70,992);ctx.font='900 80px Arial,sans-serif';ctx.fillText(l.title[1],70,1090)}ctx.fillStyle='rgba(255,255,255,.26)';ctx.fillRect(70,1154,940,2);ctx.fillStyle='#e8f1f2';ctx.font=state.lang==='zh'?'700 27px \"PingFang TC\",\"Noto Sans TC\",sans-serif':'700 25px Arial,sans-serif';ctx.fillText(l.details,70,1212);ctx.fillStyle='#1fc0b0';ctx.font='900 32px Arial,sans-serif';ctx.fillText('TDTH.ORG',70,1292);ctx.textAlign='right';ctx.fillStyle='#fff';ctx.font='700 18px Arial,sans-serif';ctx.fillText('BUILD \u00b7 COLLABORATE \u00b7 DELIVER',1010,1288);ctx.textAlign='left'}\nconst caption=()=>words[state.lang][state.status].c+(state.lang==='zh'?`\\n\\n\u6d3b\u52d5\u8cc7\u8a0a\u8207\u6b63\u5f0f\u7533\u8acb\uff1a${EVENT_URL}\\n#TDTH2026 #TaiwanDefenseTech #TaiwanResilience`:`\\n\\nEvent details and official application: ${EVENT_URL}\\n#TDTH2026 #TaiwanDefenseTech #TaiwanResilience`),filename=()=>`tdth-2026-${state.status}-${state.lang}.png`,blob=()=>new Promise((ok,no)=>canvas.toBlob(b=>b?ok(b):no(Error()),'image\/png'));\nfunction download(b){const u=URL.createObjectURL(b),a=document.createElement('a');a.href=u;a.download=filename();document.body.appendChild(a);a.click();a.remove();setTimeout(()=>URL.revokeObjectURL(u),1500)}\nasync function copyText(t){if(navigator.clipboard&&window.isSecureContext)return navigator.clipboard.writeText(t);const a=document.createElement('textarea');a.value=t;a.readOnly=true;a.style.cssText='position:fixed;opacity:0';document.body.appendChild(a);a.select();const ok=document.execCommand('copy');a.remove();if(!ok)throw Error()}\nfunction say(t){message.textContent=t;clearTimeout(say.t);say.t=setTimeout(()=>message.textContent='',8000)}function fail(t){error.hidden=!t;error.textContent=t||''}\nasync function usePhoto(f){fail('');if(!f||!f.type.startsWith('image\/'))return fail('\u8acb\u9078\u64c7 JPG\u3001PNG \u6216 WebP \u5716\u7247\u3002');if(f.size>MAX)return fail('\u7167\u7247\u8acb\u5c0f\u65bc 25 MB\u3002');if(state.photoUrl)URL.revokeObjectURL(state.photoUrl);const u=URL.createObjectURL(f);try{state.photo=await load(u);state.photoUrl=u;state.zoom=1;state.x=state.y=0;zoom.value=1;zoom.disabled=false;remove.disabled=false;draw();say('\u7167\u7247\u5df2\u52a0\u5165\uff0c\u53ef\u76f4\u63a5\u62d6\u66f3\u8abf\u6574\u4f4d\u7f6e\u3002')}catch(e){URL.revokeObjectURL(u);fail('\u7121\u6cd5\u8b80\u53d6\u9019\u5f35\u7167\u7247\uff0c\u8acb\u6539\u7528 JPG\u3001PNG \u6216 WebP\u3002')}}\nfunction clearPhoto(){if(state.photoUrl)URL.revokeObjectURL(state.photoUrl);Object.assign(state,{photo:null,photoUrl:null,zoom:1,x:0,y:0});file.value='';zoom.value=1;zoom.disabled=true;remove.disabled=true;draw()}\nfunction point(e){const r=canvas.getBoundingClientRect();return{x:(e.clientX-r.left)*W\/r.width,y:(e.clientY-r.top)*H\/r.height}}\ncanvas.addEventListener('pointerdown',e=>{if(!state.photo)return;const p=point(e);Object.assign(state,{drag:true,sx:p.x,sy:p.y,ox:state.x,oy:state.y});canvas.setPointerCapture(e.pointerId)});canvas.addEventListener('pointermove',e=>{if(!state.drag)return;const p=point(e);state.x=state.ox+p.x-state.sx;state.y=state.oy+p.y-state.sy;draw()});const stop=e=>{state.drag=false;if(e.pointerId!==undefined&&canvas.hasPointerCapture(e.pointerId))canvas.releasePointerCapture(e.pointerId)};canvas.addEventListener('pointerup',stop);canvas.addEventListener('pointercancel',stop);canvas.addEventListener('wheel',e=>{if(!state.photo)return;e.preventDefault();state.zoom=Math.max(1,Math.min(2.8,state.zoom+(e.deltaY<0?.08:-.08)));zoom.value=state.zoom;draw()},{passive:false});\n$$('input[name=tdth-language]').forEach(i=>i.addEventListener('change',e=>{state.lang=e.target.value;draw()}));$$('input[name=tdth-status]').forEach(i=>i.addEventListener('change',e=>{state.status=e.target.value;draw()}));$$('input[name=tdth-background]').forEach(i=>i.addEventListener('change',e=>{state.bg=e.target.value;draw()}));file.addEventListener('change',e=>usePhoto(e.target.files[0]));remove.addEventListener('click',clearPhoto);zoom.addEventListener('input',e=>{state.zoom=Number(e.target.value);draw()});\n$('#tdthDownload').addEventListener('click',async()=>{try{download(await blob());say('\u5df2\u4e0b\u8f09 1080 \u00d7 1350 PNG\u3002')}catch(e){say('\u5716\u7247\u7522\u751f\u5931\u6557\uff0c\u8acb\u91cd\u65b0\u6574\u7406\u9801\u9762\u5f8c\u518d\u8a66\u3002')}});$('#tdthCopy').addEventListener('click',async()=>{try{await copyText(caption());say('\u8cbc\u6587\u5df2\u8907\u88fd\u3002')}catch(e){say('\u7121\u6cd5\u81ea\u52d5\u8907\u88fd\uff0c\u8acb\u5141\u8a31\u526a\u8cbc\u7c3f\u6b0a\u9650\u5f8c\u518d\u8a66\u3002')}});$('#tdthNativeShare').addEventListener('click',async()=>{try{const b=await blob(),f=new File([b],filename(),{type:'image\/png'});if(navigator.share&&navigator.canShare&&navigator.canShare({files:[f]})){await navigator.share({files:[f],title:'TDTH 2026',text:caption()});say('\u5206\u4eab\u5b8c\u6210\u3002');return}download(b);await copyText(caption()).catch(()=>{});if(navigator.share)await navigator.share({title:'TDTH 2026',text:caption(),url:EVENT_URL});say('\u6b64\u700f\u89bd\u5668\u7121\u6cd5\u76f4\u63a5\u5206\u4eab\u5716\u7247\uff1b\u5df2\u4e0b\u8f09 PNG \u4e26\u8907\u88fd\u8cbc\u6587\u3002')}catch(e){if(e&&e.name==='AbortError')return;say('\u5206\u4eab\u672a\u5b8c\u6210\uff1b\u53ef\u6539\u7528\u300c\u4e0b\u8f09 PNG\u300d\u8207\u300c\u8907\u88fd\u8cbc\u6587\u300d\u3002')}});$('#tdthLinkedIn').addEventListener('click',async()=>{const pop=window.open('about:blank','_blank');try{download(await blob());await copyText(caption()).catch(()=>{});const u=`https:\/\/www.linkedin.com\/sharing\/share-offsite\/?url=${encodeURIComponent(EVENT_URL)}`;if(pop)pop.location.href=u;else window.location.href=u;say('\u5df2\u4e0b\u8f09\u5716\u7247\u4e26\u8907\u88fd\u8cbc\u6587\uff1b\u8acb\u5728 LinkedIn \u4e0a\u50b3 PNG\u3002')}catch(e){if(pop)pop.close();say('\u7121\u6cd5\u958b\u555f LinkedIn\uff0c\u8acb\u78ba\u8a8d\u700f\u89bd\u5668\u672a\u963b\u64cb\u5f48\u51fa\u8996\u7a97\u3002')}});\nPromise.all(Object.entries(sources).map(async([k,u])=>[k,await load(u)])).then(all=>{all.forEach(([k,i])=>assets[k]=i);return document.fonts&&document.fonts.ready?document.fonts.ready:null}).then(draw).catch(()=>fail('\u7121\u6cd5\u8f09\u5165\u6d3b\u52d5\u7d20\u6750\uff0c\u8acb\u91cd\u65b0\u6574\u7406\u9801\u9762\u3002'));\n})();\n<\/script>\n\n","protected":false},"excerpt":{"rendered":"<p>TDTH 2026 \u00b7 SHARE CARD GENERATOR \u88fd\u4f5c\u4f60\u7684\u53c3\u8207\u5ba3\u544a\u5716 Create your Taiwan Defense Tech Hackathon attendee card, then share it with your network. \u25cf \u7167\u7247\u53ea\u5728\u4f60\u7684\u88dd\u7f6e\u5167\u8655\u7406\uff0c\u4e0d\u6703\u4e0a\u50b3\u3002 Your photo stays on your device. \u4e0a\u50b3\u5f8c\u53ef\u76f4\u63a5\u62d6\u66f3\u7167\u7247\u8abf\u6574\u4f4d\u7f6e\uff0c\u4e26\u4ee5\u6ed1\u687f\u6216\u6ed1\u9f20\u6efe\u8f2a\u7e2e\u653e\u3002 01 \u8a9e\u8a00 \/ LANGUAGE \u4e2d\u6587 English 02 \u53c3\u8207\u72c0\u614b \/ STATUS \u5df2\u5b8c\u6210\u7533\u8acbApplication submitted \u6211\u5c07\u53c3\u52a0I&#8217;m joining Demo DayI&#8217;m coming to Demo Day 03 \u80cc\u666f \/ BACKGROUND \u81fa\u5317 [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-172","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/baoqi-smart.com\/edth\/wp-json\/wp\/v2\/pages\/172","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/baoqi-smart.com\/edth\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/baoqi-smart.com\/edth\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/baoqi-smart.com\/edth\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/baoqi-smart.com\/edth\/wp-json\/wp\/v2\/comments?post=172"}],"version-history":[{"count":4,"href":"https:\/\/baoqi-smart.com\/edth\/wp-json\/wp\/v2\/pages\/172\/revisions"}],"predecessor-version":[{"id":178,"href":"https:\/\/baoqi-smart.com\/edth\/wp-json\/wp\/v2\/pages\/172\/revisions\/178"}],"wp:attachment":[{"href":"https:\/\/baoqi-smart.com\/edth\/wp-json\/wp\/v2\/media?parent=172"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}