OOo2.4.3 印刷時に部数を2以上指定すると、2乗の枚数が印刷される

スプレッドシート (Calc) について
返信する
aokada
記事: 1
登録日時: 7月 3, 2012, 1:27 pm

OOo2.4.3 印刷時に部数を2以上指定すると、2乗の枚数が印刷される

投稿記事 by aokada »

こちら、Windows 2003 Serverにて、OOo2.4.3を使用して、Calcを印刷しています。

印刷時のインターフェースは、com.sun.star.view.XPrintableのprintメソッドを使用していますが、
印刷部数に2以上を指定すると、2乗の枚数が印刷されてしまいます。
例)2部指定すると4枚、4部指定すると16枚印字されます。

同じアプリケーションを、OOo3.2.1で動作させると、指定部数分の印刷ができることが確認できました。

2乗の枚数が印刷される現象は、OOo2.4.3のBugなのでしょうか?
同じ現象が確認された方はいらっしゃいますでしょうか?

以下、印刷部分のコードです。
/**
* 印刷
* <!-- TYPE DESCRIPTION --><PRE>
* @param xComponent xComponentオブジェクト
* @param printerName プリンタ名
* @param copies 印刷部数
* @param printArea 印刷範囲
*
* @throws OpenOfficeException
*
*<B>特記事項:</B>
* ・特になし
*<B>構造:</B>
*
* <PRE>
*/
protected void print( XComponent xComponent,
String printerName,
String copies,
String printArea,
String pages )
throws OpenOfficeException {
LogWriter.putDebug( "印刷処理開始 プリンタ名:" + printerName + " 部数:" + copies + " ページ:" + pages );

// 印刷範囲設定
set_printArea(xComponent,printArea);

//プリンタ名設定
//プリンタ名の指定がNullの場合は、デフォルトプリンタへ出力
XPrintable xPrintable = (XPrintable)UnoRuntime.queryInterface( XPrintable.class, xComponent );
if( printerName != null ){
PropertyValue[] printerDesc = new PropertyValue[1];
printerDesc[0] = new PropertyValue();
printerDesc[0].Name = "Name";
printerDesc[0].Value = printerName;
try{
xPrintable.setPrinter( printerDesc );
}catch( IllegalArgumentException e ){
LogWriter.putError( this.getClass().getName() + e.getMessage(), e );
throw new OpenOfficeException( e.getMessage() );
}
}

//ページ指定されている場合を追加 2004/01/13 ADD Y.Okubo
PropertyValue[] printOpts = null;
if( pages != null ){
//ページ指定あり
printOpts = new PropertyValue[2];
printOpts[1] = new PropertyValue();
printOpts[1].Name = "Pages";
//ページの区切りに","(カンマ)が使えないので、"."(ピリオド)で代用
printOpts[1].Value = StringUtil.replace( pages,".",",");
} else {
//ページ指定なし
printOpts = new PropertyValue[1];
}
//印刷部数設定
printOpts[0] = new PropertyValue();
printOpts[0].Name = "CopyCount";
printOpts[0].Value = new Integer(copies);

//印刷実行
try{
xPrintable.print(printOpts);
String prtName = printerName;
if( prtName == null ){
printerName = "デフォルト";
}
LogWriter.putInfo( prtName + "に印刷しました" );

}catch( IllegalArgumentException e ) {
LogWriter.putError( "印刷に失敗しました " + this.getClass().getName() + e.getMessage(), e );
throw new OpenOfficeException( e.getMessage() );
}
}
OpenOffice 2.4.3 on Windows 2003 Server
返信する

“Calc”に戻る