元ドキュメントとマスタードキュメントでのレンダリングの差違

ワードプロセッサ (Writer) について
返信する
Florian
記事: 13
登録日時: 2月 5, 2011, 3:33 pm

元ドキュメントとマスタードキュメントでのレンダリングの差違

投稿記事 by Florian »

いつもお世話になっております。Florianです。

先日のクラッシュの件はまだこちらでも調査中ですが、もうひとつ問題があります。
ファイルの分割を行ってマスター文書経由で統合しているのですが、元ファイルとまったく同じスタイルのテンプレートを使ったマスター文書経由のファイルでレンダリング結果が異なります。
具体的には、独自に作成した「ソースコード」のスタイルの背景が途切れて線が入ることがあります。

・元ファイルでのレンダリング
元ファイル
元ファイル
・マスター文書経由のレンダリング
マスター文書経由のファイル
マスター文書経由のファイル
再現可能なサンプルも用意しました。
この線が入る位置は特定されておらず、前後に別の文書を入れることによってまた変化します。

 これは、以下の環境それぞれで同様に起きることを確認しています。
・Windows7(64bit)+LibreOffice3.3.0
・Windows7(32bit)+LibreOffice3.3.0
・Ubuntu Linux10.10+LibreOffice3.3.0
・Ubuntu Linux10.10+OpenOffice.org3.2.1
 ただし、線の入る箇所は全ての環境で異なります。

 ここで知りたいのは以下です。
1.当面、この障害はどのようにすれば回避できるでしょうか
2.この障害がデータではなくコードに由来するものであれば、どのBTSにどのような形で登録するのがよろしいでしょうか
 よろしくお願いします。
添付ファイル
sample.zip
状況再現可能なサンプル
(68.23 KiB) ダウンロード数: 289 回
LibreOffice3.3.0
Windows7(64bit)
Ubuntu10.10(x86)
Florian
記事: 13
登録日時: 2月 5, 2011, 3:33 pm

Re: 元ドキュメントとマスタードキュメントでのレンダリングの差違

投稿記事 by Florian »

こちらで検証を行った結果を追記します。
以下の手順を繰り返すと徐々に白線が消えていき、ページ数が安定します。
1.「印刷プレビュー」
2.解除
一度では完全には消えませんが、繰り返すうちに白線や白線のページまたぎなどが消えていき、3回程度行う事でほぼ安定します。
これは、サンプルの文書だけではなく、以下の巨大なマスター文書でも同様でした。

http://code.google.com/p/gamag-no2/source/checkout

直接解決に結びつかないバッドノウハウですが、当面の確認は可能です。
以上、参考までに。
LibreOffice3.3.0
Windows7(64bit)
Ubuntu10.10(x86)
MoIshihara
記事: 337
登録日時: 6月 21, 2010, 6:52 am

Re: 元ドキュメントとマスタードキュメントでのレンダリングの差違

投稿記事 by MoIshihara »

Florian さん こんにちは

・まず、フォーラムでは、テーマごとにトピックを作成するルールなのですが、今回の場合発症する症状は異なるのですがたぶん同じ原因から来ているのだろうと思いますので、新しいトピックはこれ以上増やす必要は無いと思います。

・OpenOffice のメモリ設定は現在どの様に設定されているのかを教えて下さい。
・以下の様にマクロを作成してナビゲータの更新の代わりに試してみて下さい。

コード: 全て選択

Sub updateMaster
	Dim oDoc As Object
	Dim oFrame As Object
	Dim oDispatch As Object
	oDoc = ThisComponent
	if not oDoc.supportsService("com.sun.star.text.GlobalDocument") then Exit Sub
	oFrame = oDoc.CurrentController.Frame
	oDispatch = createUnoService("com.sun.star.frame.DispatchHelper")
	oDoc.getRendererCount(oDoc, array)
	oDispatch.executeDispatch(oFrame, ".uno:UpdateAllIndexes", "", 0, array)
	oDispatch.executeDispatch(oFrame, ".uno:UpdateAllLinks", "", 0, array)
	oDispatch.executeDispatch(oFrame, ".uno:UpdateAllIndexes", "", 0, array)
	oDoc.getRendererCount(oDoc, array)
End Sub
Florian
記事: 13
登録日時: 2月 5, 2011, 3:33 pm

Re: 元ドキュメントとマスタードキュメントでのレンダリングの差違

投稿記事 by Florian »

では、今後「フォントワーク」の話と同根とみなしてこちらにのみリプライをつける方針で考えます。

・メモリについて
昨日メモリを増やして試したあと、ディフォルトに戻しています。つまり、
グラフィックキャッシュ 20MB
オブジェクト辺りのメモリ 5.2MB
使用後メモリから削除 0:10
オブジェクトのキャッシュ 20

・マクロについて
まず、このトピックの再現用サンプルで実行しました。
マクロ登録後、「更新->リンク」の代わりにLibreOffice Basicとして実行しました。
1回目ではまだ白線は残っていましたが、実行を数回行うと徐々に改善され、3回ほどで不正な部分は無くなりました。

つぎに、先のトピックでの巨大なマスター文書に対しても同様に行いました。
まず、そのまま実行したところ1回目で同様にクラッシュしました。
そこで、メモリの設定を以下に変えました。

グラフィックキャッシュ 256MB
オブジェクト辺りのメモリ 8.0MB
使用後メモリから削除 0:10
オブジェクトのキャッシュ 1024

この状態で実行してもやはり初回でクラッシュします。

