Webページを素早くPDFにしたくて
Webページを素早くPDFにしたくてChatGPTに特別なソフトを使わず指定したアドレスをPDFにして保存するスクリプトを組んでもらいました。
実際に作ってもらったPowerShellのスクリプトは下においておきます。
使ってみるとアドレスを入れるのが面倒。
そこで聞き方を変えて
「ChromeでワンクリックでそのページをPDFにして保存するブックマークレットを作成して」
と聞くと
ブックマークレットを作成するには、以下のJavaScriptコードを使用します。このコードは、現在開いているウェブページをPDFとしてダウンロードします。
```javascript
javascript:(function() {window.print();})();
```
このコードをブックマークとして保存するには、以下の手順を守ってください。
1. お気に入りバーを開きます(表示されていない場合は、Ctrl+Shift+B(Windows)またはCommand+Shift+B(Mac)を押します)。
2. お気に入りバーの任意の位置に右クリックし、「新しいページ」を選択します。
3. 名前フィールドに任意の名前を入力します(例:「Save as PDF」)。
4. URLフィールドに上記のJavaScriptコードを貼り付けます。
5. 「保存」をクリックします。
これで、ブックマークレットが作成されました。これをクリックすると、現在開いているページがPDFとして印刷ダイアログが開きます。そこで「保存」を選択すると、ページがPDFとして保存されます。
ただし、この方法はページの印刷可能な部分のみをPDFに保存します。また、一部のウェブサイトでは動作しない場合があります。
が返ってきました。
そうか、ワンクリックではないですが、印刷プレビューを開くだけのブックマークレットでいいわけか。なんとなくこちのほうが手っ取り早そう。
ChatGPTに作ったPowerShellスクリプト
# Google Chromeのパスを指定します。
$chromePath = 'C:\Program Files (x86)\Google\Chrome\Application\chrome.exe'
# URLをユーザーに入力させます。
$url = Read-Host -Prompt 'URLを入力してください'
# HTMLを取得します。
$html = Invoke-WebRequest -Uri $url
# HTMLからタイトルを取得します。
$title = $html.ParsedHtml.title
# ファイル名として使えない文字を削除します。
$invalidChars = [IO.Path]::GetInvalidFileNameChars()
foreach ($char in $invalidChars) {
$title = $title.Replace($char, '')
}
# タイトルが長すぎる場合は切り詰めます。
if ($title.Length -gt 100) {
$title = $title.Substring(0, 100)
}
# 保存先のPDFファイル名を指定します。
$pdfPath = "$env:USERPROFILE\Desktop\$title.pdf"
# Chromeをヘッドレスモードで起動し、指定されたURLのページをPDFとして保存します。
& $chromePath --headless --print-to-pdf=$pdfPath $url
# スクリプトの終了メッセージを表示します。
Write-Host "PDFが作成されました。保存先:$pdfPath"
この記事が気に入ったらサポートをしてみませんか?