最終更新日:2011/05/25

Firefoxを使ってみる

Firefoxを使ったメモです。テスト環境は10.6.xです。

クリップボードのURLを開くアドオンを作ってみる。OpenURLinClipboard

FirefoxはAppleScriptに対応していなくてURLをタブで開いたり、新規ウインドウで開いたりするのがめんどうです。メニュークリックやキーイベントを送ってできないことも無いですがもうちょっと楽にできるようにクリップボードに入っているURLをタブや新規ウインドウで開くアドオンを作ってみました。

機能一覧

ダウンロード

保存した後にFirefoxで開いてください。

  1. OpenURLinClipboard0.4.xpi(Firefoxの対応バージョンを全部にした。"Copy Document Size"はCopyDocumentSize0.1.xpiに分けました)
  2. OpenURLinClipboard0.3.xpi(document.heightの取得方法をwin.innerHeight + win.scrollMaxYにした。)
  3. OpenURLinClipboard0.2.xpi(document.width,document.heightをコピーできるようにした)
  4. OpenURLinClipboard0.1.xpi

AppleScriptでの使い方例

キーボードショートカットからOpenURLinClipboardを実行します。

my OpenURLByFirefox({"http://www.google.com","http://www.yahoo.co.jp"}, "window")


on OpenURLByFirefox(theOpenURLList, showSearchResultWindowMode)
	tell application "Firefox"
		activate
	end tell
	
	tell application "System Events" --ウインドウが無い場合をチェック
		tell process "Firefox"
			try
				tell application "System Events" --ウインドウが無い場合をチェック
					tell process "Firefox"
						tell menu bar 1
							tell menu "ツール"
								tell menu item "Copy URL to Clipboard"
									name
								end tell
							end tell
						end tell
					end tell
				end tell
			on error
				set theURL to item 1 of theOpenURLList
				set theOpenURLList to rest of theOpenURLList
				
				(*tell application "Firefox"
					open location theURL
					end tell*)
				do shell script "open -a Firefox " & quoted form of theURL
				delay 0.5
				set showSearchResultWindowMode to "tab"
				
			end try
		end tell
	end tell
	
	
	
	set theSaveClip to the clipboard as record
	
	set theURLText to ""
	repeat with theURL in theOpenURLList
		set theURLText to theURLText & theURL & return
	end repeat
	
	set the clipboard to theURLText
	
	tell application "System Events"
		if showSearchResultWindowMode is "tab" then
			keystroke "3" using {command down, option down, control down}
		else
			keystroke "4" using {command down, option down, control down}
		end if
	end tell
	delay 0.5
	set the clipboard to theSaveClip
	
end OpenURLByFirefox

FirefoxのウインドウをpdfにしてみるSIMBLプラグイン。Window2Pdf

Firefox4では全体が画像のテキストの選択ができないpdfになります。

ダウンロード

SIMBLプラグインと命令を送るAppleScriptです。基本的に同梱されているSIMBLプラグインとAppleScriptをいっしょに使ってください。

  1. Window2PdfVer1.2.zip(AppleScriptだけ修正)
  2. Window2PdfVer1.1.zip(Windowに対してdataWithPDFInsideRect:できるようにした。SIMBLプラグインとAppleScript共に変更されています。)
  3. Window2PdfVer1.zip

FirefoxのコンテキストメニューからWindow2Pdfを実行できるようにするアドオンとスクリプト

Window2PdfのSIMBLプラグインは必要です。含まれていませんので上のリンクから取得してください。

Window2Pdf.xpiをFirefoxにインストールした後に同梱のWindow2PdfByFirefox.scptのUnixパスを下記画像のようにabout:configで設定してください。

これを使うとCopyDocumentSizeは必要ありません。

  1. Window2PdfForFirefoxVer1.zip

使い方

  1. Window2Pdf.bundleをSIMBLのプラグインフォルダに入れる
  2. CopyDocumentSize0.1.xpiをFirefoxにインストール。document.heightを別の方法で取得できるなら不要で Window2Pdf.scptを書き換えてください。
  3. Firefoxを再起動してWindow2PdfとCopyDocumentSizeを読み込ませる
  4. Firefoxでpdfにしたいページを表示中に Window2Pdf.scptを実行する。 Window2Pdf.scptはFirefoxが最前面の状態で実行してください。スクリプトメニューなどを使ってください。
  5. デスクトップにpdfが保存されてプレビューで表示される。

使用上の注意

  1. Firefox4ではハードウェアアクセラレーションがオンだと真っ白のpdfになり、また、オフにしてもできあがるpdfの文字等は選択できないようです。これでは画像にするのと同じのなのでこれを使うメリットはほとんどありません。
  2. pdfを作る時に一時的にウインドウのスタイルとサイズを変更していますがこれがアプリケーションに悪い影響を与えるかもしれません。
  3. Window2Pdf.scptでpdfにする時にツールバー等を切り取る為のサイズ指定がありますが、これは人によって違うかもしれないので、違ったら修正してください。
  4. Firefox以外のアプリケーションのウインドウもpdfにできます。ただし、ちゃんと保存されない場合が多いです。
  5. フレームがあるページはうまく全体の保存ができません。
  6. Googleの検索結果は高さがちゃんと取得できないようで全体が保存されませんでした。他のページでも全体が保存されない場合があるかもしれません。
  7. リンクはクリックできません。プレビューではURLが書いてある場合はクリック可能なようです。

Firefoxのウインドウをpdfにする内部的な方法

  1. ページ全体をdataWithPDFInsideRect:でpdfにする為にウインドウサイズをコンテンツのサイズにする。そこでウインドウで表示中のコンテンツの高さをCopyDocumentSizeで取得する。Safariみたいに手軽にJavaScriptを実行できないのでCopyDocumentSizeで取得できるようにした。
  2. ウインドウの高さをWindow2Pdfで変更する。この際ウインドウのサイズを画面以上にする為にCocoaの日々: ウィンドウサイズの制約解除〜NSBorderlessWindowMaskを参考にウインドウのスタイルをNSBorderlessWindowMaskに変更する。
  3. [ NSApp mainWindow ]のcontentViewにdataWithPDFInsideRect:を実行してpdfを取得する。
  4. ウインドウのスタイルとサイズを元に戻す
  5. pdfを保存する