ちょっと変わったマニアな作品が集結

画面上で「XLSX出力」と「印刷」というボタンがあります。
「XLSX出力」押すと、サーバ側PHPEXCELで動的にXLSXファイル作成し、ダウンロードダイアログ表示する。
「印刷」ボタン押すと、ダウンロードではなくて、直接に作成したExcelファイルをプリンタで印刷しようと思っています。

直接印刷、技術的には可能でしょうか?
実現できるようなものが見当たりませんので、今結構困ってます。
どうかご教授ください。よろしくお願い致します。

PS:PDFファイルじゃなくて、Excelファイルです!

A 回答 (1件)

どこに印刷するんですか?


そのサーバから直接印刷できるサーバに印刷するのでは意味ないのですよね?
よくあるWebサービスではいったんPDFとして出力しておいて、後はユーザに任せる方法が一般的かと思います。

会社内で直接LAN接続されているプリンターに印刷すればいいのであれば、
いくつか方法があるかとおもいますが。
    • good
    • 1
この回答へのお礼

ご回答ありがとうございます。

現状は直接印刷できるサーバに印刷すればいい。
ただし、既存はopenoffice.orgを使って実装しました。
今openoffice.orgをやめたいっていう話があるので、
別のライブラリを選定し実装しています。
残念ながら、自動印刷機能もできなくなった。
しかも印刷及び出力ものがXLSXにしてくださいって言われたので、
PDFを印刷するのがダメと思っています。

「会社内で直接LAN接続されているプリンターに印刷すればいいのであれば、
 いくつか方法があるかとおもいますが。」

こういう方法を教えていただけると立つかります。
教えていただけますか?

お礼日時:2017/06/15 16:27

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aと関連する良く見られている質問

QPHPでPDFファイルの直接印刷

HTML、PHP、JavascriptでWeb画面上から印刷枚数を指定し、Web画面上の「印刷」ボタンを押すと、直接、特定のファイルパスのPDFファイルを印刷できるようにしたいと思っています。
かなり検索したのですが、それを実現できるようなものが見当たりません。
どうかご教授ください。よろしくお願い致します。

Aベストアンサー

PXDocについて、
所詮はXMLなので、PHPで、SVGの記述にそったXMLを出力すればよいです。ブラウザ側には、pxd拡張子で投げるため、
PHPで、header指定のコードを記述する必要はありそうです。

header("Content-type: application/pxd");

PXDocのサイト(参考URL)にサンプルとリファレンスがあります。
.pdx という拡張子がありますが、単なるXMLファイル(テキストファイル)なので、メモ帳なり秀丸なりで開けば、ああなるほどとわかると思います。

複雑な帳票で、テンプレートを作り、部分的に動的な値を埋め込む場合は、テンプレートをExcelとかOpenOffice.orgで作ってSVG保存したものを使えばよいと思います。

※SVG(つまり実体はXML)はテキストファイルなので、
ユーザが内容を書き換えることが可能です。(書き換えようと思えばですが)

PDFのように、編集不可にする手段はないのでご注意ください。

参考URL:http://www.pxdoc.com/sample/index.htm

PXDocについて、
所詮はXMLなので、PHPで、SVGの記述にそったXMLを出力すればよいです。ブラウザ側には、pxd拡張子で投げるため、
PHPで、header指定のコードを記述する必要はありそうです。

header("Content-type: application/pxd");

PXDocのサイト(参考URL)にサンプルとリファレンスがあります。
.pdx という拡張子がありますが、単なるXMLファイル(テキストファイル)なので、メモ帳なり秀丸なりで開けば、ああなるほどとわかると思います。

複雑な帳票で、テンプレートを作り、部分的に動的な値...続きを読む

QPHP isset

PHPで、これは何をしているプログラムですか?

if(isset($_GET['a'])){

}

Aベストアンサー

test.php?a=xxx

のようにgetとしてパラメータaが設定されているかどうかをチェックしています。
パラメータaが設定されていない場合チェックしなまま$_GET['a']を参照すると
「設定されていない変数を参照してますよ」と注意喚起のメッセージがでます。

最近はデータの受け渡しの際はfilter_input()関数が使われるようになったので
$_GETや$_POSTをissetでチェックすることは少なくなっているような気もします

Qphpのエラーについて

Parse error: syntax error, unexpected...on line 34
上記のエラーが出てきます。

