6

大量の HTML ファイル (約 30) を PDF に変換する必要があります。TOC とリンク ページを作成できれば最高ですが、今は個々のファイルを変換するだけで十分です :)

私はすでにいくつかのソリューションを試しましたが、最も成功したのは EO.PDF でしたが、すべてのページに厄介な透かしが入り、数メガを超えるファイルを処理できず、私のいくつかは 10メガ以上です。

私は wkhtmltopdf について多くの良いことを読み、そのラッパーである WkHTMLToSharp を見つけました。ドキュメントが見つからないので、例外をスローしている次のコードをまとめました。これを解決するための助けをいただければ幸いです。

例外の原因となっている行に注目しました。(非常に役に立たない)例外は次のとおりです。

"The type initializer for 'WkHtmlToXSharp.WkHtmlToPdfConverter' threw an exception."

- コード -

/// <summary>
/// Creates a PDF file from the HTML file passed in
/// </summary>
/// <param name="cFile">Full path to HTML file to generate PDF from</param>
/// <param name="pdfFile">Full path of PDF output file</param>
public static void WritePDF(string cFile, string pdfFile)
{
    // Generates "The type initializer for 
    // 'WkHtmlToXSharp.WkHtmlToPdfConverter' threw an exception.":
    WkHtmlToPdfConverter w = new WkHtmlToPdfConverter();  

    byte[] strHTML = w.Convert(cFile);
    File.WriteAllBytes(pdfFile, strHTML);
    w.Dispose();
}

欠落している DLL の問題を解決した後、コードの一部が実際にはファイルではなく HTML の文字列を変換することを発見しました。私はそれで作業できますが、 HTMLファイルで作業することを大いに好みます。

さらに、PDF ファイルに表示される画像はありません。それらはすべて JPG です (GIF に問題があることはわかっています)。

4

2 に答える 2

1

別の提案を追加したいと思います: WkHtmlToXSharp を使用しないでください。むしろ、wkhtmltopdf をインストールして直接使用してください。私の意見では、c#.net での生成プロセスは非常に単純であり、実行可能な代替手段です。

私はその方法を使用し、他の人に勧めて成功しました。以前の回答を参照してください。そこで使用した例はまだ良い例だと思うので、繰り返します。

var pi = new ProcessStartInfo(@"c:\wkhtmltopdf\wkhtmltopdf.exe");
pi.CreateNoWindow = true;
pi.UseShellExecute = false;
pi.WorkingDirectory = @"c:\wkhtmltopdf\";
pi.Arguments = "http://www.google.com gogl.pdf";

using (var process = Process.Start(pi))
{
    process.WaitForExit(99999);
    Debug.WriteLine(process.ExitCode);
}
于 2012-12-18T13:43:13.650 に答える