🖨

WindowsではがきサイズのPDFに印刷する

2022/08/11に公開

はじめに

Windows の "Microsoft Print to PDF" の仮想プリンターの用紙サイズに「はがき」を追加する手順のメモです。

Microsoft Print to PDF - custom paper sizes possible? - Microsoft Community で A6 サイズを追加する手順が紹介されていました。これを参考にはがきサイズを追加するのを試したら、期待通り動いたのでメモしておきます。Windows 11 で試しましたが、たぶん Windows 10 でも大丈夫だと思います。

レジストリエディターでプリンタドライバのディレクトリ名と設定ファイルを確認する

  1. Windows メニューを開いて regedit と入力し、検索結果に表示された「レジストリ エディター」を選択して起動します。
  2. 「ユーザーアカウント制御」のダイアログ(下図参照)が表示されたら「はい」を押します。
  3. ファイルメニューの下の「コンピュータ」と表示されている箇所をクリックして Ctrl-A で全選択したのち、
    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Print\Printers\Microsoft Print to PDF
    をコピー&ペースト(下図参照)して Enter キーを押してこのキーを開きます。
  4. レジストリエディターの画面右の一覧をスクロールして PrintQueueV4DriverDirectory の行のデータの値を確認します(下図参照)。
    私の環境では 5A97413B-5940-43EB-81A1-40AE7D833AE7 でした。

同様にして
KEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Print\Printers\Microsoft Print to PDF\PrinterDriverData
V4_Merged_ConfigFile_Name の値も確認します(下図参照)。
私の環境では 69b8a4a.gpd でした。

確認したら [ファイル]/[レジストリ エディターの終了]メニューを選んで終了します。

エクスプローラでプリンタドライバの設定ファイルのディレクトリを開いて編集対象のファイルを確認

エクスプローラを起動して「クイックアクセス」と表示されている入力欄に
C:\Windows\System32\spool\V4Dirs
をコピー&ペースト(下図参照)して Enter キーを押し、その後右の一覧で上記で確認したディレクトリ名をダブルクリックして開きます。

もし確認したディレクトリ名がこの記事と同じであれば
C:\Windows\System32\spool\V4Dirs\5A97413B-5940-43EB-81A1-40AE7D833AE7
をコピー&ペーストしてEnterでOKです。

開いた状態を下図に示します。このディレクトリの 69b8a4a.gpdpdc.xml をこの後編集していきます。

なお、冒頭にリンクを貼ったページではドライバのディレクトリ内の *.BUDmerged.gpd を消すように書かれていましたが、消さなくても大丈夫でした。

管理者権限でメモ帳を起動

  1. スタートメニューをクリックして(または Windows キーを押して) 「notepad」と入力
  2. 「最も一致する検索結果」に「メモ帳」が表示されたら右側の「管理者として実行」をクリック(下図参照)
  3. 「ユーザーアカウント制御」のダイアログ(下図参照)が表示されたら「はい」を押します。

メモ帳で編集対象のファイルを開く

  1. 設定ファイル 69b8a4a.gpd のパスをコピー。
    上記で設定ファイルのディレクトリを開いたエクスプローラに切り替えて、ファイル 69b8a4a.gpd を選択したあと右クリックでポップアップメニューを開き「パスのコピー」を選択します(下図参照)。

    あるいは、ディレクトリ名がこの記事と同じであれば
    C:\Windows\System32\spool\V4Dirs\5A97413B-5940-43EB-81A1-40AE7D833AE7\69b8a4a.gpd
    をコピーしても良いです。
  2. 上記で管理者権限で起動したメモ帳に切り替えて、[ファイル]/[開く]メニューを選びます。
    「開く」ダイアログの「ファイル名」の欄で Ctrl-V を押してパスをペーストし(下図参照)、「OK」を押してファイルを開きます。

69b8a4a.gpd ファイルの編集

スクロールしていくと *Macros: StdPaperSizeNames の行の後に以下のように用紙サイズの名前一覧が並んでいます。

