見出し画像

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"

この記事が気に入ったらサポートをしてみませんか?