<?php
$items = simplexml_load_file('URL')->channel->item;
$url = (string)$items[0]->children('media', true)->thumbnail->attributes()->url;
<a href="<?php echo $items->link; ?>"><img src="<?php echo $url; ?>"></a> ?>

この
<a href="<?php echo $items->link; ?>"><img src="<?php echo $url; ?>"></a> ?>の箇所が34行目ですが、どこが間違っているか教えていただけませんか。
よろしくお願いします。

Aベストアンサー

<?php
$items = simplexml_load_file('URL')->channel->item;
$url = (string)$items[0]->children('media', true)->thumbnail->attributes()->url;
echo '<a href="'.$items->link.'"><img src="'.$url.'"></a>';
?>

のような書き方をしないとまずそうですね

Qphpでforeachの中にforeachがある場合の記述方法について

https://oshiete.goo.ne.jp/qa/9714215.html
で質問したのですが、疑問点を絞りましたので質問し直します。
例えば次の場合、
「echo "<br>";」よりも上の方が正しくて下は問題があることは分かります。
内側のforeachの前では外側のforeachの$keyになりますが、
内側のforeachの後では内側のforeachの$keyになってしまいます。
結果の0-A abc の後が0-Aではなく2-Cになってしまった所です。
ここまでは当然だと理解できるのですが、
内側のforeachの前に戻った時に外側のforeachの$keyに戻る仕組みが分かりません。
結果の2-Cの後が3-Dではなく1-Bに戻っている所です。
この理由について、どなたか、分かりやすく解説していただけないでしょうか。
よろしくお願いします。

<?php
$name = array("A","B","C","D");
$list = array("a","b","c");
foreach ($name as $key1 => $val1) {
echo $key1."-".$name[$key1]."<br>";
foreach ($list as $key2 => $val2) {
echo $list[$key2];
}
echo "<br>".$key1."-".$name[$key1]."<br>";
}
echo "<br>";
foreach ($name as $key => $val) {
echo $key."-".$name[$key]."<br>";
foreach ($list as $key => $val) {
echo $list[$key];
}
echo "<br>".$key."-".$name[$key]."<br>";
}
exit;
?>
結果:
0-A
abc
0-A
1-B
abc
1-B
2-C
abc
2-C
3-D
abc
3-D

0-A
abc
2-C
1-B
abc
2-C
2-C
abc
2-C
3-D
abc
2-C

https://oshiete.goo.ne.jp/qa/9714215.html
で質問したのですが、疑問点を絞りましたので質問し直します。
例えば次の場合、
「echo "<br>";」よりも上の方が正しくて下は問題があることは分かります。
内側のforeachの前では外側のforeachの$keyになりますが、
内側のforeachの後では内側のforeachの$keyになってしまいます。
結果の0-A abc の後が0-Aではなく2-Cになってしまった所です。
ここまでは当然だと理解できるのですが、
内側のforeachの前に戻った時に外側のforeachの$keyに戻る仕組みが分か...続きを読む

Aベストアンサー

> 結果の2-Cの後が3-Dではなく1-Bに戻っている

foreachで配列を走査するのにキーは使われていません。
配列は内部ポインタというものをもっていて、現時点のカレント位置を保持します
foreachによって次のポインタに移ったときに再度$keyが読み直されます

一方、forで回す場合は$iなど配列とは直接関係ないカウンタを使うため、
$iが上書きされてしまうと挙動がおかしくなります

Qテキストエディタでindex.htmlで保存、ブラウザ表示が?

JavaScriptを勉強中です。
テキストエディタでindex.htmlで保存し
ブラウザ表示をすると画像のようになりました。

何が原因でしょうか?

Aベストアンサー

パソコンで作業されていますか?
その場合、HTML中で文字コードを指定していて、それがShift-JIS以外になっていませんか?
つまりファイルの中身の文字コードはS-JISなのに、HTMLとしてはS-JIS以外の文字コードを指定しているので、ブラウザはHTMLでの指定を信じて表示しているので化け化けになると。。。

参考まで。

QPHP 画像の表示

プログラミング初心者です。
PHPでブラウザに画像を表示したいのですが映らなくて
以下のソースコードは間違っているでしょうか?

<?php
$fileName = "img/test.jpg"; //ファイル名

