2017-06-10 5 views
1

私はGhostscript 8.15で作成されたpdfを持っています。 pdfファイルからフォント名を抽出し、いくつかの操作を実行する私のソフトウェアからこのpdfを処理する必要があります。しかし、このpdfファイルからフォント名を抽出すると、これらの名前は同じではありません。例:元のフォント名は「NOORIN05」ですが、pdfファイルには「TTE25A5F90t00」が含まれています。どのようにしてこれらのフォント名を元の名前にデコードできますか?すべてのフォントはTTFです。Ghostscriptによって生成されたPDFから元のフォント名を取得するにはどうすればよいですか?

注: なぜフォントを抽出する必要がありますか。 InPageという名前のソフトウェアがあります。これは、インドとパキスタンでウルドゥー語で文書を書くのが最も有名でした。ワープロのユニコードサポートの前に、ウルドゥー語をコンピュータに入力する唯一のソリューションだったからです。 Urdu言語の複雑さのため、このソフトウェアはNOORIN01〜NOORIN89という89のフォントファイルを使用します。あまりにも多くのフォントファイルを使用する理由は、19,000以上のウルドゥー合字をすべて含んでいるためです。なぜなら、各ファイルには255個の合字しか含まれていないので、ユニコードの前にこのテクニックを使用していたからです。このソフトウェアによって生成されたpdfファイルのテキストをコピー&ペーストすると、MS Wordでゴミが発生します。私が89以上のフォントファイルについて語った理由。そのような種類の古いpdfファイルからテキストを抽出する方法はありませんでした。 (今はこのソフトウェアはユニコードのサポートを持っていますが、私は古いファイルについて話しています)。だから私はC#でそのような古いpdfファイルからテキストを抽出するソフトウェアを開発しました。私が使用しているアルゴリズムで、すべてのaschiiコードを持つ89個のフォントファイルのすべての名前を含むデータベースファイルを作成し、次の列にユニコードでウルドゥー語のユニコード文字を入力しました。 pdfファイルをフォントで文字単位で処理し、データベースファイルのフォント名と照合し、データベースからUnicode合字を取得してテキストボックスに表示します。だからこの方法で私は正常にUnicodeのテキストを取得します。私のソフトウェアは多くのpdfファイルで正常に動作していました。しかし、数日前、私はあなたのソフトウェアがこのpdfからテキストを抽出できないという人から苦情を受けます。私がテストすると、pdfファイルに元のフォント名が含まれていないことがわかりました。そのため、私のソフトウェアはそれ以上の処理を行うことができません。このPDFファイルのプロパティを確認すると、PDFプロデューサのGPL Ghostscript 8.15が表示されます。だから私はネットを検索し、フォントに関連するドキュメントを勉強したが、元のフォント名をデコードして取得する手がかりは見つけられなかった。

+0

一般的に、フォント名をそのまま使用するにはPDFプロセッサは必要ありません。したがって、一般的に文字をフォント名で正しく認識できるとは保証できません。完全停止。つまり、フォント名を比較するだけではなく、問題のグリフを特定することはもちろん可能です(結局のところ単純なことです)。例えば。グリフのフォントプログラムの指示と、他の文書の問題のグリフについて知っている指示とを単純に比較することができます。 – mkl

答えて

2

まず、Ghostscriptの最新バージョンを試してください。 8.16は14歳です.....現在のバージョンは9.21です。

もしその名前が元の名前(潜在的に通常のサブセット接頭辞を含む)を保持していれば、問題を示す入力ファイルの例を見る必要があります。

なぜのフォント名を抽出する必要があるのか​​を説明するのに役立つかもしれません。単純に不可能なものを試している可能性があります。

は、[EDIT}

OKが今私が問題を理解し、私はあなたの質問への答えが「あなたは、元のフォント名を取得することはできません」です怖いです。

PDFファイルは、(Adobe製の)Windows PostScriptプリンタドライバの出力から作成されたものです。 TrueTypeフォントをタイプ42フォントとしてPostScriptストリームに埋め込むと、 'TT'の後ろに16進数のように見えるかもしれない追加の文字が続く擬似ランダム名が付けられます。

旧Ghostscriptのpdfwriteデバイスのバージョン(および8.15は非常に古いである)は、単にそのままその名前を使用し、それはあなたが供給PDFファイルでのフォント名に使用されてきたものです。

新しいバージョンでは、フォントをさらに掘り下げて、PostScriptに存在する元のフォント名を取得することができます。残念なことに、古いバージョンはそれを保存していませんでした。情報を放棄すれば、もう一度情報を取り戻すことはできません。

あなたが持っている唯一のものがこのPDFファイルであれば、単にフォント名を戻すことができません。より新しいバージョンのGhostscriptを使用して、PDFファイルを提供した人がそれをリメイクすることができれば、それは動作します。しかし、私は彼らが14歳のファイルを作成するために使用されたPostScriptプログラムを持っていないと思います。

+0

あなたの親切な返事のためにKenSに感謝します。 は、このpdfファイルへのリンクです。 [私のpdfファイル](https://drive.google.com/open?id=0B02XT3ZC6ynZeE96Z001TmR3NEk) 私はフォント名を抽出する必要がある理由は、私の質問を編集し、詳細に私の質問の最後に説明した、コメントの文字数の制限が少ないため、私はここで説明できませんでした。ありがとうございました。 – user1336491

+0

KenSに感謝します。あなたは私のために状況をクリアする。 – user1336491

+0

*あなたが持っている唯一のものがこのPDFファイルであれば、単にフォント名を戻すことができません。* - 名前情報はなくなりましたが、まだ埋め込みフォントファイルがあります。 OPはそれらを抽出し、そこにある情報(実際の描画命令まで)を他のPDFからの情報と比較することができます。埋め込まれたフォントからの情報がこれらの89個の基本フォントのうちの1つと正確に一致すると、彼はそれを特定しました... – mkl

関連する問題