我正在使用something.Invoke
元素创建一个使用的电子应用程序是Web应用程序的包装器。
我想让用户只需点击一个按钮并选择保存PDF的位置即可创建任何页面的PDF。
Electron示例中的代码允许每次都保存在硬编码位置。
<webview>
此工作正常但每次都会保存在同一位置,并且不允许用户选择位置或名称。
是否可以选择显示&#34;另存为...&#34;对话框?
答案 0 :(得分:1)
我宁愿在服务器端执行保存过程(发送IPC命令并从电子的main.js文件中执行保存)。
无论如何,为了解决你的问题,我不知道是否有官员&#34;另存为&#34;按钮,但你可以实现与它非常相似的东西:
有一种&#34;另存为&#34; (好吧,从技术上讲,它只是要求你一个目录,但你可以真正编辑按钮值..所以你唯一会想念的是文件名)这里用webkit内置,你基本上可以这样做:
let fpHandler = document.getElementByID("savePath");
fpHandler.addEventListener("change", (event) => {
const path = event.target.files[0].path;
// save file happens here.
});
接下来,向按钮添加一个事件监听器:
const filepath = path + "\\" + filename_and_format;
其中path包含所选路径,而字符串末尾没有任何斜杠或反斜杠(因此您需要手动添加,例如:const { remote } = require("electron");
remote.dialog.showSaveDialog(remote.getCurrentWindow(), (filename) => {
console.log("filename is: " + filename);
// here the save should happen.
});
我没试过这个,但我确定它有效。
基本上,诀窍是使用电子远程:http://electron.atom.io/docs/api/remote/,可以在渲染器过程中使用。
远程模块公开对话框 gui相关模块:http://electron.atom.io/docs/api/dialog/
所以你可以通过使用showSaveDialog:http://electron.atom.io/docs/api/dialog/#dialogshowsavedialogbrowserwindow-options-callback
来实现这一点@using (Html.BeginForm("Create", "Article", FormMethod.Post, new { @class = "insert any css class here", role = "form" }))
{