線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:2157
推到 Plurk!
推到 Facebook!

CutePDF Writer 自動選紙的問題

答題得分者是:christie
douglas
初階會員


發表:24
回覆:42
積分:38
註冊:2008-03-05

發送簡訊給我
#1 引用回覆 回覆 發表時間:2008-11-10 18:32:12 IP:59.125.xxx.xxx 訂閱
請教各位大大:

我利用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

發送簡訊給我
#2 引用回覆 回覆 發表時間:2008-11-11 09:35:12 IP:122.117.xxx.xxx 未訂閱
// 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, 註解 無‧
系統時間:2024-04-24 12:59:51
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!