diff --git a/docutranslate/static/index.html b/docutranslate/static/index.html index ad1ef00..62660d9 100644 --- a/docutranslate/static/index.html +++ b/docutranslate/static/index.html @@ -2006,8 +2006,15 @@ const ifr = document.getElementById('printFrame'); fetch(url).then(r => { const cd = r.headers.get('content-disposition') || ''; - const match = cd.match(/filename[^;=\n]*=['"]?([^'"\n;]+)['"]?/i); - const printTitle = match ? match[1].replace(/\.[^.]+$/, '') : ''; + // RFC 5987: filename*=UTF-8'' + const extMatch = cd.match(/filename\*\s*=\s*UTF-8''([^;\s]+)/i); + let printTitle = ''; + if (extMatch) { + try { printTitle = decodeURIComponent(extMatch[1]).replace(/\.[^.]+$/, ''); } catch(e) {} + } else { + const plainMatch = cd.match(/filename\s*=\s*["']?([^"'\n;]+)["']?/i); + if (plainMatch) printTitle = plainMatch[1].trim().replace(/\.[^.]+$/, ''); + } return r.text().then(h => ({ h, printTitle })); }).then(({ h, printTitle }) => { ifr.srcdoc = h;