若200張就差了1cm了對一些特別的報表來說 就是不能差這麼大的距離請問先進們有沒有方法處理這種問題 |
答題得分者是:ko
|
huangeider
高階會員 ![]() ![]() ![]() ![]() 發表:288 回覆:492 積分:231 註冊:2003-02-26 發送簡訊給我 |
|
chih
版主 ![]() ![]() ![]() ![]() ![]() ![]() 發表:48 回覆:1186 積分:639 註冊:2002-04-02 發送簡訊給我 |
|
ko
資深會員 ![]() ![]() ![]() ![]() ![]() 發表:28 回覆:785 積分:444 註冊:2002-08-14 發送簡訊給我 |
|
領航天使
站長 ![]() ![]() ![]() ![]() ![]() ![]() 發表:12216 回覆:4186 積分:4084 註冊:2001-07-25 發送簡訊給我 |
引言: 小弟想印寬20高10的paper若印一張問題並不大 但印個100張連印則第一張與第100張則差距甚大 除了把紙張調到剛好的寬和高但paper只能調到cm 以下2位若印一張差0.005mm連印100張就差5mm了 若200張就差了1cm了對一些特別的報表來說 就是不能差這麼大的距離 請問先進們有沒有方法處理這種問題? aric請問您的報表紙一單張有幾個孔, 或說是用全張幾孔的紙去幾等分的, 這樣我才能幫您! ~~~Delphi K.Top討論區站長~~~
------
~~~Delphi K.Top討論區站長~~~ |
P.D.
版主 ![]() ![]() ![]() ![]() ![]() ![]() 發表:603 回覆:4038 積分:3874 註冊:2006-10-31 發送簡訊給我 |
引言: 小弟想印寬20高10的paper若印一張問題並不大 但印個100張連印則第一張與第100張則差距甚大 除了把紙張調到剛好的寬和高但paper只能調到cm 以下2位若印一張差0.005mm連印100張就差5mm了 若200張就差了1cm了對一些特別的報表來說 就是不能差這麼大的距離 請問先進們有沒有方法處理這種問題? aric這的確是很煩人, 我也有經驗, 但並不是真能解決這個問題, 而是我 測試看印到第幾張出現誤差到客戶無法接受的情況, 我在印表中設計 一個中斷值, 當達到這個值系統就暫停列印, 並發出訊息要求使用者 重新調整紙張後再往下做! 其他我大概想不到其他方法, 不過使用QR的話, 因為基準值可以用mm(或inch), 我有做過誤差率在 0.0001以下, 換具話說10000張才有誤差, 可以說是沒有跑位了, 其他 的報表系統多半都以pixel為基準, 其誤差率就差蠻多了! 其次, 看來你應該是用標籤紙吧!因為標籤紙沒有像報表紙有明確的切裁點 通常是4張或8張為一份 還有另一個做法, 不要設單一張規格為一份報表 也就是一小張為10x20, 我通常會計算4張或8張所要的高度(含間距), 然後 將紙張大小設定為4/8張大小, 讓電腦以這樣為一份來印, 1.則其誤差率可以由原來的1小張降低為1大張發生誤差率, 那就可以提高4/8倍的列印張數 2.因為報表每印一份即會重設紙張大小(如果你設定參數要重新設定的話), 那每一張印一份則重設會造成job大塞車及浪費資源, 4/8張才重設一次, 不但速度提昇, job也會少很多呢! 以上是個人經驗, 提供參考~~~~ 發表人 - P.D. 於 2003/03/08 00:30:28 |
huangeider
高階會員 ![]() ![]() ![]() ![]() 發表:288 回覆:492 積分:231 註冊:2003-02-26 發送簡訊給我 |
引言:aric引言: 小弟想印寬20高10的paper若印一張問題並不大 但印個100張連印則第一張與第100張則差距甚大 除了把紙張調到剛好的寬和高但paper只能調到cm 以下2位若印一張差0.005mm連印100張就差5mm了 若200張就差了1cm了對一些特別的報表來說 就是不能差這麼大的距離 請問先進們有沒有方法處理這種問題? aric 我的報表是12孔的請問您的報表紙一單張有幾個孔, 或說是用全張幾孔的紙去幾等分的, 這樣我才能幫您! ~~~Delphi K.Top討論區站長~~~ |
jackkcg
站務副站長 ![]() ![]() ![]() ![]() ![]() 發表:891 回覆:1050 積分:848 註冊:2002-03-23 發送簡訊給我 |
其實 上述各位大大的方式都會用到 不過我自己的實驗應該以 ko兄 的方式 比較實現準確 但是也是最痛的方式 win2000 的精準度約0.01 所以粉淚 因為我們以一般制式的 通訊標籤為3.8*7.0
為例 光測試0.01的正負質就頭大了 以前使用dos下的 倚天列印方式 可以300張都不會有嚴重偏差之問題 但是那倚天的方式 我看還是粉難 (等天使答覆)哈哈 我使用的紙張也許不同 所以只能說你先自己調size測試 得知列印偏移的最大張數 在此動手腳
不過我的方式 其實如 ko 兄說的 當你的2000紙張精準值知道之後 就不會偏差
這摸大了 注意 因為2000的列印準確度是0.01
也許還有更方便的方式 不過庵是這樣處理過的 *********************************************************
哈哈&兵燹
最會的2大絕招 這個不會與那個也不會 哈哈哈 粉好 Delphi K.Top的K.Top分兩個字解釋Top代表尖端的意思,希望本討論區能提供Delphi的尖端新知
K.表Knowlege 知識,就是本站的標語:Open our mind to make knowledge together!
希望能大家敞開心胸,將知識寶庫結合一起
------
********************************************************** 哈哈&兵燹 最會的2大絕招 這個不會與那個也不會 哈哈哈 粉好 Delphi K.Top的K.Top分兩個字解釋Top代表尖端的意思,希望本討論區能提供Delphi的尖端新知 K.表Knowlege 知識,就是本站的標語:Open our mind |
huangeider
高階會員 ![]() ![]() ![]() ![]() 發表:288 回覆:492 積分:231 註冊:2003-02-26 發送簡訊給我 |
引言: 其實 上述各位大大的方式都會用到 不過我自己的實驗應該以 ko兄 的方式 比較實現準確 但是也是最痛的方式 win2000 的精準度約0.01 所以粉淚 因為我們以一般制式的 通訊標籤為3.8*7.0 為例 光測試0.01的正負質就頭大了 以前使用dos下的 倚天列印方式 可以300張都不會有嚴重偏差之問題 但是那倚天的方式 我看還是粉難 (等天使答覆)哈哈 我使用的紙張也許不同 所以只能說你先自己調size測試 得知列印偏移的最大張數 在此動手腳 不過我的方式 其實如 ko 兄說的 當你的2000紙張精準值知道之後 就不會偏差 這摸大了 注意 因為2000的列印準確度是0.01 也許還有更方便的方式 不過庵是這樣處理過的 ********************************************************* 哈哈&兵燹 最會的2大絕招 這個不會與那個也不會 哈哈哈 粉好 Delphi K.Top的K.Top分兩個字解釋Top代表尖端的意思,希望本討論區能提供Delphi的尖端新知 K.表Knowlege 知識,就是本站的標語:Open our mind to make knowledge together! 希望能大家敞開心胸,將知識寶庫結合一起其實我也是像 jackkcg & Ko 兄兩位所講的改紙張格式 然後慢慢調經過近三天的測試還是會移位只能連續印7張 我在17與16.99發現17cm的話會在下一張往下慢慢移動 16.99cm的話則往上慢慢移動 不知如何是好 我想今天再測一次看看是不是我沒測好 或是印表機的問題 再向各位報告 aric |
領航天使
站長 ![]() ![]() ![]() ![]() ![]() ![]() 發表:12216 回覆:4186 積分:4084 註冊:2001-07-25 發送簡訊給我 |
您還沒回答我的問題?
連續式套表報表紙一個孔距為0.5 inch,
若您的報表為整數孔數用inch為單位去設定紙長一定會準,
若為非整數孔數的話就會有誤差,
原因為印表機的實際硬體滾動單位為 1/180 inch,
我的解決辦法為透過直接印表輸出去控制印表機的指令,
Direct Print! 可否再詳細告訴我您紙張的規格?
您的報表紙一單張有幾個孔?
或說是用全張幾孔的紙去幾等分的?
這樣我才能幫您! ~~~Delphi K.Top討論區站長~~~
------
~~~Delphi K.Top討論區站長~~~ |
huangeider
高階會員 ![]() ![]() ![]() ![]() 發表:288 回覆:492 積分:231 註冊:2003-02-26 發送簡訊給我 |
引言: 您還沒回答我的問題? 連續式套表報表紙一個孔距為0.5 inch, 若您的報表為整數孔數用inch為單位去設定紙長一定會準, 若為非整數孔數的話就會有誤差, 原因為印表機的實際硬體滾動單位為 1/180 inch, 我的解決辦法為透過直接印表輸出去控制印表機的指令, Direct Print! 可否再詳細告訴我您紙張的規格? 您的報表紙一單張有幾個孔? 或說是用全張幾孔的紙去幾等分的? 這樣我才能幫您! ~~~Delphi K.Top討論區站長~~~回應 領航兄 我的報表是24height*17width 13孔的支票 aric |
jackkcg
站務副站長 ![]() ![]() ![]() ![]() ![]() 發表:891 回覆:1050 積分:848 註冊:2002-03-23 發送簡訊給我 |
其實我也是像 jackkcg & Ko 兄兩位所講的改紙張格式
然後慢慢調經過近三天的測試還是會移位只能連續印7張
我在17與16.99發現17cm的話會在下一張往下慢慢移動
16.99cm的話則往上慢慢移動 不知如何是好
我想今天再測一次看看是不是我沒測好
或是印表機的問題 再向各位報告
我的測試 是 30~100張都不會有你的情況 所以我只能說 你在測試 真正的 (小問題)vs = (大問題) 建議你在看看
【問題】在Windows 2000 下 Qreport 的 Custom size 問題
http://delphi.ktop.com.tw/topic.php?TOPIC_ID=25007
【BCB】【問題】BMP檔列印,不同的印表機,結果不相同.
http://delphi.ktop.com.tw/topic.php?TOPIC_ID=26249
以我的 高3.8*寬7.0 這列印7張之後=與a4大小 不過你的值如正確
也就是30~100張沒有問題
我測 發票紙 (高14.01*寬7.0) 一天 也有500張以上 也無問題
由於windows無法控制 印表機之 後退 所以你需設一張 預設 清除校正之 top 你再試試 *********************************************************
哈哈&兵燹
最會的2大絕招 這個不會與那個也不會 哈哈哈 粉好 Delphi K.Top的K.Top分兩個字解釋Top代表尖端的意思,希望本討論區能提供Delphi的尖端新知
K.表Knowlege 知識,就是本站的標語:Open our mind to make knowledge together!
希望能大家敞開心胸,將知識寶庫結合一起
------
********************************************************** 哈哈&兵燹 最會的2大絕招 這個不會與那個也不會 哈哈哈 粉好 Delphi K.Top的K.Top分兩個字解釋Top代表尖端的意思,希望本討論區能提供Delphi的尖端新知 K.表Knowlege 知識,就是本站的標語:Open our mind |
領航天使
站長 ![]() ![]() ![]() ![]() ![]() ![]() 發表:12216 回覆:4186 積分:4084 註冊:2001-07-25 發送簡訊給我 |
引言: 其實我也是像 jackkcg & Ko 兄兩位所講的改紙張格式 然後慢慢調經過近三天的測試還是會移位只能連續印7張 我在17與16.99發現17cm的話會在下一張往下慢慢移動 16.99cm的話則往上慢慢移動 不知如何是好 我想今天再測一次看看是不是我沒測好 或是印表機的問題 再向各位報告13孔應為 13*2.54=16.51cm才對啊, 若您可以在印完一張後補一個 1/180寸的印表前進動作, 是否可以校正成功? directprint的動作可以參考我的程式 unit Unit1; interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm1 = class(TForm) Button1: TButton; procedure Button1Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation {$R *.DFM} uses printers; procedure DirectPrint(s:string); type TPrnBuffRec = record BuffLength : word; Buffer : array [0..255] of char; end; var Buff : TPrnBuffRec; i,n:integer; c:char; begin n:=length(s); for i:=1 to n do begin c:=s[i]; Buff.Buffer[i-1]:=c; end; Buff.BuffLength := n; Escape(Printer.Canvas.Handle, PASSTHROUGH, 0, @Buff, nil); end; procedure TForm1.Button1Click(Sender: TObject); begin DirectPrint('This is printer ABC !' #13#10); end; end. 至於前進1/180寸的動作請先查印表機的指令! try it! ~~~Delphi K.Top討論區站長~~~
------
~~~Delphi K.Top討論區站長~~~ |
huangeider
高階會員 ![]() ![]() ![]() ![]() 發表:288 回覆:492 積分:231 註冊:2003-02-26 發送簡訊給我 |
引言:我測試的結果是用孔數*2.54是很準確的 但這支票的規格是17公分左右 跟一般點陣連續印表的a4紙的孔距不同 在最後一孔跟第一孔與上下頁緣的距離 比在a4的距離較長所以用這個模式似不可行 不過我還是把紙的精準值測出來了 直接設定了紙張大小幾十張沒問題 不過也是有點兒費時就是了 謝謝大伙的幫忙 這次得用骰子來point結案引言: 其實我也是像 jackkcg & Ko 兄兩位所講的改紙張格式 然後慢慢調經過近三天的測試還是會移位只能連續印7張 我在17與16.99發現17cm的話會在下一張往下慢慢移動 16.99cm的話則往上慢慢移動 不知如何是好 我想今天再測一次看看是不是我沒測好 或是印表機的問題 再向各位報告13孔應為 13*2.54=16.51cm才對啊, 若您可以在印完一張後補一個 1/180寸的印表前進動作, 是否可以校正成功? directprint的動作可以參考我的程式 unit Unit1; interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm1 = class(TForm) Button1: TButton; procedure Button1Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation {$R *.DFM} uses printers; procedure DirectPrint(s:string); type TPrnBuffRec = record BuffLength : word; Buffer : array [0..255] of char; end; var Buff : TPrnBuffRec; i,n:integer; c:char; begin n:=length(s); for i:=1 to n do begin c:=s[i]; Buff.Buffer[i-1]:=c; end; Buff.BuffLength := n; Escape(Printer.Canvas.Handle, PASSTHROUGH, 0, @Buff, nil); end; procedure TForm1.Button1Click(Sender: TObject); begin DirectPrint('This is printer ABC !' #13#10); end; end. 至於前進1/180寸的動作請先查印表機的指令! try it! ~~~Delphi K.Top討論區站長~~~ |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |