客製打版・數位版型
DIGITAL SEWING PATTERN・依您的量身客製

新文化式婦女原型
上身+袖・客製打版 PDF

輸入您的胸圍、腰圍、背長與袖長,系統依新文化式製圖法為您重新打版,產出 1:1 實寸 A4 拼接 PDF——不是固定尺碼縮放,而是專屬於您身形的原型。

  • 上身原型(含胸褶、肩褶、六處腰褶)+袖原型(含袖山記號、G 線、EL)
  • 1:1 實寸輸出,A4 拼接列印,附封面、10cm 校正框與對齊格線
  • 付款完成後填寫 Email,訂單確認信自動寄出,版型 PDF 立即取得
  • 適用胸圍 60–130cm,內附完整製圖數值表

版型內容示意

示意圖為 B83/W64 打版結果。您的版型將依實際量身重新計算。

🧵 店主設定(開店前請先閱讀)
  1. 商店名與售價:以文字編輯器打開本檔,最上方 SHOP 設定區可修改 name(店名)與 price(售價)。
  2. 統一金流 PAYUNi:登入 PAYUNi 商店後台,建立「快速收款連結」或「一頁收款 UNiOnepage」(金額設定與售價相同),把收款網址貼到 SHOP.payment.payuniLink。顧客會在 PAYUNi 官方頁面完成信用卡/ATM/超商/LINE Pay 付款,回到本頁填寫交易序號末五碼,您再到 PAYUNi 後台「交易查詢」核對即可。
    安全提醒:PAYUNi 完整 API(UPP)需要伺服器端以 Hash Key/IV 加密,金鑰絕不可放在網頁原始碼中,因此本商店採用官方收款連結方式串接,金鑰完全不落地、最安全。
  3. 自動寄送版型(已串接您的 Apps Script):顧客填寫 Email 送出後,網頁會把產好的 PDF 傳給您的 Google Apps Script,由它寄出含 PDF 附件的信件。請確認 Apps Script 部署設定為「執行身分:我」「誰可以存取:所有人」,否則瀏覽器將無法呼叫。
  4. 升級版 Apps Script(建議):以下版本會同時通知店主新訂單(含付款末五碼,方便核帳)。把 OWNER 換成您的信箱後,取代原本的程式碼並重新部署:
    function doPost(e) {
      try {
        var p = JSON.parse(e.postData.contents);
        var blob = Utilities.newBlob(Utilities.base64Decode(p.pdfBase64), 'application/pdf', p.filename);
        var body = "您好," + (p.name || "") + "!\n\n" +
          "感謝您的訂購,附件是您的客製版型 PDF。\n" +
          "訂單編號:" + (p.orderId || "-") + "\n" +
          "量身資料:" + (p.measurements || "-") + "\n" +
          "金額:" + (p.amount || "-") + "\n\n" +
          "列印時請務必選擇「實際大小(100%)」,並以封面 10cm 校正框確認比例。\n\n" +
          (p.shopName || "") + " 敬上";
        MailApp.sendEmail({ to: p.email,
          subject: "【" + (p.shopName || "版型商店") + "】您的客製版型 PDF(訂單 " + (p.orderId || "") + ")",
          body: body, attachments: [blob] });
        var OWNER = "your-email@example.com";  // ← 換成您的信箱即可收到訂單通知
        if (OWNER !== "your-email@example.com") {
          MailApp.sendEmail(OWNER, "【新訂單】" + (p.orderId || "") + " " + (p.amount || ""),
            "顧客:" + (p.name || "") + " <" + p.email + ">\n量身:" + (p.measurements || "") +
            "\n付款序號末五碼:" + (p.payRef || "") + "\n時間:" + new Date());
        }
        return ContentService.createTextOutput(JSON.stringify({status:"success"})).setMimeType(ContentService.MimeType.JSON);
      } catch(err) {
        return ContentService.createTextOutput(JSON.stringify({status:"error", message: err.message})).setMimeType(ContentService.MimeType.JSON);
      }
    }
  5. 正式上架:把本 HTML 檔上傳到任何靜態網頁空間(GitHub Pages、Netlify、Vercel 皆免費)即可分享網址開賣。