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."}';
}
?>