PDF to DXF

CADで書類を作成していると時々PDFファイル内の図面データが欲しくなる事がある。
今回はPDFにあるベクトルデータをフリーソフトだけで取り出す方法について考えてみる。

BmpToDxf

図面変換ソフト「BmpToDxf」の詳細情報 : Vector ソフトを探す!
Image Printer. Print to Image. Convert to Image any your documents | Virtual Image Printer
PDFファイルをImagePrinter等を使って印刷し、出来たBMPファイルをBmpToDxfで読み込んでDXFファイルに変換する。
利点は印刷できるデータならばPDF以外でもDXFデータに変換できる事。うまく使えばJPG等ラスタデータで埋め込まれているデータもベクトルデータとして扱えるようになる。
欠点は円や曲線なども直線で近似しようとする為データサイズが大きくなる事。データを一括で処理しようとするとフリーズする事もある。
他ではどうしようもない時に使う最後の手段。

GSview

Ghostscript, Ghostview and GSview
PDF内部のベクトルデータを直接取り出してDXFファイルに変換する事が可能なGSviewだが、インストールが若干面倒くさい。
DXF変換をするにはGSview以外にGhostscriptとpstoeditをインストールする必要がある。
(実際にPDF→DXF変換をしているのはpstoeditでGSviewはそのフロントエンド)
また、PDFファイルによっては代替フォントの指定をしなければならない事もある。
他にも色々問題はあるが、直接ベクトルデータを操作しているので円やスプライン曲線の変換も可能なのが大きな利点。
変換にかかる時間もBmpToDxfより短く、生成されるデータも小さい。

LibreOffice DRAW

GSviewで直接変換できないPDFファイルはLibreOffice DRAWで読み込んで中間ファイルとしてEPSやsvg形式でエクスポート。
fontが無いと怒られたPDFファイルでもテキストデータ等が含まれていない中間ファイルならば変換可能。
読み込みに結構時間がかかるので、取り込みたいページだけをconcatPDFなどで切り出しておく方がよい。

PDF2DXF

PDF 2 DXF
シェアウェアではあるが、デモ版でもDXF変換が出来るので問題ない。
(デモ版での使用制限などがサイトやヘルプに書いてない?)
上記の工程をボタンひとつでやってくれるのはお手軽で便利。
外部との変な通信や妙なレジストリへのアクセスなどはなさそう(マルウェアではないっぽい)だが、なんとなく使うのが不安なので使っていない。

注意事項

以上で作成されるベクトルデータは精度が低く、そのままでは使用できない。

  • 単に縮尺が合っていないだけでなく縦横の縮尺も異なっている
  • 円の中心等本来の位置ではない(一致するはずのX-Y座標が異なる)
  • 線種もcontinuousだけ

Adobe IllustratorならばDXF形式での保存も可能らしいので、そちらが使えるならばこんな苦労はしなくても良い。