をターゲットに、私ははるかに簡単に複雑print.cssの取り扱いになりリアクト簡単なコンポーネントを作成しました。代わりに、すべてのマークアップ上のクラス、IDのなどを追加し、複雑なprint.cssファイルを作成する、次のようにあなたは私の反応-印刷ライブラリを使用することができます。
https://github.com/captray/react-print
rootにこのIDを追加します(またはどこかに高いアップあなたのDOMツリー内の)あなたの現在のコンテンツの(しかし、内部のbodyタグ内)
<div id="react-no-print">
は、「プリントマウント」のidを持つdiv要素を追加、または任意のIDをマウントし、使用したいのですが。
<div id="print-mount"></div>
物事を簡単にするために、独自のスタイルで子コンポーネントを含むことができる(あなたの印刷可能なバージョンのためにあなたがしたい構造を作成します。
var PrintTemplate = require('react-print');
var ReactDOM = require('react-dom');
var React = require('react');
var MyTemplate = React.createClass({
render() {
return (
<PrintTemplate>
Your custom HTML or React Components go here, and will replace the existing HTML inside of the "react-no-print" ID, and instead it will render what's inside of your custom template.
</PrintTemplate>
);
}
});
ReactDOM.render(<MyTemplate/>, document.getElementById('print-mount'));
基本的に、これはあなたの印刷可能なバージョンをレンダリングし、それがされるまで隠されていますこれはスライディングギャラリーに必要な場合は、スライダの変更イベントにフックして、古いものをアンマウントして新しいものをマウントして、プリントテンプレートを再作成したいと思うでしょう。
希望これは役に立ちます!
レイアウトがウィンドウのサイズ変更に反応する場合は、印刷CSSを使用してウィンドウのサイズを変更し、レイアウトを再配置するだけではいかがですか? –
用紙のサイズや向きを伝える方法はありますか?それ以外の場合は、常に正しい結果を生成しない単一の値をハードコードする必要があります。 – Bill