以下の 2つの改善案がありますので、お試しください。
なお、ご利用環境によっては改善が見られない場合があります。ご了承ください。
案1. ご利用の PC において、利用しないプリンターの削除を行ってください。
インストール済みのプリンターが少ないほど処理時間が短縮化されます。
具体的には、
Windows 7
「スタート」>「デバイスとプリンター」>利用しないプリンターを右クリック >
「デバイスの削除」>「はい」
Windows XP
「スタート」>「プリンタとFAX」>利用しないプリンターを右クリック >
「削除」>「はい」
案2. 作成したアプリでライブラリや CLF レイアウトファイルの事前読み込みを行ってください。
具体的には、以下の BeforePrintAppStart() を呼び出してください。
--[C#]--
[System.Runtime.InteropServices.DllImport("kernel32", CharSet = System.Runtime.InteropServices.CharSet.Unicode, SetLastError = true)]
extern static IntPtr LoadLibrary(string lpLibFileName);
[System.Runtime.InteropServices.DllImport("kernel32", SetLastError = true)]
extern static bool FreeLibrary(IntPtr hLibModule);
private IntPtr[] pDLLs;
private string[] libs = {
"AxInterop.QRMAKERADLib.dll",
"Citizen.LayoutUtilities.Common.dll",
"Citizen.LayoutUtilities.Printing.dll",
"GrapeSystems.Core.Common.dll",
"GrapeSystems.Core.Drawing.Fx20.dll",
"GrapeSystems.Core.Parts.dll",
"GrapeSystems.Core.Parts.Frames.dll",
"GrapeSystems.Library.BarcodeAd.dll",
"GrapeSystems.Library.Controls.dll",
"GrapeSystems.Library.Image.dll",
"Interop.QRMAKERADLib.dll",
"System.Drawing.dll",
};
// LayoutPrintEngineのインスタンス
private Citizen.LayoutUtilities.Printing.Controller clpc;
// CLFファイルパス
private const string CLF_FILE_PATH = "Layout1.CLF";
/// <summary>
/// 印刷アプリ開始前処理
/// </summary>
private void BeforePrintAppStart()
{
//
loadLibrarys();
//
loadClfFile(CLF_FILE_PATH);
}
/// <summary>
/// 印刷アプリ終了後処理
/// </summary>
private void AfterPrintAppExit()
{
//
freeLibrarys();
}
/// <summary>
/// 関連ライブラリのロード
/// </summary>
private int loadLibrarys()
{
int count = 0;
if (libs == null) return count;
pDLLs = new IntPtr[libs.Length];
int index = 0;
foreach (string lib in libs)
{
IntPtr ptr = pDLLs[index++] = LoadLibrary(lib);
if (ptr != IntPtr.Zero)
{
count++;
}
}
return count;
}
/// <summary>
/// 関連ライブラリの開放
/// </summary>
private int freeLibrarys()
{
int count = 0;
if (pDLLs == null) return count;
int index = 0;
foreach (IntPtr ptr in pDLLs)
{
if (ptr != IntPtr.Zero)
{
FreeLibrary(ptr);
pDLLs[index] = IntPtr.Zero;
count++;
}
index++;
}
return count;
}
/// <summary>
/// CLF ファイルのダミーロード
/// </summary>
private int loadClfFile(string clfFile)
{
int result = -1;
if (clpc == null)
{
clpc = new Citizen.LayoutUtilities.Printing.Controller();
}
result = clpc.Open(clfFile);
if (result == 0)
{
clpc.BeginPrint();
clpc.EndPrint();
clpc.Close();
}
return result;
}
--[C#]--