Delphi 如何检测用户是否正在打印为PDF?

Delphi 如何检测用户是否正在打印为PDF?,delphi,pdf,Delphi,Pdf,我正在使用Delphi7,想知道文件是否正在打印到PDF设备,以便我可以进行一些特殊处理。这就是我要让它工作的原因 // If the printer is a PDF type it will ask for the file name here. Printer.BeginDoc; // The next line returns the file extension of the original file name and // not the extension of the fil

我正在使用Delphi7,想知道文件是否正在打印到PDF设备,以便我可以进行一些特殊处理。这就是我要让它工作的原因

// If the printer is a PDF type it will ask for the file name here.
Printer.BeginDoc;
// The next line returns the file extension of the original file name and 
// not the extension of the file being printed to.
Extension := AnsiUpperCase(ExtractFileExt(Printer.Title));
// I've added this line to get it to work but want to be able 
// just check if the current child is being printed to a pdf device.
if CustomPrintDialog.ActivePrinter.Caption = 'Adobe PDF' then

您不可能知道最终目的地是否为PDF。向用户询问信息。用户可以知道。如果我是你,我会重新考虑“特殊处理”是否真的有必要,或者是否真的需要特殊处理。当我打印到PDF时,我希望结果与打印到纸上时一样。这就是PDF的魅力所在。如果结果不同,那么我将对应用程序失去信任。具体来说,为什么是PDF?我有时会打印到Postscript,然后根据它生成PDF。在这种情况下,您的“特殊处理”是否仍然适用?打印到XPS怎么样?我邀请您发布一个新问题,描述您正在寻求解决的潜在问题。该程序将打印到具有连续纸张且没有边距的设备上。我正在绘制的图形可能是200英寸或更长。如果我将其打印到PDF,客户机去打印,他们很少有连续打印机。因此,当打印到PDF时,我们希望打印到强制页面大小为8.25英寸x 10.5英寸“这样,当项目在大多数打印机上打印时,它将适合。进入打印机的图形是按比例缩放的,因此无法缩放到打印机。这不是可以从支持的纸张尺寸中获得的吗?不是,因为当您查询PDF“打印机”时,它会显示纸张尺寸为8.5 x 11。实际上,没有多少打印机可以在这种尺寸的纸张上打印。另外,我不能让客户端缩放来打印8.5x11文档,因为这会使文档的缩放失效。在大多数打印机无法打印的地方,几乎总是有左、上、下页边距。