まず、stackowerflowが過去に多くの問題を解決してくれたことを指摘したいと思います。ありがとうございました。しかし今、私はまだ解決策を見つけられていないという問題に直面し、それが私を夢中にさせています。私は英語を母国語としないので、言語の間違いでごめんなさい。
だからここにあります:
私はitextsharp
library(ちなみに素晴らしいライブラリ)でpdfを生成しています。私はある種のpdfフォーム/テンプレートから始めており、それに「記入」データを追加しています。私はPdfReader
テンプレートpdfを読むために使用しており、個々のページの校正PdfStamper
方法によって取得します。それで私は私のテキスト/データを追加しています(そしてすべてのページで使用されます)。私がメソッドで追加するテキストのほとんど。それで、生成されたpdfには私のテキストが含まれています。問題は、「列化された」テキストを追加する必要があるところから始まります。私は次のコードでそれを行います:GetOverContent(pageNum)
PdfContentByte
PdfContentByte
BeginText
EndText
ShowTextAligned
ColumnText ct = new ColumnText(cb);//cb is PdfContentByte
Phrase p = new Phrase(txt, FontFactory.GetFont(DEFAULT_FONT, BaseFont.CP1250, true, font_size));
ct.SetSimpleColumn(p, x, y, x+width, y+height, 10, alignment);
ct.Go();
setDefaultFont();//sets font to PdfContentByte again with setFontAndSize and SetColorFill
列テキストはこのコードOKで追加されますが、これの後に追加されたテキスト(同じページ/同じPdfContentByte
)はAcrobatReaderに表示されShowTextAligned
ません。
これが「楽しい」部分です-foxitリーダーで開いた同じpdfファイルのテキストは罰金/可視/OKです。
したがって、追加ShowTextAligned
後に追加されたテキストColumnText
は、acrobatリーダーでは表示されませんが、foxitリーダーでは問題なく表示されます。この問題は1つのページ内に存在し、新しいページはこの問題をリセットします(PdfContentByte
次のページは新しいため)。
ColumnText
そのための私の回避策は、のすべての呼び出しの後にすべてを追加することでしたShowTextAligned
。これは今日まで機能し、顧客が生成されたpdfをacrobatリーダーで印刷すると、ドキュメントを印刷した後、pdfにエラーが含まれているため、pdfの作成者に連絡する必要があるというメッセージが表示されました。AdobeReaderのバージョンは10.1.1です。問題は顧客のコンピューターにはありません。同じことが私のコンピューターでも起こります。
Webを調査した後、PDFの分析を目的としたツールPreflightを含むAdobe Acrodat Pro Trialをインストールしました(私が理解している限り)。このツールは、「オペレーターのコンテンツ状態ストリームが無効です」という警告を出力します。そして、ここで私は立ち往生しています。ColumnText
それらなしで生成されたドキュメントは表示/印刷に問題を引き起こさず、プリフライトは「問題は見つかりませんでした」と述べているため、問題はadded内に存在すると思います。
私はいくつかの事実を見逃している可能性があり、問題は私のコードにあります...
私はアイデアが不足しているので、私を助けてください。この投稿がいつか同じ問題を抱えている他の誰かに役立つことを願っています。機密データが含まれているためサンプルPDFを添付できませんが、他に方法がない場合は、シナリオ/コードを再作成します。