…(略)…
*Macros: StdPaperSizeNames
{
…(略)…
    A3_DISPLAY:                             RESDLL.UniresDLL.10007
    A4_DISPLAY:                             RESDLL.UniresDLL.10008
    A4SMALL_DISPLAY:                        RESDLL.UniresDLL.10009
    A5_DISPLAY:                             RESDLL.UniresDLL.10010
    B4_DISPLAY:                             RESDLL.UniresDLL.10011
    B5_DISPLAY:                             RESDLL.UniresDLL.10012
…(略)…
    JAPANESE_POSTCARD_DISPLAY:                  RESDLL.UniresDLL.10042
…(略)…

さらに進むと *Feature: PaperSize の行の下に用紙サイズの定義が並んでいます。

…(略)…
*Feature: PaperSize
{
*rcNameID: =PAPER_SIZE_DISPLAY
*PrintSchemaKeywordMap: "PageMediaSize"
*DefaultOption: LETTER
*Option: TABLOID
{
*rcNameID: =RCID_DMPAPER_SYSTEM_NAME
*PrintSchemaKeywordMap: "NorthAmericaTabloid"
*PrintableOrigin: PAIR(0, 0)
*PrintableArea: PAIR(5029200, 7772400)
}
*Option: LEGAL
{
*rcNameID: =RCID_DMPAPER_SYSTEM_NAME
*PrintSchemaKeywordMap: "NorthAmericaLegal"
*PrintableOrigin: PAIR(0, 0)
*PrintableArea: PAIR(3886200, 6400800)
}
…(略)…
*Option: LETTER
{
*rcNameID: =RCID_DMPAPER_SYSTEM_NAME
*PrintSchemaKeywordMap: "NorthAmericaLetter"
*PrintableOrigin: PAIR(0, 0)
*PrintableArea: PAIR(3886200, 5029200)
}
}
*Feature: Orientation
{
…(略)…
  • *Option: LEGAL*Option: LETTER の行とその後の {} に挟まれた部分が用紙サイズの選択肢の定義です。
  • *Option: の後の名前は上記の *Macros: StdPaperSizeNames の後に並んでいる用紙サイズの名前の最後の _DISPLAY を取ったものと一致している必要があるようです (一度適当な名前でこの後の手順を進めてみたらPDFへの印刷時の「用紙サイズ」の選択肢に出てきませんでした)。
  • *PrintableArea: PAIR(3886200, 5029200) の数値は用紙サイズの幅と高さをミリメートルで表したものを 18000 倍した値になっています。

はがきは幅が100mm、高さが148mmなので以下のような行を追加します。

*Option: JAPANESE_POSTCARD
{
*rcNameID: =RCID_DMPAPER_SYSTEM_NAME
*PrintSchemaKeywordMap: "JapanPostcard"
*PrintableOrigin: PAIR(0, 0)
*PrintableArea: PAIR(1800000, 2664000)
}

追加する場所は以下の「# ここに追加する」と書いた行です。

…(略)…
*Option: LETTER
{
*rcNameID: =RCID_DMPAPER_SYSTEM_NAME
*PrintSchemaKeywordMap: "NorthAmericaLetter"
*PrintableOrigin: PAIR(0, 0)
*PrintableArea: PAIR(3886200, 5029200)
}
# ここに追加する
}
*Feature: Orientation
{
…(略)…

追加した状態は下図のようになります。

追加したら[ファイル]/[保存]メニューで上書き保存します。

pdc.xml ファイルの編集

同様にして pdc.xml ファイルも編集します。パスは
C:\Windows\System32\spool\V4Dirs\5A97413B-5940-43EB-81A1-40AE7D833AE7\pdc.xml
です。

こちらはファイル名をペーストした後、「エンコード」のドロップダウンで「UTF-8」を選択(下図参照)してから「OK」を押して開きます。

ファイルを開いたらスクロースしてみていくと

<psk:PageMediaSize psf2:psftype="Feature">

</psk:PageMediaSize>
の行の間に用紙サイズの定義が並んでいます。

…(略)…
  <psk:PageMediaSize psf2:psftype="Feature">
…(略)…
    <psk:NorthAmericaLetter psf2:psftype="Option" psf2:default="true">
      <psk12:PortraitImageableSize psf2:psftype="Property" xsi:type="psf2:ImageableAreaType">0,0,215900,279400</psk12:PortraitImageableSize>
      <psk:MediaSizeHeight psf2:psftype="ScoredProperty" xsi:type="xsd:integer">279400</psk:MediaSizeHeight>
      <psk:MediaSizeWidth psf2:psftype="ScoredProperty" xsi:type="xsd:integer">215900</psk:MediaSizeWidth>
    </psk:NorthAmericaLetter>
# ここに追加
  </psk:PageMediaSize>
…(略)…

上記の # ここに追加 の箇所に以下の内容を追加します。行が長いため横にスクロールして確認してください。

    <psk:JapanPostcard psf2:psftype="Option" psf2:default="true">
      <psk12:PortraitImageableSize psf2:psftype="Property" xsi:type="psf2:ImageableAreaType">0,0,100000,148000</psk12:PortraitImageableSize>
      <psk:MediaSizeHeight psf2:psftype="ScoredProperty" xsi:type="xsd:integer">148000</psk:MediaSizeHeight>
      <psk:MediaSizeWidth psf2:psftype="ScoredProperty" xsi:type="xsd:integer">100000</psk:MediaSizeWidth>
    </psk:JapanPostcard>

100000 と 148000 の数値ははがきの幅100mmと高さ148mmを1000倍した値を指定しています。
また、 <psk:JapanPostcard …(略)…></psk:JapanPostcard>JapanPostcard の名前は上記で 69b8a4a.gpd ファイルに追加した設定の *PrintSchemaKeywordMap: "JapanPostcard" の行で指定した名前と一致させています。

追加した状態は下図のようになります。

追加したら[ファイル]/[保存]メニューで上書き保存します。

その後 [ファイル]/[終了]メニューでメモ帳を終了します。

あとは印刷時に用紙サイズではがきを選択すればOK

例えば Word で印刷する場合、以下のように選択します。

  1. 「プリンター」のドロップダウンで「Microsoft Print to PDF」を選びます。
  2. 「プリンターのプロパティ」リンクをクリックします(下図参照)。
  3. 「Microsoft Print to PDF のドキュメントのプロパティ」ダイアログが開いたら「詳細設定」ボタンを押します(下図参照)。
  4. 「Microsoft Print to PDF 詳細オプション」ダイアログが開いたら「用紙サイズ」のドロップダウンで「はがき」を選びます(下図参照)。
  5. あとは「OK」を押してダイアログを閉じ、「印刷」ボタンで印刷します。

Discussion