0

html ファイルを印刷するときに問題が発生し、doc、xls、および txt ファイルを試してみましたが、それらは完全に機能しますが、html ファイルを指定すると、印刷ダイアログが表示され、動作するためにゴーストスクリプト プリンターを選択する必要があります。

私のコードは次のとおりです。

    [DllImport("Winspool.drv")]
    private static extern bool SetDefaultPrinter(string printerName);

    [ValidateInput(false)]
    public ActionResult CreatePdf(string file , string html)
    {
        SetDefaultPrinter("Ghostscript");
        Process process1 = new Process();
        if (html != null && html != "")
        { process1.StartInfo.FileName = "example.html"; }
        else
        { process1.StartInfo.FileName = file; }
        process1.EnableRaisingEvents = true;
        process1.StartInfo.Verb = "print";
        process1.StartInfo.Arguments = "\"Ghostscript PDF\"";
        process1.StartInfo.WorkingDirectory = Server.MapPath("~" + "/Export");
        process1.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
        process1.StartInfo.CreateNoWindow = true;
        process1.Start();
        try
        {
            process1.WaitForExit();
        }
        catch (InvalidOperationException) { }
        process1.Dispose();
    }

これにより、output.psファイルが変更され、pdfファイルを作成するために使用されます。これは完全に機能し、htmlファイルでこれを機能させる必要があります。

私はこの2つの例に従いました:

例 1 例 2

編集:html から pdf ファイルを取得するためにこの変換が必要で、wkhtmltopdf が最適であることがわかりました。

4

1 に答える 1

1

Ghostscriptは、HTMLドキュメントをPDFまたはPostScriptに変換(レイアウトおよびレンダリング)しません。これは、PostScriptおよびPDFファイルを最初から作成したり、PostScriptファイルをラスター形式に変換したりするためのライブラリです。

HTMLをPDFに変換する場合は、PrinceXMLなどの商用ライブラリを使用するか、WebKitをホストするのが最善の策です。

コードが機能すると、Internet Explorer(またはシェルのデフォルトのWebブラウザー)にレンダリングと印刷を実行させることで機能します。この手法は、サーバー側の環境では確実に機能しません。

于 2012-11-15T11:11:16.640 に答える