簡體   English   中英

默認打印機設置被忽略

[英]Default printer settings are ignored

使用Windows Print Spooler API,我們可以打印出XPS文件。

問題是打印后台處理程序忽略 默認的打印機設置

(我們已經放棄嘗試應用打印機設置 。默認打印機設置就足夠了。)

例如......無論控制面板中的設置是什么,打印輸出總是以彩色和每頁一張紙出現:黑白/彩色,雙面/非雙面,每張多頁/單頁每張紙。

其他應用程序(如MS Word和Adobe)遵循默認的打印機設置。

我們使用的是Delphi XE2和Windows 7 64位。

此測試代碼是自包含的,因此您可以將其粘貼以進行測試...

使用以下命令填充帶有打印機名稱的組合框:

uses
  Printers

ComboBox1.Items.Assign(Printer.Printers);

印刷程序:

uses
  Winapi.WinSpool

procedure PrintXPS(PrinterName, FileNameXPS: string; ParentFormHandle: THandle = 0);

  //  Printer handle

  procedure Printer_Open(out Printer: THandle; Defaults: PPrinterDefaultsW = nil);
  begin
    if  not OpenPrinterW(PWideChar(PrinterName), Printer, Defaults) then
      RaiseLastOSError;
  end;

  procedure Printer_Close(Printer: THandle);
  begin
    if  not ClosePrinter(Printer) then
      RaiseLastOSError;
  end;

  //  Print jobs

  function  JobCreate(Printer: THandle; FileName: string): Cardinal;
  var
    lBufferSize: Cardinal;
    lAddJobInfo: PAddJobInfo1W;
  begin
    //  Create job
    AddJobW(Printer, 1, nil, 0, lBufferSize);
    GetMem(lAddJobInfo, lBufferSize);
    try
      if  not AddJobW(Printer, 1, lAddJobInfo, lBufferSize, lBufferSize)  then
        RaiseLastOSError;
      Result  := lAddJobInfo.JobId;
      //  Copy the file into place
      CopyFile(PWideChar(FileName), lAddJobInfo.Path, True);
    finally
      FreeMem(lAddJobInfo, lBufferSize);
    end;
  end;

  procedure JobStart(Printer: THandle; JobID: Cardinal);
  begin
    if  not ScheduleJob(Printer, JobID) then
      RaiseLastOSError;
  end;

var
  PrinterA: THandle;
  JobID: Cardinal;
begin
  if  not FileExists(FileNameXPS)  then
    raise Exception.Create('File not found: ' + FileNameXPS);

  Printer_Open(PrinterA, nil);
  try
    JobID := JobCreate(PrinterA, FileNameXPS);
    JobStart(PrinterA, JobID);
  finally
    Printer_Close(PrinterA);
  end;

end;

據我所知,你無法改變.xps文件的外觀。

XPS代表XML Paper Specification,它實際上是一種“電子紙”,屏幕上和印刷品中的文檔完全符合作者的意圖 任何曾經歷過的人,由於不同的默認打印機而在共享計算機上的Office文檔的頁面布局如何發生變化,都會感激不盡。

編輯

測試

1.)默認黑白打印機設置。 打開。 xps文件打印。

  • 使用IE ==彩色輸出。
  • 使用XPS Viewer EP ==彩色輸出。

默認打印機設置==忽略。

2.)對話框:手動打印機設置以打印黑白設置。

  • IE ==黑白輸出。
  • XPS Viewer EP ==黑白輸出。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM