Windows PDF関連のソフトウェア

# ビューワ

## Adobe Acrobat Reader

[PDFリーダー | Adobe Acrobat Reader](https://www.adobe.com/jp/acrobat/pdf-reader.html)  

代表的なPDFリーダー。[メニュー]→[環境設定]。[一般]を選択し、[Windows Explorer で PDFサムネールのプレビューを有効にする(B)]にチェックを入れることでエクスプローラ上でプレビュー表示がされるようになります。  

![aab.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3193449/bf4841d8-30d8-3779-8f2a-21de2e5b3367.png)  

## Microsoft Edge

ブラウジングだけでなく、PDFファイルの閲覧も可能。タブを右クリックして「垂直タブバーをオンにする」を選択することで、複数のPDFファイルを垂直タブで表示することができます。  

![edgepdf.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3193449/316887d3-f067-69b7-13c3-fc63ee85e1a4.png)  

## Sumatra PDF

[Free PDF Reader - Sumatra PDF](https://www.sumatrapdfreader.org/free-pdf-reader)  

インストール先のファイル数も容量も小さいシンプルなPDFリーダー。マウスホイールでスクロール、マウス右ボタン押したままマウスホイールで拡大縮小ができます。  

# 変換

## CubePDF

[PDF 変換・作成ソフト CubePDF](https://www.cube-soft.jp/cubepdf/)  

仮想プリンタ。通常のプリンタは紙に出力しますが、CubePDFはPC内にPDFファイルとして出力・保存します。Webページや文書ファイルなどをPDFに変換するときに便利です。画像として保存することもできます。  

**Webページを印刷する場合**  
* Print Editを使用すると指定した範囲のみ印刷できます。  
   [Webページの必要な部分だけ印刷できるプラグイン「Print Edit」Chome編 | 知っ得！パソコン塾](https://sittoku.net/print-edit-chrome.html)  
* FireShotを使用するとWEBページを見た目通り印刷できます。  
   [WEBページを見た目そのままに印刷する方法 - イーコネクション株式会社](https://www.e-conne.co.jp/blog/2023)  

**Excelファイルを印刷したときに複数のPDFに分かれてしまう場合**  

印刷対象のシートの印刷品質を統一してから印刷します。GUIで複数シートの印刷品質をまとめて変更すると、印刷品質以外の設定も変更されてしまうのでその場合はVBAで対応します。  
[Excelでブック全体をPDF化したときに分割される場合｜Office Hack](https://office-hack.com/excel/excel-pdf-convert-whole-book-split/)  

```vb
Sub SamePrintQuality()
    
    'プリンターとの通信無効
    Application.PrintCommunication = False
    
    '全シートの印刷品質を設定
    For Each eachSheet In Sheets
        eachSheet.PageSetup.PrintQuality = 1200'dpi
    Next
    
    'シート名を指定して直接変更する場合
    'Sheets("シート名").PageSetup.PrintQuality = 1200'dpi

    'プリンターとの通信有効
    Application.PrintCommunication = True

End Sub
```

**エラーが出て正常に印刷できない場合**  
Windowsに付属のプリンタ「Microsoft Print to PDF」を使用します。CubePDF同様、印刷によりPDFに変換できます。エラーは発生しにくいですが、使い勝手はCubePDFのほうがよいと思います。  

## Markdown PDF

[Markdown PDF - Visual Studio Marketplace](https://marketplace.visualstudio.com/items?itemName=yzane.markdown-pdf)  

VSCode拡張機能。MarkdownファイルをPDF化したりhtml化したりできます。CSSを変更することで変換後の見た目を変更することができます。  

* `markdown-pdf.styles`の変更方法  
[vscode-markdown-pdf/README.ja.md at master · yzane/vscode-markdown-pdf · GitHub](https://github.com/yzane/vscode-markdown-pdf/blob/master/README.ja.md#%E6%8B%A1%E5%BC%B5%E6%A9%9F%E8%83%BD-%E8%A8%AD%E5%AE%9A)  

* GitHubのcssを使用する  
[githubのmarkdown-cssをぶっこ抜く方法 #CSS - Qiita](https://qiita.com/__mick/items/c80fab6c185a41882880)  

例えばインラインコードの見た目を変えるだけであればデフォルトのCSSに以下のスタイルを追加します。  
![inlinecss.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3193449/b6af32a0-3158-1cd0-deab-7bd676e5a569.png)  
```html
<style>
	:not(pre):not(.hljs)>code {
		color: #1F2328;
		padding: .2em .4em;
		margin: 0;
		font-size: 85%;
		white-space: break-spaces;
		background-color: rgba(175, 184, 193, 0.2);
		border-radius: 6px;
	}
</style>
```

# 比較

## WinMerge

[WinMerge - You will see the difference…](https://winmerge.org/?lang=ja)  

PDFファイルを比較するときに使用します。[pdf_rclick](#pdf_rclick)や[xpdf](#xpdf-command-line-tools)で画像変換してから比較することで、直感的に大まかな差分を確認することができます。

# 編集

## CubePDF Utility

[PDF 編集ソフト CubePDF Utility](https://www.cube-soft.jp/cubepdfutility/)  

* マウス操作で直感的にPDFファイルのページ移動、削除、回転、結合、白紙挿入ができます。  
* ページレイアウトや作成者情報などの文書プロパティを変更することもできます。  

![cpdfu.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3193449/90738b1a-c3ac-aa56-00c5-1d88970c4d47.png)  

## Excel

「Power Query」を使用することで、レイアウトを崩さずにPDF上の表をコピーできます。Excelのバージョンによって使用できるか（機能があるか）変わるようです。使用できない場合は代わりに[pdftables2csv](https://www.vector.co.jp/soft/winnt/business/se526292.html)を使用します。  

* [【Excel】PDF上の表は手入力しなくても簡単に取り込める！ 紙のスキャンデータでも大丈夫 - いまさら聞けないExcelの使い方講座 - 窓の杜](https://forest.watch.impress.co.jp/docs/serial/exceltips/1539936.html)  
* [Office365 Excel PowerQueryでPDFが取り込めない。Pdf.Tablesが利用できない。 - Microsoft コミュニティ](https://answers.microsoft.com/ja-jp/msoffice/forum/all/office365-excel/e7a48ede-a22b-4f49-b681-e021bb3a3ae4)  

## pdf_rclick

[pdf_rclickの詳細情報 : Vector ソフトを探す！](https://www.vector.co.jp/soft/screen/winnt/writing/se525996.html)  

エクスプローラ上の右クリックからPDFファイルを結合、分割、回転、左右2分割、上下2分割、レイアウト変更、白紙ページ追加、画像化、テキスト抽出ができます。  

![pdf_rclick](https://raw.githubusercontent.com/nekotadon/pdf_rclick/master/image/menu.png) 



## PDFtk

[PDFtk - The PDF Toolkit](https://www.pdflabs.com/tools/pdftk-the-pdf-toolkit/)  

コマンドラインから分割、結合をすることができます。  

D&DしたPDFファイルを結合  
```bat:concat.bat
REM pdftkのパス
set pdftkexe="C:\Program Files (x86)\PDFtk\bin\pdftk.exe"

REM バッチファイルのあるフォルダに出力
cd /d "%~dp0"

REM 結合
%pdftkexe% %* cat output combined.pdf
```

D&DしたPDFファイルを分割  
```bat:split.bat
REM pdftkのパス
set pdftkexe="C:\Program Files (x86)\PDFtk\bin\pdftk.exe"

REM 各ファイルごとに処理
for %%f in (%*) do (

  REM ファイルのあるフォルダに出力
  cd /d "%%~dpf"
  
  REM 分割
  %pdftkexe% "%%~dpnxf" burst output "%%~dpnf_%%04d.pdf"
)
```

D&DしたPDFファイルを分割（サブフォルダ作成して出力）  
```bat:split_sub.bat
REM pdftkのパス
set pdftkexe="C:\Program Files (x86)\PDFtk\bin\pdftk.exe"

REM 各ファイルごとに処理
for %%f in (%*) do (

  REM ファイルのあるフォルダをカレントにする
  cd /d "%%~dpf"

  REM サブフォルダ作成
  if not exist "%%~nf_split" md "%%~nf_split"
  cd "%%~nf_split"

  REM 分割
  %pdftkexe% "%%~dpnxf" burst output %%04d.pdf
)
```

## Xpdf command line tools

[XpdfReader](https://www.xpdfreader.com/index.html)  

コマンドラインから画像化などの[各種処理](https://www.xpdfreader.com/about.html)ができます。

D&DしたPDFファイルを1ページ毎に画像化  
```bat:topng.bat
REM xpdfのあるフォルダ
set xpdfdir=C:\Program Files (x86)\xpdf-tools-win-4.04\bin64\

REM 各ファイルごとに処理
for %%f in (%*) do (

  REM ファイルのあるフォルダに出力
  cd /d "%%~dpf"

  REM png化
  "%xpdfdir%pdftopng.exe" "%%~dpnxf" "%%~nf"
)
```

D&DしたPDFファイルのイメージを抽出  
```bat:extract.bat
REM xpdfのあるフォルダ
set xpdfdir=C:\Program Files (x86)\xpdf-tools-win-4.04\bin64\

REM 各ファイルごとに処理
for %%f in (%*) do (

  REM ファイルのあるフォルダをカレントにする
  cd /d "%%~dpf"

  REM サブフォルダ作成
  if not exist "%%~nf_image" md "%%~nf_image"
  cd "%%~nf_image"

  REM イメージの抽出
  "%xpdfdir%pdfimages.exe" "%%~dpnxf" .
)
```
[ImageMagick](https://imagemagick.org/index.php)を使用することで抽出した画像を他の形式に変換できます。「VCOMP140.DLLがありません」と出た場合は、[Visual Studio 2015 の Visual C++ 再頒布可能パッケージ](https://www.microsoft.com/ja-jp/download/details.aspx?id=48145)をインストールします。  
```bat:topng.bat
REM ImageMagickのあるフォルダ
set imdir=C:\Program Files (x86)\ImageMagick-7.1.1-25-portable-Q16-x64\

REM ドロップされた画像を処理
for %%f in (%*) do (
  REM イメージの変換
  "%imdir%convert.exe" "%%~dpnxf" "%%~dpnf.png"
)
```