2

HTMLからPDFを生成するために使用されるスクリプトをphpで作成しました。基本的に、それは html 文字列を取得し、.html ファイルとして保存し、最後に phantomjs でページをレンダリングし、pdf を imagemagick で 1 つのファイルに結合します。今、私は企業の人々のためにそれを機能させる必要があります。つまり、これを C# に書き直して、MS サーバーで実行できるようにする必要があります。私はC#プログラミングを行ったことも、.net、aspなどを使用したこともないので、どこからどのように始めるかについていくつかのリソースが必要です。サーバーとして何を使用する必要があるか、そのセットアップ方法、および Web 用に C# でコーディングする方法。

これは私のphpスクリプトです:

<?php
    function curPageURL() {
        $pageURL = 'http';
        if (isset($_SERVER["HTTPS"]) && $_SERVER["HTTPS"] == "on") {$pageURL .= "s";}
            $pageURL .= "://";
        if ($_SERVER["SERVER_PORT"] != "80") {
            $pageURL .= $_SERVER["SERVER_NAME"].":".$_SERVER["SERVER_PORT"].$_SERVER["REQUEST_URI"];
        } else {
            $pageURL .= $_SERVER["SERVER_NAME"].$_SERVER["REQUEST_URI"];
        }
        return $pageURL;
    }

    $currentURL  = curPageURL();
    $break       = explode('/', $currentURL);
    $currentURL  = str_replace($break[count($break) - 1], '', $currentURL); 

    $cmd         = '';
    $phantomOut  = array();
    //name of the created single PDF file
    $out         = '-exported'.microtime().'.';
    //path were temporary pdf files will be created
    $outputPath  = dirname(__FILE__);
    //command to run phantomjs in console/terminal
    $phantomPath = 'phantomjs';

    if(isset($_POST['html'])){
        $html        = json_decode($_POST['html'], true);
        $out         = $range.$out.'pdf';        
        $l           = 0;        

        $myFile = $outputPath."/printHtml".microtime().".html";
        $fh     = fopen($myFile, 'w');

        //check if file is writable
        if(is_writable($myFile)){
            fwrite($fh, $html[$i]['html']);
            fclose($fh);
            $myFile = str_replace($outputPath.'/', '', $myFile);
        } else {
            echo '{"success": false, "msg": "Can\'t create or read file."}';
            return 0;
        }

        //check if phantomjs is installed and reachable
        exec($phantomPath.' -v', $phantomOut);
        if (empty($phantomOut)){
            echo '{"success": false, "msg": "PhantomJS not installed or not reachable."}';
            return 0;
        }

        $phantomOut = array();

        //run PhantomJs with parameters : temporary html filenames sent, format of the page and page orientation
        $command = $phantomPath.' '.$outputPath.'/render.js "'.$myFile.'" "'.$currentURL.'"';

        exec($command, $phantomOut);

        //delete temp html file
        unlink($myFile[$i]);

        if (file_exists($phantomOut[0]) && filesize($phantomOut[0]) > 0){
            //return url of the created file
            echo '{"success": true, "path": "'.$outputPath.'/'.$phantomOut[0].'"}';            
        } else {
            echo '{"success": false, "msg": "There was some problem creating the file"}';
        }
    } else {
        echo '{"success": false, "msg": "Error in request data."}'; 
    }
?>
4

1 に答える 1

1

.NET には、目的を達成するためのオプションがたくさんあります。

.NET の経験がまったくない場合は、チュートリアルを開始することをお勧めします。C# .NET で Web アプリケーションを開発するのは非常に簡単です。ASP.NET C#チュートリアルをグーグルで検索してください。.NET で最初の Web アプリケーションを作成し、ライブラリを使用して HTML を PDF に変換したい場合は、この投稿を確認すると、いくつかのオプションが見つかります。

さらに支援するために、最初に Visual Studio の無料バージョンをまだインストールしていない場合はダウンロードすることをお勧めします。Visual Studio は完全な IDE であり、独自の Web サーバーが付属しているため、開発中にサーバーは必要ありません。そのため、コードを記述する場合は、[実行] ボタンをクリックするだけで実行されます。

最後に、アプリケーションを開発したら、Mono Projectを使用して Linux サーバーに公開できますが、これはお勧めしません。または、Windows サーバー (使用しているバージョンに関係なく) にインストールすることもできます。Microsoft の Web サーバーは IIS と呼ばれます。したがって、Apache の代わりに IIS を使用し、構成も非常に簡単です。

これがお役に立てば幸いです

于 2012-12-18T12:51:56.707 に答える