if (file_exists($fileName)) {
header('Content-type: image/jpeg');
header('Content-Length: '.filesize("http://localhost:8080/test.jpg")); //あった方が良い
readfile("http://localhost:8080/test.jpg"); //ファイルを読み込んで標準出力に書き出し
exit;
}
?>

Aベストアンサー

file_existsで所在確認しているのに
なんでfilesizeやreadfileでhttpベースに書き直しているのでしょうか?
filesize($fileName)やreadfile($fileName)で試してみて下さい

ちなみに、readfileはバイナリセーフではないので
基本的にはfopen、fread、fcloseの流れでデータを読んで出力してください

QPHP getimagesize();

プログラミング初心者です。
現在、PHPにてブラウザに画像の表示をしようとしているのですが
上手く行きません。ソースコードを張るのでダメなところがありましたら
手ほどきの程お願い致します。
ーーーーー
<?php
$fileName = "test.jpg"; //ファイル名

if (file_exists($fileName)) {
header('Content-type: image/jpeg');
header('Content-Length: '.filesize($fileName)); //あった方が良い
readfile($fileName); //ファイルを読み込んで標準出力に書き出し
★getimagesize(test.jpg);
exit;
}else{
echo "b";
}
?>
ーーーー

目的

- phpにてブラウザに画像の表示

状況

- 最初は★のある行はなしでやっていたが

画像が映るも、かなり小さかったので大きくしようと
★のある行を追加。

- 画像の小ささはスクリーンショットを参考

プログラミング初心者です。
現在、PHPにてブラウザに画像の表示をしようとしているのですが
上手く行きません。ソースコードを張るのでダメなところがありましたら
手ほどきの程お願い致します。
ーーーーー
<?php
$fileName = "test.jpg"; //ファイル名

if (file_exists($fileName)) {
header('Content-type: image/jpeg');
header('Content-Length: '.filesize($fileName)); //あった方が良い
readfile($fileName); //ファイルを読み込んで標準出力に書き出し
★getimagesize(test.jpg);
exit;
}...続きを読む

Aベストアンサー

ブラウザで「画像のみ表示」みたいなことをすると、その画像だけが表示されますよね?
今のプログラムはそれと同じことをやっている(=画像のみを表示している)状態です。
★ のようなことをしても影響ありません。(最悪、不正な画像データとなってしまって表示できなくなるかもしれません)


URL に 〜.jpg とやると、そのファイルがそのままアクセスできるように見えます。
ですが、実際には、サーバープログラム(Apache等)の中で、あなたのPHPスクリプトと同じような手順(ファイルの内容を読み込み、ヘッダを就けて送信)を行なっています。
ブラウザ側では、今どちらの方法で送られて来たデータかは区別できません。


この画像の表示を制御したいのなら、 HTMLの imgタグのSRCとしてこのスクリプトを指定するなどの工夫が必要です

Q正規表現での記述方法

正規表現で記述する時「(.*?)」もしくは「(.+?)」という記述を見ますが
「(.*)」や「(.+)」ではダメなのでしょうか?
「?」が付かなくても問題ないのではと思いますが、
「?」が付く場合と付かない場合との違いが判りません。
その問題点と、違いを教えてください。

Aベストアンサー

正規表現の構文
https://msdn.microsoft.com/ja-jp/library/cc392020.aspx

?:ほかの修飾子 (*, +, ?, {n}, {n,}, {n,m}) の直後に指定すると、一致パターンを制限することができます。
既定のパターンでは、できるだけ多数の文字列と一致するのに比べて、制限されたパターンでは、できるだけ少ない文字列と一致します。
たとえば、文字列 "oooo" に対して、'o+?' を指定すると 1 つの "o" と一致し、'o+' を指定するとすべての 'o' と一致します。

Qこれがどーゆープログラムなのかわかりません。 教えてください

これがどーゆープログラムなのかわかりません。
教えてください

Aベストアンサー

No.1さんの通りなので、私にベストアンサーは不要ですが、補足で。
書いてある通り素直に読めばいいだけでなんのトリッキーなアルゴリズムでもないですよ。

aが1~9の間以下を繰り返す。
bが1~9の間以下を繰り返す。
cにaとbの乗算結果を代入して出力する。
bが9まで繰り返したら1行改行する。
aが9まで繰り返したら処理結果0を設定してプログラムを終了する。

