【发布时间】:2021-12-24 09:04:37
【问题描述】:
我正在尝试制作一个没有对话窗口的打印例程,我知道这是使用 PRINT 选项而不是 PRINT_DIALOG 完成的。
Gtk.PrintOperationAction.PRINT_DIALOG
Gtk.PrintOperationAction.PRINT
带有对话框选项的例程相应地工作,这些选项被“print.toFile(...)”函数捕获并在行中读取:
pageSetup.loadFile(Assets.absoluteFilePath('pagesetup.conf'));
printSettings.loadFile(Assets.absoluteFilePath('printsettings.conf'));
它们出现在日志中。
但是什么都没有发生,没有任何事件被触发('begin-print'、'draw-page' 或其他)。
我将 node-gtk 包与 Meteor 一起使用,这在“Assets.absoluteFilePath”(Meteor)函数中得到了证明 以及在camelCase中的所有其他行(node-gtk这样做)
我不相信这些包是问题的原因,在我看来缺少某些东西,因为结果是三个 (3 -> IN_PROGRESS)。
我发现的所有示例都使用 PRINT_DIALOG 例程
botao2.on('clicked', () => {
let printSettings = new Gtk.PrintSettings();
let pageSetup = new Gtk.PageSetup();
pageSetup.loadFile(Assets.absoluteFilePath('pagesetup.conf'));
printSettings.loadFile(Assets.absoluteFilePath('printsettings.conf'));
let print = new Gtk.PrintOperation({
//'allow-async': true,
});
print.setUnit(Gtk.Unit.NONE);
print.setPrintSettings(printSettings);
print.setDefaultPageSetup(pageSetup);
print.setUseFullPage(true);
print.setShowProgress(true);
console.log({ pageSetup, printSettings });
print.on('begin-print', (printContext, num) => {
print.nPages = 1;
width = Math.floor(printContext.getWidth());
height = Math.floor(printContext.getHeight());
});
print.on('draw-page', (printContext) => {
console.log('draw-page', printContext);
});
print.on('status-changed', (...args) => {
console.log('status-changed', args);
});
print.on('done', (res) => {
console.log('done', res);
});
console.log(print.run(Gtk.PrintOperationAction.PRINT)); // always 3 -> IN_PROGRESS
});
【问题讨论】:
标签: node.js meteor printing gtk