pdftk.exe
PDFで使用されているフォントと、それらが埋め込まれているかどうかを示すことができるユーティリティを知っています。
問題:フォントが埋め込まれたPDFファイルがある場合、通常のフォントファイルとして再利用できるようにそれらのフォントを抽出するにはどうすればよいですか?それを行うことができる(できれば無料の)ツールはありますか?また、これは、たとえばiTextを使用してプログラムで実行できますか?
pdftk.exe
PDFで使用されているフォントと、それらが埋め込まれているかどうかを示すことができるユーティリティを知っています。
問題:フォントが埋め込まれたPDFファイルがある場合、通常のフォントファイルとして再利用できるようにそれらのフォントを抽出するにはどうすればよいですか?それを行うことができる(できれば無料の)ツールはありますか?また、これは、たとえばiTextを使用してプログラムで実行できますか?
いくつかのオプションがあります。これらの方法はすべて、Linuxだけでなく、WindowsまたはMac OS Xでも機能します。ただし、ほとんどのPDFには、フォントが埋め込まれている場合、完全な完全なフォントフェースが含まれていないことに注意してください。ほとんどの場合、ドキュメントで使用されているグリフのサブセットのみが含まれています。
pdftops
* nixシステムでこれを行うために最も頻繁に使用される方法の1つは、次の手順で構成されています。
pdftops
(Windowsの場合:pdftops.exe
ヘルパープログラム)を使用して、PDFをPostScriptに変換します。.pfa
を使用してフォントを抽出できます。.pfa
(ASCII)を.pfb
(バイナリ)ファイルに変換する必要がある場合があります。t1utils
pfa2pfb
.pfm
、.afm
ファイル(フォントメトリックファイル)が埋め込まれることはありません(PDFビューアにはこれらに関する内部知識があるため)。これらがないと、フォントファイルは視覚的に心地よい方法で使用することはほとんどできません。fontforge
もう1つの方法は、FreeフォントエディターFontForgeを使用することです。
FontForgeのマニュアルを確認してください。抽出されたフォントデータを再利用可能なファイルとして保存するために、必ずしも簡単ではないいくつかの特定の手順に従う必要がある場合があります。
mupdf
次に、MuPDF。このアプリケーションには、PDFからフォントや画像を抽出できるpdfextract
(Windowsの場合:)というユーティリティが付属しています。pdfextract.exe
(まだ比較的未知で新しいMuPDFについて知らない場合:「MuPDFはポータブルCで書かれた無料の軽量PDFビューアおよびツールキットです。」、Ghostscriptを提供したのと同じ会社であるArtifexSoftware開発者によって書かれました。 )
(更新:新しいバージョンのMuPDFは、「pdfextract」の以前の機能をコマンド「mutoolextract」に移動しました。ここからダウンロードしてください: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
およびをサポートします。残念ながら、これらのツールの公式ドキュメントは(まだ)最新ではありません。'MacPorts'を使用しているMacを使用している場合:同じ名前を使用している他のユーティリティとの名前の衝突を避けるために、ユーティリティの名前が変更されました。clean
extract
poster
show
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
パラメーターを使用して、キーワードFontFileの出現をPDFで検索します(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
>>
PDF内に2つのインスタンスがありFontFile2
、これらはPDFオブジェクトにありません。15といいえ。それぞれ16。オブジェクト番号 15は、/FontFile2
フォント/ ArialMT、オブジェクト番号を保持します。16は、/FontFile2
forフォント/Arial-BoldMTを保持します。
これをより明確に示すには:
pdf-parser.py -s fontfile big1.pdf | grep -i fontfile
/FontFile2 15 0 R
/FontFile2 16 0 R
PDF仕様をざっと見ると、キーワードが「TrueTypeフォントプログラムを含むストリーム」/FontFile2
に関連して いることがわかります(「タイプ1フォントプログラムを含むストリーム」に関連し、「フォーマットがストリームディクショナリのサブタイプエントリによって指定されます' {したがって、Type1CまたはCIDFontType0Cサブタイプのいずれかです}。)/FontFile
/FontFile3
特に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バイトです。この図は、前のコマンドの出力で確認できました。このファイルをテキストエディタで開くと、その内容がASCII16進エンコードデータであることが確認されます。
otfinfo
(これはlcdf-typetools
パッケージの一部です)のようなフォント読み取りツールでファイルを開くと、最初はがっかりします。
otfinfo -i dumped-data.ext
otfinfo: dumped-data.ext: not an OpenType font (bad magic number)
pdf-parser.py
OK、これは、フィルタリングされ、デコードされたストリームをダンプするという、その完全な魔法を(まだ)利用させなかったためです。このために、-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オブジェクト番号にもすでに保存されています。キーの値としての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は、とにかくフルフォントを埋め込みませんが、サブセットのみを埋め込みます。フォントのサブセットを抽出することは、たとえあったとしても、非常に限られた範囲でのみ役立ちます。
フォント抽出の取り組みに関する長所と(詳細)短所についても、以下をお読みください。
オンラインサービスhttp://www.extractpdf.comを使用します。何もインストールする必要はありません。
この質問は10年前のものですが、それでも有効であり、テクノロジーが変化するにつれて、有効な答えも変わります。
現在の回答を検索したところ、個々の文字(グリフ)を再作成してWebページに正確に表示するために使用できるWOFF(Web Open Font Format)(W3C)(Wikipedia )に気付いた回答はありませんでした。
IDR Solutionsによる無料のオンラインWebページ、PDFからHTML5(リンク)を使用して、PDFをzipファイルに変換します。結果のzipには、woffファイルタイプのフォントディレクトリが含まれます。現在のインターネットブラウザは、気づいていない場合はwoffファイルをサポートしています。(参照)これらはオンラインサイトFontDropで調べることができます!(リンク)。
WOFFファイルは、 WOFFer –WOFFフォントコンバーターでOTFまたはTTFとの間で変換できます。
また、PDFからHTML5へのzipファイルには、インターネットブラウザで開くことができるPDFの各ページのHTMLファイルが含まれています。これは、私が見つけた、または見た中で最も正確なPDF翻訳の1つです。
私はWOFFファイルの使い方を学んでいますが、これは伝える価値があります。楽しみ。
PS、woffファイルタイプの使用について詳しく知るにつれて、おそらくより多くの情報で更新しますが、これはクリエイティブコモンズであるため、渡す価値のあるものがある場合は、この回答を自由に編集してください。
最終的にFontForgeWindowsインストーラーパッケージを見つけ、インストールされたプログラムからPDFを開きました。御馳走を働いた、とても幸せ。
http://www.verypdf.com/app/pdf-font-extractor/pdf-font-extracting-tool.html IMOでフォントを抽出する最も簡単な方法(Windows)。
PDFフォントを抽出するために現在利用可能な最高のオンラインツールの1つは、http: //www.pdfconvertonline.com/extract-pdf-fonts-online.htmlです。
PDFTronのPDF2SVGバージョン6.0は妥当な仕事をします。デフォルトでOpenType(.otf
)フォントを生成します。--preserve_fontnames
「ソースファイルから取得したフォント/フォントファミリの命名スキーム」を保持するために使用します。
PDF2SVGは商用製品ですが、無料のデモ実行可能ファイルをダウンロードできます(SVG出力に透かしが含まれていますが、それ以外の場合は使用が制限されていません)。フォントを抽出する他のPDFTron製品もあるかもしれませんが、私は最近PDF2SVGを自分で発見しました。
これは、@ Kurt Pfeifleの回答font-forge
のセクションのフォローアップであり、Red Hat(および場合によっては他のLinuxディストリビューション)に固有のものです。
TTFファイルを入手したら、次の方法でシステムにインストールできます。
/usr/share/fonts
(ルートとして)fc-cache -f /usr/share/fonts/
(ルートとして)