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;