回答:
いくつかのオプションがあります。これらの方法はすべて、LinuxとWindowsまたはMac OS Xで機能します。ただし、フォントが埋め込まれている場合、ほとんどのPDFには完全で完全なフォントフェイスが含まれていないことに注意してください。ほとんどの場合、ドキュメントで使用されているグリフのサブセットのみが含まれています。
pdftops
* nixシステムでこれを行うために最も頻繁に使用される方法の1つは、以下のステップで構成されます。
pdftops
します(Windowsの場合:pdftops.exe
ヘルパープログラム)。.pfa
(PostScript)形式で埋め込まれます+ テキストエディターを使用してフォントを抽出できます。。.pfa
(ASCII)を.pfb
(バイナリ)ファイルに変換する必要がある場合があります。t1utils
pfa2pfb
。.pfm
または.afm
ファイル(フォントメトリックファイル)が埋め込まれることはありません(PDFビューアがこれらに関する内部知識を持っているため)。これらがないと、フォントファイルは視覚的に満足できる方法ではほとんど使用できません。fontforge
もう1つの方法は、フリーフォントエディターFontForgeを使用することです。
FontForgeのマニュアルを確認してください。抽出されたフォントデータを再利用可能なファイルとして保存するために、必ずしも簡単ではないいくつかの特定の手順に従う必要がある場合があります。
mupdf
次に、MuPDFです。このアプリケーションには、pdfextract
(Windowsではpdfextract.exe
)というユーティリティが付属しており、PDFからフォントや画像を抽出できます。(まだまだ知られていない新しい新しいMuPDFについて知らない場合:「MuPDFは、 Ghostscriptを提供したのと同じ会社であるArtifex Software開発者によって書かれた、ポータブルCで書かれた無料の軽量PDFビューアおよびツールキットです。」)
(更新: MuPDFの新しいバージョンでは、「pdfextract」の以前の機能がコマンド「mutool extract」に移動しました。ここからダウンロードしてください:mupdf.com/downloads)
注:pdfextract.exe
はコマンドラインプログラムです。これを使用するには、次のようにします。
c:\> pdfextract.exe c:\path\to\filename.pdf # (on Windows)
$> pdfextract /path/tofilename.pdf # (on Linux, Unix, Mac OS X)
このコマンドは、現在のディレクトリに参照されているpdfファイルから抽出可能なすべてのファイルをダンプします。一般に、画像だけでなくフォントなど、さまざまなファイルが表示されます。これらには、PNG、TTF、CFF、CIDなどが含まれます。画像のPDFオブジェクト番号が412の場合、画像名はimg-0412.pngのようになります。フォント名がフォントの場合、FGETYK + LinLibertineI-0966.ttfのようになります。PDFオブジェクト番号は966でした。
CFF(Compact Font Format)ファイルは、さまざまなオペレーティングシステムで使用するためにさまざまなコンバーターを介して他の形式に変換できる認識された形式です。
繰り返しますが、これらのフォントファイルのほとんどは文字のサブセットのみを含み、完全な書体を表さない場合があることに注意してください。
更新:(2013年7月)最近のバージョンでmupdf
は、バイナリの内部的な変更と名前の変更が1回だけでなく数回行われました。主なユーティリティは、「スイスナイフ」のようなバイナリmubusy
(busyboxに触発された名前?)でしたが、最近ではに名前が変更されましたmutool
。これらは、サブコマンドをサポートしinfo
、clean
、extract
、poster
とshow
。残念ながら、これらのツールの公式ドキュメントは最新のものではありません。「MacPorts」を使用してMacを使用している場合:同じ名前を使用する他のユーティリティとの名前の競合を回避するために、ユーティリティの名前が変更されましたmupdfextract
。
mutool
以前のツールとほぼ同じ結果を得るにpdfextract
は、mubusy extract ...
。*を実行するだけです。
したがって、フォントと画像を抽出するには、次のいずれかのコマンドラインを実行する必要がある場合があります。
c:\> mutool.exe extract filename.pdf # (on Windows)
$> mutool extract filename.pdf # (on Linux, Unix, Mac OS X)
ダウンロードはこちら:mupdf.com/downloads
gs
(Ghostscript)の使用次に、GhostscriptはPDFから直接フォントを抽出することもできます。ただし、GhostscriptソースコードリポジトリextractFonts.ps
から入手できるPostScript言語で記述されたという特別なユーティリティプログラムの助けが必要です。
これを使用して、このファイルextractFonts.ps
とPDFファイルの両方を実行する必要があります。次に、GhostscriptはPostScriptプログラムからの指示を使用して、PDFからフォントを抽出します。Windowsでは次のようになります(そうです、Ghostscriptは 'スラッシュ'、/、Windowsでもパス区切り文字として理解します!):
gswin32c.exe ^
-q -dNODISPLAY ^
c:/path/to/extractFonts.ps ^
-c "(c:/path/to/your/PDFFile.pdf) extractFonts quit"
またはLinux、Unix、Mac OS Xの場合:
gs \
-q -dNODISPLAY \
/path/to/extractFonts.ps \
-c "(/path/to/your/PDFFile.pdf) extractFonts quit"
私はGhostscriptメソッドを数年前にテストしました。当時は* .ttf(TrueType)を問題なく抽出していました。他のフォントタイプもまったく抽出されるかどうか、もしそうであれば、再利用可能な方法で私は知りません。ユーティリティが保護されているとマークされているフォントの抽出をブロックするかどうかはわかりません。
pdf-parser.py
最後に、Didier Stevensのpdf-parser.py:内部のPDF構造に関するいくつかのノウハウが必要なため、これはおそらくそれほど簡単に使用できません。pdf-parser.py
他にも多くのことができるPythonスクリプトです。また、オブジェクトから任意のストリームを解凍および抽出できるため、埋め込みフォントファイルも抽出できます。
しかし、何を探すべきかを知る必要があります。例で見てみましょう。big.pdfという名前のファイルがあります。最初のステップとして、-s
パラメーターを使用してPDFを検索し、キーワードFontFileの出現を探します(pdf-parser.py
大文字と小文字を区別する検索は必要ありません)。
pdf-parser.py -s fontfile big.pdf
私の場合、big1.pdfの場合、次の結果が得られます。
obj 9 0
Type: /FontDescriptor
Referencing: 15 0 R
<<
/Ascent 728
/CapHeight 716
/Descent -210
/Flags 32
/FontBBox [ -665 -325 2000 1006 ]
/FontFile2 15 0 R
/FontName /ArialMT
/ItalicAngle 0
/StemV 87
/Type /FontDescriptor
/XHeight 519
>>
obj 11 0
Type: /FontDescriptor
Referencing: 16 0 R
<<
/Ascent 728
/CapHeight 716
/Descent -210
/Flags 262176
/FontBBox [ -628 -376 2000 1018 ]
/FontFile2 16 0 R
/FontName /Arial-BoldMT
/ItalicAngle 0
/StemV 165
/Type /FontDescriptor
/XHeight 519
>>
これはFontFile2
、PDF内に2つのインスタンスがあり、これらはPDFオブジェクト内にあることを示しています。15といいえ。16、それぞれ。オブジェクト番号。15は、/FontFile2
フォント/ ArialMTのオブジェクト番号を保持します。16は、/FontFile2
フォント/ Arial-BoldMTのを保持します。
これをより明確に示すには:
pdf-parser.py -s fontfile big1.pdf | grep -i fontfile
/FontFile2 15 0 R
/FontFile2 16 0 R
PDF仕様に迅速チラッと覗くキーワードは明らか/FontFile2
に関連する 「TrueTypeフォントプログラムを含むストリーム」(/FontFile
に関連するであろう「Type 1フォントプログラムを含むストリーム」と/FontFile3
に関連するであろう形式であるフォントプログラムを含む「ストリームストリームディクショナリのサブタイプエントリで指定されている(したがって、Type1CまたはCIDFontType0Cサブタイプのいずれかである})。
特にPDFオブジェクト番号を見てください。15(フォント/ ArialMTを保持)、次の-o 15
パラメーターを使用できます。
pdf-parser.py -o 15 big1.pdf
obj 15 0
Type:
Referencing:
Contains stream
<<
/Length1 778552
/Length 1581435
/Filter /ASCIIHexDecode
>>
このpdf-parser.py
出力は、このオブジェクトに1.581.435バイトの長さのストリームが含まれており(直接表示されない)、ASCIIHexEncodeでエンコード(== "圧縮")されており、デコード(== "de-圧縮された」または「フィルター処理された」)標準/ASCIIHexDecode
フィルターの助けを借りて。
オブジェクトからストリームをダンプするにpdf-parser.py
は、-d dumpname
パラメータを指定ます。やってみましょう:
pdf-parser.py -o 15 -d dumped-data.ext big1.pdf
抽出されたデータダンプは、dumped-data.extという名前のファイルになります。。それがどれほど大きいか見てみましょう:
ls -l dumped-data.ext
-rw-r--r-- 1 kurtpfeifle staff 1581435 Apr 11 00:29 dumped-data.ext
ああ、1.581.435バイトです。前のコマンドの出力でこの図を確認しました。このファイルをテキストエディタで開くと、その内容がASCIIの16進エンコードデータであることを確認できます。
otfinfo
(これはlcdf-typetools
パッケージの一部です)のようなフォント読み取りツールでファイルを開くと、最初は少しがっかりします。
otfinfo -i dumped-data.ext
otfinfo: dumped-data.ext: not an OpenType font (bad magic number)
OK、これは(まだ)pdf-parser.py
完全な魔法を利用させていないためです。つまり、フィルター処理されてデコードされたストリームをダンプします。このために、-f
パラメーターを追加する必要があります。
pdf-parser.py -o 15 -f -d dumped-data-decoded.ext big1.pdf
この新しいファイルのサイズは?
ls -l dumped-data-decoded.ext
-rw-r--r-- 1 kurtpfeifle staff 778552 Apr 11 00:39 dumped-data-decoded.ext
ああ、見てください。その正確な数は、PDFオブジェクトnoにもすでに格納されています。15キーの値としての辞書/Length1
...
file
それは何だと思いますか?
file dumped-data-decoded.ext
dumped-data-decoded.ext: TrueType font data
otfinfo
それについて私たちに何を伝えますか?
otfinfo -i dumped-data-decoded.ext
Family: Arial
Subfamily: Regular
Full name: Arial
PostScript name: ArialMT
Version: Version 5.10
Unique ID: Monotype:Arial Regular:Version 5.10 (Microsoft)
Designer: Monotype Type Drawing Office - Robin Nicholas, Patricia Saunders 1982
Manufacturer: The Monotype Corporation
Trademark: Arial is a trademark of The Monotype Corporation.
Copyright: © 2011 The Monotype Corporation. All Rights Reserved.
License Description: You may use this font to display and print content as permitted by
the license terms for the product in which this font is included.
You may only (i) embed this font in content as permitted by the
embedding restrictions included in this font; and (ii) temporarily
download this font to a printer or other output device to help
print content.
Vendor ID: TMC
だからビンゴ!、私たちは勝者を持っています:pdf-parser.py
確かに私たちのために有効なフォントファイルを抽出しました。このファイルのサイズ(778.552バイト)を考えると、このフォントはPDFに完全に埋め込まれているように見えます...
名前をarial-regular.ttfに変更できますインストールすることで、楽しく利用できます。
いずれの場合も、フォントに適用されるライセンスに従う必要があります。一部のフォントライセンスでは、自由に使用したり配布したりすることはできません。フォントの海賊版は、ソフトウェアやその他の著作権のある素材の海賊版に似ています。
世の中に出回っているほとんどのPDFは、とにかく完全なフォントを埋め込まず、サブセットのみを埋め込みます。フォントのサブセットを抽出することは、非常に限られた範囲でのみ有効です。
フォント抽出の取り組みに関する長所と短所については、以下もお読みください。
mupdf
。これも参照してください...
オンラインサービスhttp://www.extractpdf.comを使用します。何もインストールする必要はありません。
~/.fonts
た。コピーと貼り付けは機能していました。
最終的にFontForge Windowsインストーラーパッケージを見つけ、インストールされたプログラムを介してPDFを開きました。とても楽しかったです。
http://www.verypdf.com/app/pdf-font-extractor/pdf-font-extracting-tool.html IMOフォントを抽出する最も簡単な方法(Windows)。
この質問は10年前のものですが、それでも有効であり、テクノロジーの変化に応じて有効な回答も変わります。
現在の回答を検索したところ、どれもWOFF(Web Open Font Format)(W3C)(Wikipedia)であることに気づきませんでした。これを使用して、個々の文字(グリフ)を再作成し、Webページに正確に表示できます。
IDR Solutionsによる無料のオンラインWebページ、PDF to HTML5(link)を使用して、PDFをzipファイルに変換します。結果のzipには、woffファイルタイプのフォントディレクトリが含まれます。現在のインターネットブラウザーは、知らない場合はwoffファイルをサポートしています。(参照)これらは、オンラインサイトFontDropで調べることができます!(リンク)。
WOFFファイルは、WOFFer – WOFFフォントコンバーターでOTFまたはTTFとの間で変換できます。
また、PDFからHTML5へのzipファイルには、インターネットブラウザーで開くことができるPDFの各ページのHTMLファイルが含まれます。これは、私が見つけた、または見た中で最も優れた最も正確なPDF翻訳の1つです。
私はWOFFファイルの使用方法を学習しているだけですが、これは渡す価値があります。楽しい。
PS、おそらくwoffファイルタイプの使用についてさらに学習するにつれて、より多くの情報で更新する予定ですが、これはクリエイティブコモンズであるため、渡す価値のあるものがあれば、この回答を自由に編集してください。
Is it because WOFF handles incomplete fonts better?
ない あなたの推測は私のものと同じくらい良いでしょう。私が指摘したように、私は自分自身でWOFFについて学んでいるだけです。
Is it because WOFF handles incomplete fonts better?
、新しいSO質問として投稿する必要があります。そうすれば、より知識のある他の人が見て、できれば有意義な回答を提供してくれるでしょう。
PDF2SVGのからバージョン6.0 PDFTronは、合理的な仕事をしていません。.otf
デフォルトでOpenType()フォントを生成します。--preserve_fontnames
「ソースファイルから取得したfont / font-family命名スキーム」を保持するために使用します。
PDF2SVGは商用製品ですが、無料のデモ実行可能ファイルをダウンロードできます(SVG出力に透かしが含まれていますが、使用方法を制限していません)。フォントを抽出する他のPDFTron製品もあるかもしれませんが、私は最近PDF2SVGを自分で発見しました。
--preserve_fontnames
、部分的なフォントが重複している場合は機能しません。たとえば、MSCIYG
in などの接頭辞が含まれていないように見えるMSCIYG+Ge'ez-1
ため、以前の部分的なフォントが上書きされます。
これは@Kurt Pfeifleの回答のfont-forge
セクションのフォローアップであり、Red Hat(およびその他のLinuxディストリビューション)に固有のものです。
TTFファイルを取得したら、次の方法でシステムにインストールできます。
/usr/share/fonts
(ルートとして)コピーするfc-cache -f /usr/share/fonts/
(rootとして)