web-dev-qa-db-ja.com

PDFファイルをレイヤーに分割するにはどうすればよいですか?

マップを含む大きなPDFファイルがあります。PDFファイルはおそらくAutoCADで生成されました。

この画像は、色付きのラスターマップと、マップの上に線が引かれたベクトルで構成されています。 (街路など)

ラスターとベクトルを別々に操作する必要があります。 Photoshopにインポートすると、1つのレイヤーしか表示されません。 Adobe PDF Readerで、レイヤータブを選択すると、1つのレイヤーしか表示されません。ただし、ファイルをレンダリングすると、最初にマップが描画されるため、複数のレイヤーがあると確信しています。背景、そして上にベクターの描画を開始した後でのみ。十分に速い場合は、実際に「print screen」を使用して背景ラスターを保存できます。その画像とベクターを抽出するには、より信頼性の高い方法が必要です。

Ghostscriptのようなオープンソースツールを使用して、PDFをテキスト、ラスター、ベクターデータなどの重要な部分に分割できますか?そして、彼らはそれらすべてをフォルダに入れましたか?

3

Inkscape を使用した1つの手動ソリューションを見つけました。それを自動化する方法を探しています。

  1. InkscapeでPDFを開きます(私もあなたのようなマップを持っていました)。デフォルトのインポート設定を使用します。
  2. メニュー>オブジェクト>オブジェクト。 (レイヤーではなく)
  3. オブジェクトパネルを開きます。これはレイヤーのようなものです。左側の列をクリックして、表示を切り替えたり、ロックしたりできます。
  4. そこには1つのアイテムがありますが、それ以上ある可能性があることを示す矢印があります。それをクリックすると、展開していくつかのサブアイテムが表示されます。
  5. それぞれをクリックすると、画像上でさまざまなオブジェクトが選択されます。可視性を切り替える(目を閉じる)と、各オブジェクトが画像から消えます。
  6. したがって、不要なものをすべて非表示にした後、[ファイル]> [PNG画像のエクスポート]に移動します。良い解像度にするには、サイズとDPIを増やす必要がありました。デフォルト設定ではサムネイルが小さくなっています。
  7. これで、必要なマップができました。

オートメーション

これを行うコマンドラインの方法を見つけました。

inkscape -z -i g2846 -j -D -d 300 test3.pdf -e 3.png

参照ドキュメント: https://inkscape.org/sk/doc/inkscape-man.html

パラメータの説明:

  • -z:GUIなし、コマンドラインでのみinkscapeを実行
  • -i g2846:エクスポートする特定のグループ/レイヤーIDを選択します。 Inkscape guiの上記の手動手順で、このID /ラベルを知ることができました。
  • -j:エクスポートで他のすべてのレイヤーなどを非表示にします
  • -D:エクスポート画像の寸法を図面/ドキュメント全体と同じに保ち、抽出されたオブジェクトの位置を維持します。 (これは、元のオブジェクトが回転/ワープされ、元のオブジェクトを出力したくない場合、または複数のレイヤーを実行していて、キャンバス上の位置を維持する必要がある場合に重要です)
  • -d 300:300 DPI:デフォルトでは、出力pngの損失が大きすぎました。この設定により、すべてが良好に保たれました。
  • test3.pdf:私の入力pdf
  • -e 3.png:PNGとしてエクスポートし、ファイル名を指定します。

残念ながら、現時点では一度に1つのオブジェクト/レイヤーしか抽出できません。複数のレイヤーを許可するように要求するinkscapeに対してファイルされたバグがあります: 複数の-i(-export-id = ID)オプションを許可します

[編集]複数の(すべてではない)レイヤーが必要な場合の別の回避策:上記で共有したinkscapeコマンドを使用して、個々のレイヤーを次のように取り出します。1.png, 2.png, 3.png次に、次のコマンドを実行します imagemagick

$ convert -page +0+0 1.png \
-page +0+0 2.png \
-page +0+0 3.png \
-layers merge +repage merged.png

これで、レイヤーがmerged.pngにマージされます。

4
Nikhil VJ

AutoCADバージョンで作業するか、そこから別のレイヤーとしてエクスポートする必要があります。 PDFにエクスポートされると、個別のレイヤーとして編集できないビットマップ画像になります。

0
LPChip

私は2019年9月に投稿されたこの記事に出くわしました: https://north-road.com/2019/09/03/qgis-3-10-loves-geopdf/

どうやらそれが「GeoPDF」なら、それをQGISにインポートして、すべてのベクターレイヤーなどを取得できます。そしてもちろん、QGISではレイヤーで何でもできます。簡単に試す価値があるかもしれません。

0
Nikhil VJ