JavaScriptのopenメソッドでコントローラーのCreatePDFメソッドを呼び出し、PDFファイルを別タブで開く処理を作った。
JavaScript
function openFile() {
let newWindow = open("/Home/CreatePDF");
}
C#
public class HomeController
{
[HttpGet]
public IActionResult CreatePDF()
{
// PDF作成処理
...
return File(fileContents, "application/pdf");
}
}
この状態だと、タブ名がコントローラーのメソッド名(CreatePDF)になってしまう。
以下のようにdocument.titleを設定したところ、最初の数秒は反映されるが、PDFの読み込みが終わったタイミングでタブ名がCreatePDFに書き換わってしまった。
JavaScript
function openFile() {
let newWindow = open("/Home/CreatePDF");
newWindow.document.title = "タブ名";
}
結論
onloadとsetTimeoutを組み合わせ、PDFの読み込みが完了してから0.5秒後にタブ名を設定することで実現できた。(秒数は要調整)
JavaScript
function openFile() {
let newWindow = open("/Home/CreatePDF");
newWindow.onload = function () {
setTimeout(function () {
newWindow.document.title = "タブ名";
}, 500);
};
}