# PdfToJwwConverter

## 概要

- PdfToJwwConverterはPDFファイルをJw_cadのjwwファイルへ変換するアプリです。
- GUI版とコマンドライン版があります。
- フリーソフトウエアです。無料で使用できますが、開発支援をお願いします。

## 動作環境

- Windows11

## インストール

zipファイルを解凍し、PdfToJww_Setup.exeを実行してください。
実行時に「WindowsによってPCが保護されました」と言う画面が出ます。その画面の「詳細情報」をクリックすると「実行」ボタンがあらわれます。「実行」ボタンを押すとインストールプログラムが実行されます。
インストーラは以下のランタイムがインストールされていない場合、自動的に取得してインストールします。

- Microsoft Visual C++ 再頒布可能パッケージ

  - 32ビット
    https://aka.ms/vs/17/release/vc_redist.x86.exe

- .NET デスクトップ ランタイム 6.0.6

  - 32ビット
    https://download.visualstudio.microsoft.com/download/pr/cc04076c-d188-4c20-9b4f-89be06f1a39c/32da746ef46fbeedb4f609b67cb451c3/windowsdesktop-runtime-6.0.6-win-x86.exe

インターネットに接続できない環境でインストールする場合はあらかじめこれらのファイルをダウンロードして直接インストールしてください。

## 使用法（GUI）

- PDFファイルを選択してください。
- ページに変換したいページ番号を入力してください。ページ番号はコンマで区切って複数のページを指定することもできます。また、1-4のようにハイフンで範囲を指定することもできます。
- 用紙サイズを選択します。（PDFファイルにも用紙のサイズは記録されていますが、このアプリは使っていません。）
- 縮尺を選択します。PDFファイルには縮尺がありませんのでここで適当に指定してください。
- 変換ボタンを押してください。PDFファイルと同じフォルダにjwwファイルが作成されます。ファイル名には元のファイル名にページ番号が付加されます。
- オプション
  - 「破線を結合する」にチェックすると短い線をつなげて破線に変換します。
  - 「円・円弧を生成する」にチェックすると一部の曲線を円・円弧に変換します。
  - 「文字を結合する」にチェックすると並んだ文字を結合し一つのテキストにします。
  - 「一部の文字を変換する」にチェックすると文字化けを少なくすることができます。
  - 「上書きする」にチェックすると同じファイル名が既に存在する時上書きします。

## 使用法（CUI）

    usage: ptjc.exe <PdfFiles> [Command]

    Command:
    -dxf: DXF ファイルに変換します。
    -n: PDF ファイルのページ番号を指定します（デフォルト = 1）。複数ページ指定も可能です。
    -y: 出力ファイルを自動的に上書きします。
    -u: 一部の文字（康熙部首など）を変換する。
    -d: 破線を結合します。
    -t: テキストを結合します。
    -a: 円弧を作成します。
    -s: jww の縮尺の分母を指定します（デフォルト = 1）。例: 100=1/100
    -p: jww の用紙コードを指定します（デフォルト = 3）。0=A0、1=A1、2=A2、3=A3、4=A4、8=2A、9=3A、10=4A、11=5A

## 連絡先等

- メール ai@junkbulk.com
- ホームページ https://junkbulk.com/windows/
- Copyright(c) Junkbulk (Jinki-Keikaku)

## 使用条件

- このプログラムはフリーソフトウエアです。
- このプログラムの著作権は、Junkbulk(Jinki-Keikaku)にあります。
- 本プログラムの使用によって何らかの障害が発生した場合でも、作者は一切の責任を負わないものとします。
- 作者は本プログラムのバグ修正、バージョンアップ等の一切のサポートの責は負いません。

## 使用ライブラリ等

- Cmap Resources
  - https://github.com/adobe-type-tools/cmap-resources
  - License
- Unicode Character Database
  - http://www.unicode.org/ucd/
  - License

## 注意点

- 以下のPDFは開くことができません。

  - 印刷やコピー禁止などのファイルは変換できません。それらのファイルは暗号化されています。
    暗号化のアルゴリズムは公開されているので対応できるのですが、印刷やコピー禁止のファイルを変換していいのか？と言う問題があります。パスワードで解除したら問題ないので将来的には何らかの対応をするかもしれません。
  - 対応していないデコード形式のファイルは開けません。手元のファイルでそのデコード形式がみつからなかったからです。存在が確認出来たら対応します。
  - インラインイメージが含まれていると開くことができませんけません。手元のPDFで一つインラインイメージを使ったものがあるのですが、画像の形式がCCITTFaxと言うもので資料がありません。仕様は探せばありそうなのですがわかりませんでした。LibTIFFを使えと言うのはありましたがこのためだけに使うのは少しためらいます。
    また、インラインイメージはPDFファイル内でも少し仕様が変わっています。もう少しインラインイメージを使ったPDFがみつかれば対応するかもしれません。

