2013-12-18 18 views
6

iText XMLドキュメントを使用してXMLからPDFへの使用方法を示す例がいくつか見つかりました。しかし、それは古いバージョン4.xのものです。例がありますか、誰かがバージョン5.xで同じことをするために必要な/更新されたコードの例を投稿できますか?iText XMLからPDFへの最新バージョン

すべての例ではこのようなコードを参照していますが、新しいバージョンではITextHandlerクラスを置き換えるために使用するものを見つけることができません。また
http://www.ridgway.co.za/archive/2005/07/31/itextsharpxmltopdfexample.aspx

Document document = new Document(); 
PdfWriter.GetInstance(document, new FileStream("ExampleDoc.pdf", FileMode.Create)); 
ITextHandler xmlHandler = new ITextHandler(document); 
xmlHandler.Parse("ExampleDoc.xml"); 

、私は、HTMLからPDFへ行くしようとしていないのです。 CSSのスタイリングは決して期待通りに出てこない。

編集すると、実際にここで何か助けが必要です。誰でも?

+0

処理したいxmlはどのくらい複雑ですか? –

+0

この時点で、私はそれがどれだけ必要であるかをそれを構築することを喜んでしています。サンプルが動作しないので、XMLはまだありません。私がしようとしているのは、単純な請求書テンプレートを作成することだけです。 –

+0

HTMLに変換してみませんか?本当にHTMLに変換したくないのであれば、XMLWorkerを拡張して独自のパーサを書くことができます。 –

答えて

3

iTextの独自の構文を使用したXMLファイルの処理は、非常に長い時間前に削除されました。著者からの直接の回答については、thisおよびthisを参照してください。代わりに、 XHTMLである世界的に認められたXML標準を使用することをお勧めします。

あなたはあなたがHTMLを使いたくないと言ったことは知っていますが、それは決して正しく出てこないので、あなたが試しているもののサンプルを投稿して助けてくれるかもしれません。また、HTMLWorkerではなく、XMLWorkerを使用していることを確認してください。追加のヘルプ/情報については、これらのリンクを参照してください。この編集は、@ JOHNCさんのコメントへの答えである

EDIT

私はiTextチームとその理由について話すことができませんが、私は物事を推測することができます。 PDFには「段落」、「単語」、「表」などはありません。代わりにPDFにはテキスト、図(線、パターン)と画像があります。これらの作業を手動で実行する場合は、未加工のPdfContentByteオブジェクトを使用できます。ただし、ParagraphPdfPTableのようなiTextの抽象的な表現は、あなたの代わりにPdfContentByteを使用することをお勧めします。

iTextがXML形式をサポートするためには、最初に独自の適切なDTDおよび/またはXMLスキーマを作成する必要があります。機能が追加されると、スキーマを正しくバージョンアップして、消費者に問題や混乱を引き起こす可能性があります。次に、XML抽象化をiText抽象化または生のPDFコマンドに変換するパーサーを構築/維持する必要があります。前者の場合、抽象化して抽象化しているだけです。抽象化は壊れようとしています。後者の場合、フィーチャ・パリティの問題に結びつく抽象化の実装が2つあります。

また、XMLは何を表していますか?段落、テキスト、イメージ、テーブルの塊? HTMLのように聞こえるので、そのようなスキーマを繰り返す必要はありません。または、それは "文字ABCを使用して座標X、YにコンテンツZを入れる"でしょうか?それでPdfContentByteが来ます。本当に、ネイティブパーサが存在する可能性がありますが、私はそこにあると推測しています。あるいは、XMLは<book><inventory>のような独自のデータに基づいた独自のフォーマットですか?そうであれば、iTextはそれをどのようにスタイルするか全く分かりません。ただし、.Net/JavaとXSLTを活用してXMLを知っているXHTMLコマンドに変換することもできます。

+0

この最初のリンクは、彼がDTDのサポートを取り除いたと言いますが、それがXMLからPDFへの全機能に言及していたのかどうかは不明です。厳密な方向性を持つiText XMLテンプレートを作成する方が、XHTMLや試行錯誤ではなく、制限されたCSSの理解をPDFに伝える方が簡単なようです。 –

+0

@ JohnC、私は上記に答えました。私はiTextチームのために話しませんので、これは私自身の個人的なテイクです。私はXML表現が悪いと言っているのではなく、実際に自分でそれをやった。しかし、iTextチームは何を処理すべきかを判断しなければならず、多くの人々がこれを求めているとは思わない。彼らに特定のユースケースを示すことができれば、彼らは提案で応答するか、将来のバージョンで機能として追加する可能性があります。 –

+0

iText XMLは旧バージョンになっていたのですが、コンテンツZを座標Xに、YをフォントABCで置き換えました。 xhtmlに関する私の問題はxhtmlの部分ではなく、それが期待どおりに機能していれば、それは素晴らしいことです。そのCSSトランスレータが期待どおりに翻訳しないという問題です。段落とPdfPTableのようなPdfContentByteまたはiTextの抽象化を使用して、コードを構築したコードの "良い"例はありますか? –