WebViewで印刷時にheader/footerを付ける

メモ。


・PrintInfoでNSPrintHeaderAndFooterをYESにするだけではWebViewではheader/footerは印刷されない。

・これは、header/footerの印刷処理がNSViewの-drawPageBorderWithSize: で定義されているから

・WebViewでの印刷処理(実際にはその子要素のView、HTMLの場合WebHTMLView?)の-drawPageBorderWithSize: にはこの処理は実装されていない

・WebHTMLViewはパブリックなクラスではないので、無理やり定義+カテゴリを使って-drawPageBorderWithSize: を置き換え、NSViewの-drawPageBorderWithSize: を実行後にWebHTMLViewの-drawPageBorderWithSize: を実行するようにすればうまくいくんじゃないかい?

・WebHTMLViewのソースは幸いにしてオープン化されているので利用可能。



ということで明日テストしてみる。てかてっきりheader/footerの印刷はNSPrintOperation側でpageHeader/pageFooterを呼んでやっているものだと勘違いしていてハマった感大。



参考資料はhttp://developer.apple.com/releasenotes/Cocoa/AppKitOlderNotes.htmlとかhttp://developer.apple.com/documentation/Cocoa/Conceptual/Printing/Printing.htmlとか。


Permalink | コメントを読む | hylomの日記