- 文字について

  - PDFファイルでは文字がどの順序で書かれるかはわかりません。たとえば、図面の寸法値が一文字ずつ分解されている事も普通にあります。
    そのため「文字を結合する」と言うオプションがあります。これは、同じ高さで近く並んでいる文字を結合する処理です。
  - PDFファイルでは空白も空白文字ではなく文字を座標をずらして表現することも普通にあります。
    「文字を結合する」では間隔が適当に空いている場合は空白文字としました。よって、意図せずに文字がつながることがあります。また文字幅や間隔、位置などは正確に表現できません。
  - 文字化けすることがあります。
    PDFファイルは一部を除いてUnicodeなどの文字コードをそのまま使っていません。そのための変換テーブルがPDFファイルにはありますが、無いこともあります。無くてもPDFファイルからテーブル名を見つけてアプリ側にそれをもたせることが出来ますが限界があります。
    また、変換テーブルが間違えていることも普通にあります。例えば画面上で読めるが中国語のフォントと言うこともあります。「一部の文字を変換する」オプションはそのための機能です。
  - 同じ文字が重なって出力されることがあります。おそらく太字を表現するためにこうしていると思います。「文字を結合する」にチェックすると同じ文字がつながって出力されます。比較的まれな事例だったので特に対処していません。
  - Jw_cadの文字コードはShiftJisです。UnicodeからShiftJisへ変換できない文字は文字化けします。例えば、Unicodeでは幅の違う空白が複数あります。それらは文字化けします。また、縦書きフォントも文字化けします。あまりにもパターンが多いのであきらめました。
  - フォントは「MS ゴシック」固定です。元のPDFファイルとはフォントが異なるので表示が変わります。

- 画像について

  - インラインイメージでも書きましたが画像形式のCCITTFaxは表示できません。インラインイメージでないCCITTFax形式は比較的使われていることもあるので対応したいのですが資料がみつかりませんでした。
  - JpegのCMYK形式の画像は色がおかしくなります（色反転されたように見えます）。JpegのCMYK形式の資料がみつかりませんでした。PDFファイルではJpegのCMYK形式はよく使われています。自分でデコーダを作ってもいいのでだれか仕様を教えてください。

- 線など

  - 文字や線の色は変換していません。Jw_cadの線色はもともと少ないのとSXF線色使えばいいかもですが、あれはあれで使い勝手が悪いのでいっそ一色でいいかなと思いました。
  - 線幅も反映していません。
  - 線の長さ等は誤差が多く正確ではありません。
  - PDFには円や円弧がありません。それらは３次ベジェ曲線で表現されています。Jwwへ変換するにあたり、ベジェ曲線は細かい線分で代用しています。
  - バージョン1.2.0で「円・円弧を生成する」オプションを追加しました。これはベジェ曲線の内、円や円弧に出来そうなものを選び変換するものです。しかし、誤差があることに注意してください。また、このオプションは微小なベジェ曲線を消してしまうので注意してください。
  - PDFには破線がありますが、このアプリでは対応していません。なぜなら手元のファイルで使われていなかったからです。破線で表示されているものは短い線です（つながっていません）。「破線を結合する」オプションはその短い線を破線としてつなげるものです。
  - 「破線を結合する」オプションで変換される破線のピッチはPDF上のピッチとは異なります。見た目を気にする場合はこのオプションは使用しない方がいいと思います。
  - Fill（Jw_cadでのソリッド）は対応していません。変換はある程度やればできるのですが、Jw_cadは表示順序が自由にできないので思たように表示できないと思いました。
  - PDFはクリッピングで図形の表示範囲を制御していますがこのアプリは対応していません。用紙外に図形が表示されることがあります。

## 履歴

- 2026/02/22 version1.3.0

  - DXF変換を追加。
  - CUI版を追加。
  - その他軽微な変更。

- 2022/7/4 version1.2.1

  - 軽微な修正

- 2022/7/3 version1.2.0

  - 「円・円弧を生成する」オプション追加。

- 2022/6/30 version1.1.0

  - 32ビットにしました。
  - 用紙情報が保存されていなかったので修正。
  - 「破線を結合する」オプション追加。

- 2022/6/?? 最初のリリース

≡