2009-04-03 15 views
3

iTextSharpを使用してHTMLをPDFに変換していますが、絶対配置された要素では機能しないようです。たとえば、私はこのHTMLファイルを持っています:iTextSharpでHTMLをPDFに変換する際の絶対位置

<html> 
<body> 
    <p style="position: absolute; left: 10px; top: 100px; width: 50px;">Hello World</p> 
</body> 
</html> 

テキストが結果のPDFファイルに正しく配置されていません。 HTMLをPDFに変換する際に要素を配置することが可能かどうかを知っていますか?これを可能にする任意の無料のソリューション(iTextSharpまたはその他)があれば幸いです。

ここで私はiTextSharpで変換を実行するために使用していたコードです:PDF変換機能にiTextSharpのHTMLは非常にいくつかに限定されているようだ、さらなる調査の後

class Program 
{ 
    static void Main(string[] args) 
    { 
     Document document = new Document(PageSize.A4); 
     using (Stream output = new FileStream("out.pdf", FileMode.Create, FileAccess.Write, FileShare.None)) 
     using (Stream htmlStream = new FileStream("input.htm", FileMode.Open, FileAccess.Read, FileShare.Read)) 
     using (XmlTextReader reader = new XmlTextReader(htmlStream)) 
     { 
      PdfWriter.GetInstance(document, output); 
      HtmlParser.Parse(document, reader); 
     } 
     Process.Start(@"C:\Program Files\Adobe\Reader 9.0\Reader\AcroRd32.exe", "out.pdf"); 
    } 
}   

EDITシンプルなHTML文書。複雑なHTML文書を扱う素晴らしいJavaプロジェクトFlying Saucerがあります。だから私はIKVMとそれを使用しようとし、それは非常にうまくいった。唯一の問題は、何とか汚い解決策を感じることです。 HTMLをPDFに変換するための31MBのアセンブリコードを追加することはかなりのようです。このシナリオを処理するためのより良い "自由な"代替案がありますか?

答えて

2

。それは私のニーズに完全に適合し、多くの機能を持ち、HTMLファイルを正しくレンダリングすることができました。

現時点では、ジャバーをIKVMの.NETアセンブリに変換するだけのJavaバージョンしかありません。

+0

これは私が現時点で直面している問題の解決策のようです。 JARがIKVMを使用してDLL変換するのがどれほど難しく、何か問題が出てきましたか? – TonE

+0

JARからDLLへの変換は、コマンドラインでikvmc.exeを使用するだけです。私はどんな問題にも直面しておらず、このコンポーネントが1回の失敗なしに本番環境で動作するのは2ヶ月以上です。 –

+0

ありがとう、私はこれを試してみましょう! – TonE

0

Windowsの場合、Internet ExplorerのレンダリングエンジンでHTMLをPDFにレンダリングするには、COMまたはコマンドラインから無料のPDFCreatorを自動化する方法はありますか?

Cでオートメーションの例がたくさんあります。PDFCreatorをがインストールされている場合、\プログラムファイル\のPDFCreator \ COM \フォルダには、私は最終的にxhtmlrendererを使用することにしました

0

バイナリ配布のJARでikvmcを使用すると、できなかったクラスから多くの警告が表示されました。フライングソーサーは、Javaオブジェクトをターゲットにしているという事実に対処するためのiKVMコアライブラリを含めた後、私は次の例外に走った:

`Cannot load AWT toolkit: ikvm.awt.NetToolkit, IKVM.AWT.WinForms, Version=0.40.0.1, Culture=neutral, PublicKeyToken=13235d27fcbfff58` 

、それはただの実行からだった:

`ITextRenderer toRender = new ITextRenderer();` 

ように思われますフライングソーサーが使用する主なオブジェクトです。あなたはどのようにそれを使用するためのいくつかのソースを提供できますか?

+0

IKVM.AWT.WinForms.dllを参照してbin \ Releaseフォルダにコピーしましたか? –