PXDocに印刷データを渡す方法

PHPで作るとこのようになります。

HTML側

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
<!DOCTYPE html>
<html lang="ja">
<head>
  <meta http-equiv="content-type" content="text/html;charset=utf-8">
  <title>PxDOc印刷</title>
</head>
<body>
  <form name="inform" id="inform" method="post">
      <!---   色々な処理
 
 
 
 
 
 
       ---> 
      <button type="button" onClick="go('print')">印刷開始</button>
  </form>
  <script type="text/javascript" src="./js/pxd3.js"></script>
  <script type="text/javascript">
    function go(n) {
      pxd.printout('test_print_1.php?m=print_go');
    }
  </script>
</body>
 
</html>

PHP側

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
<?php
 
date_default_timezone_set('Asia/Tokyo');
 
 
//-----データ入力---
function disp(){
 
   require_once("test_print_1.html");
   return;
}
//----印刷発行----
function prin(){
 
   $dm="はだしの少女は髪に紅い野薔薇を挿し夕日の坂を降りて来る。";
   //--A4横--
   $a='<?xml version="1.0" encoding="UTF-8" ?>
         <pxd paper-type="A4" orientation="landscape" title="A4横" auto-print="false" xmlns:xlink="http://www.w3.org/1999/xlink" name="Pxd">
            <page>
               <svg x="0" y="0" width="297mm" height="210mm" viewBox="0 0 2970 2100">
                  <text x="100" y="100" font-size="80" text-anchor="top" >'.$dm.'</text>
               </svg>
            </page>
         </pxd>';
   print $a;
 
   return;
 
}
//----MAIN----
$mode=$_GET['m'];
switch($mode):
  case 'print_go':  //  印刷
    prin();
      break;
  default:
      disp();
    break;
  endswitch;
?>

印刷を発行後すぐに発行したHTMLから移動しない事が大事です。

PHPからコントロールする事もできます。PHP側で処理を行い、印刷を起動させます。
onloadでPHPの変数をチェックして$goが「print_go」なら印刷の実行例です。onloadイベント後はそのままHTMLの動作です。1つのPHPと1つのHTMLの組み合わせで入力から印刷のコントロールまで出来ます。

(当サイトでは下記の例も含めて外部変数はかなりチェックしていますのでここの掲載は参考例です。)

1
2
3
4
5
6
7
8
<script type="text/javascript">
    window.onload = function(){  
   let go = "<?php print $go; ?>";
       if (go == "print_go") {
         pxd.printout('test_print_1.php?m=print_go');
       }
    }
</script>