2011-08-09 8 views
0

私は3ページのWord文書をPDFに変換する必要があります。このWord文書は、PDF出力がどのように表示されるかを示すテンプレートとして私に与えられました。この文書をPDFに変換してPDFフォームを作成し、iTextSharpを使用してフォームを開き、データを入力してクライアントに返します。これはすべて素晴らしいですが、大量のデータが格納されているため、プレースホルダが不十分で、テキストが切り捨てられたり隠されたりします。大量のテキストと動的データをPDFに変換する

MVC 2 Viewをマスタページなしで作成し、モデルをビューに渡し、ViewのHTML表現を取得し、iTextSharpに渡してPDFをレンダリングしました。 iTextSharpがいくつかのタグで失敗したという問題がありました(そのうちの1つは<hr>タグでした)。私は問題のあるタグを取り除くことができたが、テーブルは正しく描画されなかった。つまり、境界線の属性は無視されたので、境界線のない表が作成されました。その試みは失敗しました。

MVC 2でPDF文書を作成する最も効率的な方法については、長期的には維持可能な提案やアドバイスが必要です。私は自分の行動が200行以上になることを本当に望んでいません。 Word文書を直接操作するのは、VSTOで作業したことがないため、最良の解決策ではないため、Wordを開いてその内部のテキストを操作して動的データを追加し、それをPDFに動的に変換する方法。

どのようなご提案も大歓迎です。

よろしくお願いいたします。

+0

おそらく答えはありませんが、何かを調べるにはpdf.js:https://github.com/andreasgal/pdf.js/ –

+0

こんにちはジャスティン、応答ありがとう。しかし、このプロトタイプはHTML 5の能力を活用しています。私が書いているアプリケーションは公開されているので、サポートが必要な(古いブラウザを読む)ブラウザがあります。 –

+1

お聞きします。どの言語を扱っても、PDFを生成するのが最悪です。私はあなたに幸運を願っています:-) –

答えて

2

ことの一つは、DOCXとしてWordファイルを保存し、それを解凍することですファイル。アーカイブ内で/word/document.xmlが開き、あなたの文書が表示されます。そこには奇妙なXMLタグがたくさんありますが、全体的にはあなたのコンテンツがどこにあるのかをよく知るべきです。次に、{FIRST_NAME}のようなプレースホルダテキストを追加して、ファイルを保存して、再圧縮します。

またはDotNetZipのように解凍して、プレースホルダーのコピーを交換し、再圧縮してから非常に使いこなすのと同じ手順をコードから実行することができます。imple Word automation to Save-As a PDF

もう1つの方法は、iTextSharpをフルに活用し、実際にはParagraphsPdfPTableとその他すべてを書き込むことです。セットアップにはかなり時間がかかりますが、ほとんどの制御が得られます。

+0

+1、Wordの自動化は簡単で実装が簡単です。しかし、それは非常に遅く、資源集中型であるという問題はほとんどありません。 –

+0

@Chris、ありがとうございます。私はこのアプローチにいくつかの考えを置くでしょう。しかし、私はiTextSharpで終わり、3ページの文書を一番下から再構築するかもしれないということに少し心から感謝しています。私が避けようとしていることだけ。 –

+0

@Huske、一からビルドすることは、iTextSharpに慣れてしまえば、それほど悪くはありません。時にはソースコードを閲覧することも時々役立ちます。もしあなたがそれらを持っているなら、間違いなくここに質問をしてください! –

0

Q:「...大量のデータが格納されているため、プレースホルダが不十分で、テキストが切り捨てられたり隠されたりします」 どのようにデータを大量に使用するのですか?単語テンプレートが3ページのデータを「保持」できる場合は、3つのPDFページに収まる必要があります。 私はiTextSharpを使ってPDFを作成していましたが、ほとんどの場合PDF文書を最初から作成することになりました(実際は< 200行の解決策)。私は最近MigraDocのPDFSharpに切り替えました。 DOCXはちょうど名前を変更したzipですので、その後、iTextを使ってして、私が過去にやったlotsa例/ docus

ちょうど私の2セント

+0

ご回答いただきありがとうございます。 iTextSharpよりずっと前にPDFSharpを見たことがありますが、後者は機能が豊富であることが判明しました。 MigraDocのソリューションでiTextSharpを使うよりも簡単にプログラムを作成できるようになりました。 –

0

Word文書オブジェクトモデルは非常に理解しやすいです。一連の段落または表が含まれます。 Open XML SDKを使用すると、ドキュメントの各段落/テーブルを繰り返し処理し、その内容とスタイルを取得できます。次に、取得した情報を使用してその場でPDF文書を生成することができます。これはMVCでも動作します。

単語の文書に複雑な要素が含まれている場合は、このアプローチに基づいて実装するのにもう少し時間がかかります。また、このアプローチは、(Word 2007および2010)ファイルでのみ機能します。

また、ITextSharpライブラリで現在利用可能なHTMLからPDFへのオプションは、わかっている限り、既知のタグのみで動作します。

もう1つの提案は、市販の.NETコンポーネントを使用することです。利用可能な良い解決策がたくさんあります。例:Syncfusion

+0

私はPDFをHTMLにしようとしましたが、いくつかの点で失敗し続け、テーブルタグの境界属性を認識しません。 –

関連する問題