1

ユーティリティまたはスクリプトを使用して、PDF ファイルに埋め込まれているフォントを外部の ttf ファイルに抽出することはできますか?

  1. PDF ファイルに埋め込まれている (または埋め込まれていない) フォントがシステムに存在する場合。swftools の pdf2swf および swfextract ツールを使用すると、PDF ファイルで使用されているフォントの名前を特定できます。次に、それぞれのシステム フォントを実行時にコンパイルし、AIR アプリケーションにロードします。

  2. ただし、PDF で使用されているフォントがシステムに存在しない場合は、次の 2 つの可能性があります。

    2.1. それらが PDF ファイルにも存在しない (埋め込まれていない) 場合、フォント名に基づいて類似のシステム フォントのみを使用できます。

    2.2. それらがPDFファイルに埋め込まれている場合、実行時にそれぞれを個別のswfファイルにコンパイルできるように、それらを外部ttfファイルに抽出することはまったく可能ですか?

4

5 に答える 5

7

あなたがこれを尋ねてからしばらく経っていることは知っていますが、私は私が助けることができるかもしれないと考えました.

フォント ファイルを抽出できるユーティリティがあるかどうかはわかりませんが、手動で行うことができます。

基本的に、PDF ファイルはさまざまなオブジェクトを含むテキスト ファイルです。任意のテキスト エディタで開いて、フォントを探すことができます。

フォントは FontDescriptor オブジェクトで指定されます。

<</Type/FontDescriptor/FontName/ABCDEE+Algerian ... /FontFile2 24 0 R>>

これは基本的に、Algerian という名前のフォントがオブジェクト 24 で指定されていることを示しています。「24 0 obj」行でオブジェクト 24 のドキュメントを検索できます。この行の後に、フォント ファイルを含むストリームのプロパティが表示されます。 「stream」キーワードの後から始まります (その長さは obj の後の行で定義されます)。

このストリームには、圧縮された ttf ファイルが含まれています。解凍するには、次の方法を使用できます。

  private static byte[] DecodeFlateDecodeData(byte[] data)
  {
     MemoryStream outputStream;
     using (outputStream = new MemoryStream())
     {
        using (var compressedDataStream = new MemoryStream(data))
        {
           // Remove the first two bytes to skip the header (it isn't recognized by the DeflateStream class)
           compressedDataStream.ReadByte();
           compressedDataStream.ReadByte();

           var deflateStream = new DeflateStream(compressedDataStream, CompressionMode.Decompress, true);

           var decompressedBuffer = new byte[1024];
           int read;
           while ((read = deflateStream.Read(decompressedBuffer, 0, decompressedBuffer.Length)) != 0)
           {
              outputStream.Write(decompressedBuffer, 0, read);
           }
           outputStream.Flush();
           compressedDataStream.Close();
        }
        return GetStreamBytes(outputStream);
     }
  }

これがあなたに役立つことを願っています...または他の誰かに役立つことを願っています

于 2010-02-09T06:32:12.463 に答える
2

cfftot1.exeを取得するためのリンクがftp://tug.org/texlive/Contents/live/bin/i386-linux/に変更されました

于 2011-08-29T06:35:55.230 に答える
2

数年前、私は特別なフォントをデザインしました。仕事のオンオフで約1年かかりました。ある日、私の Maxtor HDD が故障し、作業を回復する方法がありませんでした。しかし、クライアント用の一部の PDF ファイルにフォントを埋め込んでいました。次に、これらのファイルからフォントを抽出するというアイデアがあります。オンラインで回答を探して 1 年ほど経った後、PDF からフォントを抽出する方法をまとめました。http://pdffontextract.blogspot.comのブログでこの方法を紹介しました。私がこの解決策を思いついたので、多くの代替手段が生まれましたが、多様性には何の問題もありません. 失われた作業を回復する必要がある他の人を助けるために、この投稿を作成しました。楽しんでください。何か助けが必要な場合は、遠慮なく私に連絡してください。

于 2011-06-22T06:20:25.350 に答える
2

遅い答えですが、無料で入手できるWindowsプログラムを使用してこれを行う方法を見つけました。スクリプト作成、コンパイル、または cygwin は必要ありません。数ステップですが、見た目ほど悪くはありません。

  1. mupdf リンクをインストール - http://mupdf.googlecode.com/files/mupdf-0.8.15-windows.zip し、pdf を mupdf のインストール フォルダーにコピーします。それがwhatever.pdfと呼ばれているとしましょう。

  2. dos/コマンド プロンプトを開きます。mupdf インストール フォルダーに移動します。例: cd C:\Program Files\mupdf ...問題なく進むと、プロンプトは次のようになります: C:\Program Files\mupdf> 次に、次のコマンドを入力します: pdfextract anything.pdf

その後、mupdf プログラム フォルダー内に、1 つ以上のフォント ファイルが作成されます。それらには ABCDEF+Fontname-12.cff のような名前が付けられます...現在、それらは使用できない .cff 形式になっていますが、修正します。これをあまり扱いにくい名前に変更することをお勧めします...たとえば、whatever.cff

  1. さらにDOS、ごめんなさい。cftot1.exe というツールが必要です。リンクは次のとおりです: ftp://tug.org/texlive/Contents/live/bin/win32/cfftot1.exe ...これを mupdf フォルダーにコピーします。次に、次のように入力します

  2. これで、whatever.pfb というほぼ使用可能なフォント ファイルが作成されました。通常、PFB フォント ファイルには 2 番目のファイル、スペーシング情報を含む PFM ファイルも含まれているため、「ほぼ」と言います。このファイルがないと、フォントはインストールされず、スペースが台無しになります。ただし、フォントは引き続き fontlab などのフォント エディターで開きます。そこからフォントをTTFまたはOTFに保存できます。間隔を自分で修正することもできます。

フォント エディターがない場合は、クロスフォントを使用できます。Crossfont は、PFB を取得して必要な PFM ファイルを生成できるため、少なくともフォントをインストールして使用することができます。リンク - http://crossfont.en.softonic.com/

それでおしまい。

于 2011-04-07T04:33:38.740 に答える
2

マイナー アップデート - 一部の PDF には、.CID ファイルとして、別の独自の形式で埋め込まれたフォントが含まれています。この形式は、多くの文字 (アジア言語のフォントなど) をサポートするフォント用に作成されており、一般的な方法でグリフを文字にマップしません。

上記の私の回答にステップを追加するだけで、.CID ファイルから使用可能なフォントを取得できます。PStill (GPStil) というプログラムで PDF を実行します。ウェブサイトはこちら: http://www.wizards.de/~frank/pstill.html

入力を選択するときに、ドロップダウンを Postscript File から PDF File に変更します。出力 PDF には _new が追加されます。PDF のロックを解除する必要がある場合は、Elcomsoft の Advanced PDF Password Recovery を使用できます。

このステップでは、PDF に埋め込まれた CID フォントを PFA タイプ 1 フォントに変換します。そのため、PDFextract を実行すると、不要な .CID ファイルの代わりに、Fontlab やクロスフォントにインポートできる .PFA ファイルが得られます。文字はおそらく正しくマッピングされないことに注意してください。たとえば、キーボードで A を入力しても文字 R にならないように、Fontlab などで文字を移動させたいと考えています。

いつものように、フォントがサブセットとしてのみ埋め込まれている場合は、フォント全体ではなく、限られた文字セットのみが取得されます。

于 2011-09-28T16:37:15.673 に答える