2016-08-16 42 views
0

私は、'ps 'ファイルを生成するPostscriptプリンタを使用しています。このpsファイルを私のLinuxマシンで' ps2pdf 'コマンドを使用して.pdfに変換しています。ここで生成されるファイルは、選択可能でコピー可能ではありません。また、同じpdfファイルからApache Tikaを使用してコンテンツを抽出しようとすると、空の文字列が返されます(抽出できないことを意味します)。いくつかのフォントは、いくつかの新しいフォントもインストールしましたが、それでも私のためにはうまくいきませんでした。tikaを使用してpdfファイルからテキストコンテンツを抽出できません

プリンタドライバやghostscript( '.ps'を '.pdf'に変換するために使用されています)に問題があるか、フォントなどで問題があるかどうかはわかりません - そうです。

tikaを使用してコンテンツを取得しているうちに、以下のような警告(エラーではない)が表示されます。

WARN No Unicode mapping for CID+1 (1) in font WKQJKU+ArialNarrow-Identity-H 
WARN No Unicode mapping for CID+2 (2) in font WKQJKU+ArialNarrow-Identity-H 
WARN No Unicode mapping for CID+3 (3) in font WKQJKU+ArialNarrow-Identity-H 
WARN No Unicode mapping for CID+4 (4) in font WKQJKU+ArialNarrow-Identity-H 
WARN No Unicode mapping for CID+5 (5) in font WKQJKU+ArialNarrow-Identity-H 

....

すべてのヘルプは、事前に.Thanksを理解されたいです。

答えて

2

元のPostScriptファイルとPDFが表示されていないため、実際に問題が何であるかを知ることができず、修正できます。ファイルを公開する必要があります。

「ps2pdf」コマンドが何であるかを正確に言うわけでもありません。同名のユーティリティがいくつかあります。 Ghostscriptを使用している場合は、実行時にGhostscriptが表示されます。もしそうなら、混乱を避けるためにGhostscriptを直接実行する方が良いでしょう。また、使用しているGhostscriptのバージョンを引用する必要があります。

現在、PostScriptプログラムは通常、印刷のためにプリンタに送信されることを意図しています。したがって、文字エンコーディングと文字コードが組み合わされて、出力時に期待される文字形状を生成するという条件で、文字コードがグリフを表すために使用されることは重要ではありません。したがって、紙の上に「A」として印刷される元のアプリケーションの「A」は実際には例えば0x41の文字コードで表されるという保証は全くありません。実際に印刷されたグリフだけを含むサブセットフォントを作成するアプリケーションでは珍しくなく、印刷される最初の文字にコード1が与えられ、2番目にコード2などが与えられるように配置されています。したがって 'Hello '0x01 0x02 0x03 0x03 0x04

Windows PostScriptプリンタドライバは、グリフ名をUnicodeコードポイントにマップする非標準G2Uテーブルを追加し、これを使用してToUnicode CMapを構築し、これをPDFファイル。これにより、複雑なエンコーディングをUnicode値に変換することができます。つまり、検索とコピー/ペーストが機能します。

しかし、PostScriptプログラムの作成に使用しているシステムについては言及しておらず、サンプルを提供していないため、PostScriptの生成方法もわかりません。

あなたのPDFファイルがCIDFontを使用していて、ToUnicode CMapを含んでいないようです。これは、あなたがコピー/貼り付けることができるPDFファイルを生成することはほとんどありません。もちろん、それはとにかくPDFのもともとの目標ではありませんでした。それが可能であることが保証されていない理由です。

PostScriptファイルを編集可能なPDFファイルに変換する方法はありませんが、十分な情報を提供していない可能性があります。

[後で]

のPostScriptは、それが単にカイロの動作方法であってもよいし、おそらくPDFファイルから、カイロで生成が、それは完全に明確ではありませんされています。いかなる場合でも....PostScriptには、CIDFontType 2(TrueTypeアウトライン)の埋め込みサブセットCIDFontが含まれています。 PostScriptには、Unicode情報を提供するための定義されたメカニズムがないため、提供されていません。前述のように、文字が遭遇すると「エンコード」が作成されるので、最初のグリフは0x01などでエンコードされます。

この結果、このPostScriptファイルから意味のあるテキストを簡単に抽出することはできず、それを印刷してOCRを使用する以外はもちろんです。

CIDFontのsfntsには、グリフIDをUnicode値にマップする3,0 CMAPサブテーブルが含まれていることが考えられますが、チェックするのに時間がかかります。

しかし、たとえそうであっても、Ghostscriptのpdfwriteコードは現在その偉大さを試していません(Acrobat Distillerや私が知っている他のPostScriptからPDF作成者もそうではありません)。

基本的に、あなたがしようとしていることはできません。なぜカイロはPostScriptファイルではなくPDFファイルを作成するのですか?そのように働く可能性が高いと思ったでしょう。もちろん、仮想プリンタの仕組みを見なければならないことを意味するでしょう.CUPSを使用している場合は、PDFは現代版のCUPSで使用される不可解な形式なので、考えてもよいはずです。

+0

こんにちは@KenS、あなたの素早い応答のためにありがとう、私の質問では 'ps2pdf'はghostscriptユーティリティで、プリンタはLinuxマシンにあります。私は参照用にファイルをアップロードする方法がわかりません。私はあなたにもファイルを送ることができます。 – prasad

+0

ここにファイルを投稿することはできません。DropBoxなどに配置してURLを投稿すると、私以外の人が見ることができます。どのバージョンのGhostscriptを使用していますか?どこから入手しましたか?電子メールを絶対に使用する必要がある場合は、spamcopドットネットでケンに送ることができます(ここに明白な電子メールアドレスを入れたくありません) – KenS

+0

こんにちは@KenS、私のghostscriptバージョンは9.16です。私はポストスクリプトとpdfへのドロップボックスリンクを共有していますファイル。 https://www.dropbox.com/s/jq5m4dkz175o0nk/VirtualPrinter_16_08_2016_16_09_20_865.ps?dl=0、https://www.dropbox.com/s/y8jo3whu2kw12sr/VirtualPrinter_16_08_2016_16_09_24_896.pdf?dl=0 – prasad

関連する問題