流れで言えば、
aが1で、bが1,2,3 ... 9と動いていくので、c=1*1 , c=1*2 , c=1*3 .... c=1*9の次
aが2で、bが1,2,3 ... 9と動いていくので、c=2*1 , c=2*2 ...

C言語を日本語にしただけですが、どのあたりで悩んでいるのか書いてくれれば違った回答があるかと。
それともC言語がわからないということでしょうか?
includeとかmainとかわかりますか?

Qこのプログラムを説明すにあたり!

私は頭が錆びないようにPHPプログラムを勉強しています。
以下のプログラムはPHP参考書の通りに入力しました。
 しかし!<?php~?>の順番を変えてもプログラムは動きます。
そこで、もしあなたが第三者に以下のプログラムの流れを説明しようとした場合
主観でもいいのですが、最初にどんなプログラムを持ってきますか?
 よろしくお願いします。
<!DOCTYPE html>
<html>
<head>
<title>P262 Sample8-4 コンストラクタとクラスの変数</title>
</head>
<body>

<?php

$pr1 = new Person("鈴木",56);
$pr2 = new Person("佐藤",38);
?>

<table border="2">
<tr bgcolor="#AAAAAA">
<th>名前</th>
<th>年齢</th>
</tr>

<?php

print "<tr><td>";
print $pr1->getname();
print "</td><td>";
print $pr1->getage();
print "</td></tr>";

print "<tr><td>";
print $pr2->getname();
print "</td><td>";
print $pr2->getage();
print "</td></tr>";

?>
</table>

<?php

print "<hr>";
print "合計人数:";
print Person::$count;

?>

<?php

class Person
{

public static $count = 0;

public function __construct($nm,$ag)

{
person::$count++;


$this->name = $nm;
if($ag>=20 && $ag<=60){
$this->age = $ag;
}
else
$this->age = -1;
}
public function getname(){return $this->name;}
public function getage(){return $this->age;}
}

?>

</body>
</html>

私は頭が錆びないようにPHPプログラムを勉強しています。
以下のプログラムはPHP参考書の通りに入力しました。
 しかし!<?php~?>の順番を変えてもプログラムは動きます。
そこで、もしあなたが第三者に以下のプログラムの流れを説明しようとした場合
主観でもいいのですが、最初にどんなプログラムを持ってきますか?
 よろしくお願いします。
<!DOCTYPE html>
<html>
<head>
<title>P262 Sample8-4 コンストラクタとクラスの変数</title>
</head>
<body>

<?php

$pr1 = new Person("鈴木",56);
$pr2 =...続きを読む

Aベストアンサー

できればクラスの宣言は上部にもっていくか、別ファイルにわけてincludeします
あとは表示部分はひとまとめにしたほうがいいでしょう

<?php
class Person
{
public static $count = 0;
public function __construct($nm,$ag){
person::$count++;
$this->name = $nm;
if($ag>=20 && $ag<=60){
$this->age = $ag;
}
else
$this->age = -1;
}
public function getname(){
return $this->name;
}
public function getage(){
return $this->age;
}
}


$pr1 = new Person("鈴木",56);
$pr2 = new Person("佐藤",38);


$table=<<<eof
<tr>
<td>{$pr1->getname()}</td>
<td>{$pr1->getage()}</td></tr>
<tr>
<td>{$pr2->getname()}</td>
<td>{$pr2->getage()}</td>
</tr>
eof;

$goukei=<<<eof
<hr>
合計人数:
eof;
$goukei.=Person::$count;

print <<<eof
<!DOCTYPE html>
<html>
<head>
<title>P262 Sample8-4 コンストラクタとクラスの変数</title>
</head>
<body>
<table border="2">
<tr bgcolor="#AAAAAA">
<th>名前</th>
<th>年齢</th>
</tr>
{$table}
</table>
{$goukei}
</body>
</html>
eof;
?>

できればクラスの宣言は上部にもっていくか、別ファイルにわけてincludeします
あとは表示部分はひとまとめにしたほうがいいでしょう

<?php
class Person
{
public static $count = 0;
public function __construct($nm,$ag){
person::$count++;
$this->name = $nm;
if($ag>=20 && $ag<=60){
$this->age = $ag;
}
else
$this->age = -1;
}
public function getname(){
return $this->name;
}
public function getage(){
return $this->age;
}
}


$pr1 = ...続きを読む


人気Q&Aランキング