2014-12-31 7 views
5

私はCSSBoxを使ってWebページのHTMLとCSSをレンダリングし、それを印刷しています。アプリケーションは特定のサイトを処理する必要があります。考えられるのは、印刷可能に設計されていないサイトを実際に印刷して読みやすくすることです。これは、いくつかのスタイルをオーバーライドして、メニュー、ヘッダーなどを取り除くことによって行われます。Java - 印刷時のレンダリングを改善する方法は?

私の現在のアプローチは、BrowserCanvasというCSSBox APIの一部であるコンポーネントにサイトをレンダリングすることです。私は、サポートされている各サイトのキャンバスの幅を調整して、各ケースで段落がよく見えるようにします。このBrowserCanvasはJPanelの下にあり、プリンタのGraphicsオブジェクトにレンダリングするために使用するペイントメソッドを持っています。

問題は、プリンタのキャンバスは通常300pps、600ppppなどと思っています。私は今、RenderingHintsを設定して、Bicubic補間を使ってドキュメントを拡大して、印刷されたすべてのスペースを埋めるようにしていますページ。

問題は、文書が拡大縮小されたスクリーンショットのようなものであり、印刷されたページではよく見えないことがわかります。

良いアプローチがありますか?

印刷方法

プリンタへのアクセスは、PrinterJobをクラスによって得られます。

次に、ページ番号を受け入れるBrowserCanvasの印刷メソッドをオーバーライドします。その数によると、グラフィックオブジェクトの縮尺と訳を設定します。テキストの最後の行がページに完全に収まらない場合は、次のページに移動します。次に、すべてのスケーリングと変換が適用されたグラフィックオブジェクトをパラメータとして渡すsuper.print()を呼び出します。

フォントサイズのような高解像度ですべてを行うのと同じように、スケーリングがソフトであると思っていましたが、基本解像度ですべてを描画し、結果を目的のサイズに拡大するのがより見えます。私はあなたが新しいレンダリング試みることができると信じてい

ページ1 out-0.png


ページ2 out-1.png

+0

の任意のブラウザから印刷ダイアログを使用することができますか?私はその質問のその部分を理解していない。 –

+0

はい、申し訳ありませんが、質問を更新します。私はBrowserCanvasを拡張してPrintableを実装し、次に印刷をオーバーライドしてから、スケーリングとリダインのヒントを適用し、BrowserCanvas.printを呼び出します。結果は全く満足できるものではなく、印刷されたページは非常にピクセル化されている。テストプラットフォームはLinuxです。 –

+0

私が上書きするprintメソッドは、ヒント、スケーリング、および変換を適用した後、ページ番号を受け入れるものです。グラフィックオブジェクトを受け入れるスーパークラスの印刷メソッドを呼び出し、すべてのプロパティを設定したものを渡します。 –

答えて

1

:(テスト用CSSBoxドキュメントサイトを使用して)変更されたページの

代わりに印刷可能なWebページ代わりにスタイルをオーバーライドしている可能性があります。このように、新しいメディアクエリや印刷スタイルシートを追加することができます:

@media print { 
/* All your print styles go here */ 
#header, #footer, #nav { display: none !important; } 
} 

それとも、古い方法で:

<link href="/print.css" rel="stylesheet" media="print" type="text/css" /> 

、その後、あなたはどのようにあなたは、これがすべてで印刷するために取得しているOS

+0

私は既にプロセスを自動化するアプリケーションの作成を断念しました。今は印刷する前にページのスタイルを変更するだけです。たぶん私はそれを自動的に行うブラウザ拡張を書くことができます。読みやすさはありますが、印刷用ではなくモバイル用のページを最適化することは、フォントが大きすぎることを意味します。それはあなたがフォントサイズを調整することができますが、最小のものも大きすぎます。 –

関連する問題