有没有比这更好的方法从PrintDocument获取页数?

Jon*_*hem 8 c# printing printdocument

这是我提出的最好的:

public static int GetPageCount( PrintDocument printDocument )
{
    printDocument.PrinterSettings.PrintFileName = Path.GetTempFileName();
    printDocument.PrinterSettings.PrintToFile = true;

    int count = 0;

    printDocument.PrintController = new StandardPrintController();
    printDocument.PrintPage += (sender, e) => count++;

    printDocument.Print();

    File.Delete( printDocument.PrinterSettings.PrintFileName );

    return count;
}
Run Code Online (Sandbox Code Playgroud)

有一个更好的方法吗?(这实际上很慢)

小智 5

所以最终的解决方案是:

public static int GetPageCount(PrintDocument printDocument)
{
    int count = 0;
    printDocument.PrintController = new PreviewPrintController();
    printDocument.PrintPage += (sender, e) => count++;
    printDocument.Print();
    return count;
}
Run Code Online (Sandbox Code Playgroud)