CutePDF Writer 自動選紙的問題 |
答題得分者是:christie
|
douglas
初階會員 發表:24 回覆:42 積分:38 註冊:2008-03-05 發送簡訊給我 |
請教各位大大:
我利用CutePDF Writer進行QR 轉 PDF 的工作 碰上轉檔過程無法自動選紙的問題 就轉檔來說,應該是說無法自動選擇輸出的尺寸 轉出來的是部分資料被裁切的畫面 當然,前提是QR輸出的資料畫面是正常的,直接列印也是正常的。 目前只能在印表機驅動軟體端強制設定輸出尺寸應急 不過無論參數上如何調整,實際輸出卻只有A4、A3兩種規格 請問該如何著手解決? --- 補充 2009.05.01 --- 環境: D2009, QuickReoprt-v5.04.2(解決預覽若使用列印設定會導致異常) 在輸出之前 先使用 QuickRep.Prepare 方法 再使用 QuickRep.Print 方法 目前不需另外其他處理程序, 轉出的檔案內容都能完整 編輯記錄
douglas 重新編輯於 2009-05-01 12:23:59, 註解 無‧
|
christie
資深會員 發表:30 回覆:299 積分:475 註冊:2005-03-25 發送簡訊給我 |
// Demo: 選取紙張格式
unit XXXmain; interface uses ..... , Printers, WinSpool; implementation uses .. WinSpool2; procedure _SetPrintDefault(_sFormName:string); var _PPrinterInfo2 : PPrinterInfo2; pPrinterName : PChar; sPrinterName : String; hPrinter : THandle; cbNeeded : DWORD; dwBufferSize : DWORD; begin if not GetDefaultPrinter(nil, dwBufferSize) then begin case GetLastError of // 即使呼叫成功也會有此一錯誤(Buffer 不足), 我只是要取得 Buffer 大小所以忽略此錯誤訊息 ERROR_INSUFFICIENT_BUFFER : ; ERROR_FILE_NOT_FOUND : raise Exception.Create('無預設印表機.'); else raise Exception.Create('GetDefaultPrinter Error, Code : ' IntToStr(GetLastError)); end; end; pPrinterName := nil; try GetMem(pPrinterName, dwBufferSize); GetDefaultPrinter(pPrinterName, dwBufferSize); sPrinterName := StrPas(pPrinterName); // <-- 預設印表機名稱 finally if pPrinterName <> nil then begin FreeMem(pPrinterName, dwBufferSize); pPrinterName := nil; end; end; // 設定印表機的紙張大小名稱 if not WinSpool.OpenPrinter(PChar(sPrinterName), hPrinter, nil) then raise Exception.Create('OpenPrinter Error, Code : ' IntToStr(GetLastError)); WinSpool.GetPrinter(hPrinter, 2, nil, 0, @cbNeeded); _PPrinterInfo2 := nil; try GetMem(_PPrinterInfo2, cbNeeded); WinSpool.GetPrinter(hPrinter, 2, _PPrinterInfo2, cbNeeded, @cbNeeded); with _PPrinterInfo2^.pDevMode^ do begin StrLCopy(dmFormName, PChar(_sFormName), CCHFORMNAME - 1); //dmPaperSize := PaperSizeID(sPrinterName, sFormName); dmFields := DM_FORMNAME; // DM_PAPERSIZE end; // 不知為何 SetPrinter 一定會有錯誤 -> GetLastError = ERROR_ACCESS_DENIED // (即使以 Administrator 身份執行), 所以先把 raise 註解掉, Who could explain it for me ? Thanks. if not WinSpool.SetPrinter(hPrinter, 2, _PPrinterInfo2, 0) then ; //raise Exception.Create('SetPrinter Error, Code : ' IntToStr(GetLastError)); finally if _PPrinterInfo2 <> nil then FreeMem(_PPrinterInfo2); _PPrinterInfo2 := nil; end; end; *************************** 用法: _GetPrintDefault('A4'); _GetPrintDefault('Letter'); ===================引 用 douglas 文 章=================== 請教各位大大: 我利用CutePDF Writer進行QR 轉 PDF 的工作 碰上轉檔過程無法自動選紙的問題 就轉檔來說,應該是說無法自動選擇輸出的尺寸 轉出來的是部分資料被裁切的畫面 當然,前提是QR輸出的資料畫面是正常的,直接列印也是正常的。 目前只能在印表機驅動軟體端強制設定輸出尺寸應急 不過無論參數上如何調整,實際輸出卻只有A4、A3兩種規格 請問該如何著手解決?
------
What do we live for if not to make life less difficult for each other?
編輯記錄
christie 重新編輯於 2008-11-11 09:48:06, 註解 無‧
|
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |