問題タブ [itext7]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
0 に答える
441 参照

pdf - iTextSharp のフォント幅の定義が正しく読み込まれていない

Ghostscript 9.19 を使用して PDF/A 互換 PDF (1.4) を作成した顧客から入手した PDF に特有の問題があります。LocationTextExtractionStrategy を使用してそこからテキストを抽出したいのですが、ほとんどのテキストを逆の順序で取得し、スペースを追加します。

予想: abc

取得: cba

コンテンツ ストリームでは、これは [a,1,b,1,c] TJ のようになります

この問題は以前に Stackoverflow に投稿されていましたが、独自の抽出戦略をハックするよりもさらに問題を掘り下げました。使用されているフォントのフォント幅がすべてゼロであり、メトリックも hMetrics マップも塗りつぶされていないことに気付きました。iTextSharp 5.5.4 を使用していましたが、5.5.9 にも同じ問題があります。

これはフォントです:

オブジェクト 33 は CMap です。

オブジェクト48はストリームであり、偶然にもCMapでもあります

オブジェクト 35 には、最終的にいくつかの幅の定義があります

iTextSharp が CMapAwareDocumentFont を初期化する順序で、最初にベース DocumentFont が初期化されます。次に、コンストラクターは以下をチェックします。

どちらでもありません。

そうではありません。次に、次の else ブランチに入ります。

ただし、encoding は間接参照として指定されるため、encodingName は null です。したがって、この Type0 フォントの処理は処理されません。

ライブラリ コードでこのビットを変更しましたが、ProcessType0(font) メソッドが呼び出されても、幅の値がフォント定義に反映されませんでした。つまり、すべてゼロのままでした。これはおそらく予想通りです。最後に、メトリクス ハッシュ マップを埋めましたが、使用されているすべての文字をカバーしていませんでした。つまり、状況は少し良くなりましたが、すべてが良いわけではありません:

代わりに: abc -> cba

私は今得ました: abc -> acb

現在の問題に対する私の唯一の機能するハックな解決策は、 processor.DisplayPdfString((PdfString)entryObj) をハックして、textMatrix を一定量調整することでした。ただし、これは一般的な解決策ではなく、フォントが正しく機能することを望んでいます。私が試すべき他の提案はありますか?

編集: iText 7 .Net を使用して問題を再検討しましたが、テスト ファイルからテキストを読み取ろうとすると NullReferenceException が発生します。

これは私が使用したファイルです: https://drive.google.com/file/d/0B1RdIg0_Pbd_aTlOT2VmbnFlaTQ/view?usp=sharing

コードは他の PDF ファイルでは機能しますが、このファイルでは機能しません。

更新 mkl のおかげで、根底にある問題はフォント エンコーディング ストリームにあることがわかりました。悲しいことに、これはロードマップにないというメッセージを iText セールス チームから受け取りました。彼らは、これは奇妙な外れ値であると主張しています。他のほとんどの人は、フォント エンコーディング ストリームのサポートを必要としません。したがって、これを読んでサポートが不足しているという問題がある場合は、電子メールでお知らせください。

0 投票する
0 に答える
4069 参照

itext - asp.net c# を使用した開発のための itext-7 チュートリアル

itext 7 を使用して PDF を操作しようとしていますが、チュートリアルを確認しましたが、JAVA で使用できます。C# のチュートリアルが必要です。実際の提案は、チュートリアルの例で使用されている Java クラスと同等のクラスを見つけることです。

0 投票する
1 に答える
1900 参照

itext7 - itext 7 をロードするための試用版ライセンスを取得できません

itext 7 の pdfsweep 機能を調べようとしています。30 日間の試用ライセンスを取得しました。を呼び出すとLicenseKey.loadLicenseFile(path-to-key-file)、エラーなしで返されますが、 をインスタンス化しようとするとPdfCleanUpTool、次のエラーが発生します。

ありがとう。

0 投票する
1 に答える
1629 参照

vb.net - iText 7 を使用して PDF ファイルの作成日を取得する

複数の .pdf ファイル名に作成日を追加するツールを作成する必要があります。PDFに内部的に保存されている作成日を使用したいので、iText Community Editionをダウンロードしました。

さて、私のコードは次のように始まります (VB)

GetAuthor と GetCreator を他のいくつかの Get メソッドと一緒に取得しましたが、GetCreationDate のようなものは見つかりません。AddCreationDate だけです。

mypdfobject をさらに調べてみると、/Creationdate タグのマップが見つかったので、それを使用することを考えましたが、D:20160704132234+02'00' の形式であることが多いのですが、バイナリ データのように見えるものを見つけて、それをデコードする方法がわかりません。

作成日を取得するより良い方法はありますか?

ありがとう

ステファノ

0 投票する
0 に答える
107 参照

itext7 - 同じドキュメント オブジェクトに、半分のページにデフォルトのドキュメント レンダラーが必要なページがあり、後半にも ColumnDocumentRenderer が必要です

itext 7 とそのColumnDocumentRenderer. しかし、同じドキュメントオブジェクトには、デフォルトのドキュメントレンダラーが半分のページに必要で、後半にも必要なページがありますColumnDocumentRenderer。同じドキュメントページでこれを達成するにはどうすればよいですか?

ColumnDocumentRendererスーパーデフォルトレンダラーを返すフラグに基づいて独自に作成するようにオーバーライドしましたColumnDocumentRenderer

しかし、同じページで両方のレンダラーを取得することはできません。常に c を持っている最初のものを使用します

0 投票する
1 に答える
15491 参照

itext - iText 7 で「Page X of Y」フッターを追加する方法

iText 7を使用して生成している PDF ドキュメントの各ページに「Page X of Y」フッターを追加する方法を見つけようとしています。

IEventHandler を使用して "Page X" 部分を生成するのはかなり簡単に思えます。私が苦労しているのは "of Y" ビットです。ドキュメント全体を 2 回生成してページ数を調べることは避けたいと思います。これはパフォーマンスに大きな影響を与えるためです。

ここでiText 5でこれに対する解決策を見つけました: PDF Page Numbering in Java & iText、しかしiText 7はまったく異なるインターフェイスで iText を完全に書き直したものであり、これまでのところ同様のiText 7の例を見つけることができませんでした.