gpt4 book ai didi

qt - 打印不同尺寸的页面 - 确定打印机是否为 pdf

转载 作者:行者123 更新时间:2023-12-01 13:22:44 25 4
gpt4 key购买 nike

问题:

我的项目...打印一系列页面...基于特定模板和数据库信息创建...

在某些情况下,要打印的页面顺序可以有不同的大小。

我一直在尝试打印到真正的打印机,生成多页

if (m_printer->newPage()) { ... }

在物理打印机上,如果我尝试更改页面大小,它要么不起作用,要么使打印机处于错误状态。

所以看起来没有太多选择,只能让每个页面成为一个单独的工作。小缺点 - 可能在网络上。好吧。

但是,在 pdf 或任何类型的文件打印上,无论序列包含在多页的单个文档中,还是创建数百个不同的文档,每个文档一页,都会产生巨大的差异。

所以,我找到了这个 Is it possible to make a pdf with different page size in Qt?
这似乎正是我所需要的,如果我打印成 pdf - 而对于真正的打印机,我会将每一页作为一个单独的作业。

唯一的问题:

如何判断我是在创建 pdf 文件,还是在将作业发送到真正的打印机?

我查看了 QPrinter 和 QPrinterInfo,没有发现任何有用的信息。

可能因为 Adob​​e Acrobat 而启用了 Pdf 打印。

我目前正在 Windows 中实现它。

编辑为什么获取输出格式(Naidu 在下面的回答)不起作用:

qprinter.cpp:
void QPrinterPrivate::initEngines(QPrinter::OutputFormat format, const QPrinterInfo &printer)
{
..
// Only set NativeFormat if we have a valid plugin and printer to use
if (format == QPrinter::NativeFormat) { //////// which of course has to be, we have to support any printer
ps = QPlatformPrinterSupportPlugin::get();
QPrinterInfo printerToUse = findValidPrinter(printer);
if (ps && !printerToUse.isNull()) { //////// both valid since the PDF writer is valid
outputFormat = QPrinter::NativeFormat;
printerName = printerToUse.printerName();
}
}
...
}

我想检查一些东西,除了名称中可能包含“pdf”这一事实。如果需要,我愿意使用糟糕的 DEVMODE,我只是不知道要寻找什么。

最佳答案

使用公共(public)函数

QPrinter::outputFormat()

它返回一个枚举类型枚举QPrinter::OutputFormat

并检查它是否是QPrinter::PdfFormat

http://doc.qt.io/qt-5/qprinter.html#OutputFormat-enum

关于qt - 打印不同尺寸的页面 - 确定打印机是否为 pdf,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49283697/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com