問題タブ [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.
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 セールス チームから受け取りました。彼らは、これは奇妙な外れ値であると主張しています。他のほとんどの人は、フォント エンコーディング ストリームのサポートを必要としません。したがって、これを読んでサポートが不足しているという問題がある場合は、電子メールでお知らせください。
itext - asp.net c# を使用した開発のための itext-7 チュートリアル
itext 7 を使用して PDF を操作しようとしていますが、チュートリアルを確認しましたが、JAVA で使用できます。C# のチュートリアルが必要です。実際の提案は、チュートリアルの例で使用されている Java クラスと同等のクラスを見つけることです。
itext7 - itext 7 をロードするための試用版ライセンスを取得できません
itext 7 の pdfsweep 機能を調べようとしています。30 日間の試用ライセンスを取得しました。を呼び出すとLicenseKey.loadLicenseFile(path-to-key-file)
、エラーなしで返されますが、 をインスタンス化しようとするとPdfCleanUpTool
、次のエラーが発生します。
ありがとう。
vb.net - iText 7 を使用して PDF ファイルの作成日を取得する
複数の .pdf ファイル名に作成日を追加するツールを作成する必要があります。PDFに内部的に保存されている作成日を使用したいので、iText Community Editionをダウンロードしました。
さて、私のコードは次のように始まります (VB)
GetAuthor と GetCreator を他のいくつかの Get メソッドと一緒に取得しましたが、GetCreationDate のようなものは見つかりません。AddCreationDate だけです。
mypdfobject をさらに調べてみると、/Creationdate タグのマップが見つかったので、それを使用することを考えましたが、D:20160704132234+02'00' の形式であることが多いのですが、バイナリ データのように見えるものを見つけて、それをデコードする方法がわかりません。
作成日を取得するより良い方法はありますか?
ありがとう
ステファノ
itext7 - 同じドキュメント オブジェクトに、半分のページにデフォルトのドキュメント レンダラーが必要なページがあり、後半にも ColumnDocumentRenderer が必要です
itext 7 とそのColumnDocumentRenderer
. しかし、同じドキュメントオブジェクトには、デフォルトのドキュメントレンダラーが半分のページに必要で、後半にも必要なページがありますColumnDocumentRenderer
。同じドキュメントページでこれを達成するにはどうすればよいですか?
ColumnDocumentRenderer
スーパーデフォルトレンダラーを返すフラグに基づいて独自に作成するようにオーバーライドしましたColumnDocumentRenderer
。
しかし、同じページで両方のレンダラーを取得することはできません。常に c を持っている最初のものを使用します
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の例を見つけることができませんでした.