確認すべき事がありましたらお願いします。
LibreOffice3.3.0
Windows7(64bit)
Ubuntu10.10(x86)
MoIshihara
記事: 337
登録日時: 6月 21, 2010, 6:52 am

Re: 元ドキュメントとマスタードキュメントでのレンダリングの差違

投稿記事 by MoIshihara »

Florian さん こんにちは 確認ありがとうございます

・Libre に環境をかえました、Libre でも落ちない様にする設定は、(WindowsXPで試しています)

グラフィックキャッシュ 256MB
オブジェクト辺りのメモリ 8.0MB
使用後メモリから削除 0:01 ← 変更
オブジェクトのキャッシュ 1024

・マクロも変えてあります(時間が掛かるので終了ダイアログを表示させます、終了するまで他の操作をしない様にして下さい)

コード: 全て選択

Sub updateMaster
   Dim oDoc As Object
   Dim oFrame As Object
   Dim oDispatch As Object
   oDoc = ThisComponent
   if not oDoc.supportsService("com.sun.star.text.GlobalDocument") then Exit Sub
   oFrame = oDoc.CurrentController.Frame
   oDispatch = createUnoService("com.sun.star.frame.DispatchHelper")
   oDispatch.executeDispatch(oFrame, ".uno:Escape", "", 0, array)
   oDoc.CurrentController.Select(oDoc.CurrentController.ViewCursor)
   oDoc.getRendererCount(oDoc, array)
   oDispatch.executeDispatch(oFrame, ".uno:UpdateAllIndexes", "", 0, array)
   oDoc.getRendererCount(oDoc, array)
   oDispatch.executeDispatch(oFrame, ".uno:UpdateAllLinks", "", 0, array)
   oDispatch.executeDispatch(oFrame, ".uno:UpdateAllIndexes", "", 0, array)
   oDoc.getRendererCount(oDoc, array)
   msgbox "更新が完了しました"
End Sub
アバター
parpy
記事: 388
登録日時: 11月 4, 2008, 11:50 pm

Re: 元ドキュメントとマスタードキュメントでのレンダリングの差違

投稿記事 by parpy »

Florianさん、MoIshharaさん、お疲れ様です。
目黒です。

>1.当面、この障害はどのようにすれば回避できるでしょうか

行間に隙間が出来てしまう現象についての場当たり的解決策ですが、
マスタードキュメントを開いた後で、段落スタイル「ソースコード」の行間設定を
比率:101%や102%に変更することで、高い確率で表示が正しく更新される様です。

また、あの謎の隙間の正体は、スタイルに設定された影の様で、
影の設定を無くすと現象も発生しなくなる様です。

参考になれば幸いです。
Florian
記事: 13
登録日時: 2月 5, 2011, 3:33 pm

Re: 元ドキュメントとマスタードキュメントでのレンダリングの差違

投稿記事 by Florian »

マクロを確認しようとしたのですが、「セキュリティ上の理由からこのマクロを実行できません」というエラーが出ます。
オプションの「セキュリティ->マクロセキュリティ」は「低」になっています。他にマクロ関連の設定はなにかありますでしょうか?
LibreOffice3.3.0
Windows7(64bit)
Ubuntu10.10(x86)
MoIshihara
記事: 337
登録日時: 6月 21, 2010, 6:52 am

Re: 元ドキュメントとマスタードキュメントでのレンダリングの差違

投稿記事 by MoIshihara »

Florian さん こんにちは

・「セキュリティ上の理由からこのマクロを実行できません」というメッセージは見た事がないのですが、マクロの保存先を[マイマクロ][Standard]にしてみてはどうでしょう?

・OpenOffice と LibreOffice を両方インストールしてあると、どうも調子が悪くなる様ですので、後日ハードディスクを増設して、Pure な LibreOffice 環境を VirtualBox で作ろうと思います。
・具体的には、LibreOffice のユーザフォルダを削除したら LibreOffice が OpenOffice のユーザフォルダを使用して起動してきました、そのせいかどうかは判りませんが OpenOffice までクラッシュする様になりましたので、アンインストール後インストールする必要がある様です。
・前回用意したマクロも怪しい状況で作ったものですので、使わないで下さい。(テストするだけでしたら、どうぞ)
MoIshihara
記事: 337
登録日時: 6月 21, 2010, 6:52 am

Re: 元ドキュメントとマスタードキュメントでのレンダリングの差違

投稿記事 by MoIshihara »

Florian さん こんにちは

・やっとUbuntuのインストールが終わりましたので一言、
・Windows版では(たぶん代替フォントになっていて)表示されていたので気付きませんでしたが、
・表紙の「がまぐ」のフォントワークの文字は何故[HG丸ゴシックM-PRO]商用フォントを使っているのですか?
http://designpocket.jp/dl_font_category ... x?bid=7375
・IPAフォントに切り替えないとマスタードキュメントどころかサブドキュメントでも表示されていませんが?
Florian
記事: 13
登録日時: 2月 5, 2011, 3:33 pm

Re: 元ドキュメントとマスタードキュメントでのレンダリングの差違

投稿記事 by Florian »

ありがとうございます。
調べてみました。確かにHGP丸ゴシック……ですね、確かに。VLゴシック(これは記事内で使っている)だと勘違いしていました。このままでは可搬性低いのでロゴに関しては一端ベクター化して別扱いにします。
LibreOffice3.3.0
Windows7(64bit)
Ubuntu10.10(x86)
返信する

“Writer”に戻る