Åbne rtf fra php direkte til "moder"-programmet
Hej, jeg har spurgt om noget meget lig tidligere, men fik ikke rigtigt en brugbar løsning.Håber det har ændret sig siden... :-)
Jeg har følgende php-fil, der får nogle data fra en DB, og opretter en rtf-fil, indeholdende dat.
<?php
/* GENERATE ORDRE ELLER TILBUD ELLER KALKULATION */
//tjek først om brugerne har sagt nej eller ja til at overskrive filen
//Er der sagt nej, luk da vinduet uden at gøre andet
if($ja || $_GET['ny'] == "1"){
require('system/global_defs.php');
include('static/opsaetning.php');
include('static/afsnit1.php');
include('static/afsnit3.php');
include('static/afsnit5.php');
include('static/afsnit8.php');
include('static/afsnit9.php');
include('static/udskrift.php');
$sprog = $_GET['sprog'];
//Til tjek af filtypen, ordre, tilbud el. blanket
$diverse = $_GET['diverse'];
echo $sql = "SELECT ".$_GET['type'].", rev FROM ".$_GET['type']." WHERE id = '".$_GET['id']."'";
$res = mysql_query($sql) or die($sql);
list($nr, $rev) = mysql_fetch_row($res);
foreach ($OVERSAET as $val) {
$array = & $$val['felt'];
if (!is_array($array)) $array = array();
$array = & $array[];
$array['dansk'] = $val['dansk'];
$array[$sprog] = $val[$sprog];
}
function findValue($felt, $tekst) {
foreach ($felt as $val) {
if ( strtolower($val['dansk']) == strtolower($tekst) ) {//For at sikre det er lige meget om brugeren skriver betegnelserne med stort et sted og lille et andet sted
return $val[$_GET['sprog']];
}
}
}
$mappe1;
$mappe2;
if ($_GET['type'] == Tilbud || $_GET['type'] == tilbud) {//Tjekker hvilken type sagen er, tilbud/ordre
//$num = substr("$root", -6);
$mappe1 = substr($nr, -5, 1);
$mappe2 = substr($nr, -4, 1);
$ubermappe = substr($nr, -6, 2);
$slutmappe;
$startmappe = $mappe1 . $mappe2 . "000";
$mapper = $mappe1 . $mappe2;
if ($mapper > 9){
$startmappe = $mappe2 . "000";
} else {
$startmappe = $mapper . "000";
}
if ($mappe1 == 0){
$slutmappe = (($mappe2 +1) . "000") - 1;
$startmappe = $mappe2 . "000";
} else {
$slutmappe = ((($mappe1 . $mappe2)+1) . "000" -1);
}
if ($slutmappe<"1000"){
$mappenavn = $ubermappe . $startmappe ."-". $ubermappe . "0".$slutmappe;
} else {
if($slutmappe > 10000){
$mappenavn = $ubermappe . $startmappe ."-". substr($ubermappe, -2, 1) . $slutmappe;
} else {
$mappenavn = $ubermappe . $startmappe ."-". $ubermappe . $slutmappe;
}
}
//$mappenavn = $ubermappe . $startmappe ."-". $ubermappe . $slutmappe;
//$mappenavn = $startmappe ."-". $slutmappe;
$root = $type . "/". $mappenavn . "/" . $num;
} else {
$num = substr("$nr", -5);
$mappe1 = substr($num, -4, 2);
if ($mappe1 > 9) {
$mappe2 = $mappe1+1;
} else {
$mappe1 = substr($num, -3, 1);
$mappe2 = $mappe1 +1;
}
$ubermappe = substr($num, -6, 2);//retunere de 2 første cifre
if ($mappe1 > 9){
$mappe1 = substr($num, -3, 1);
$mappe1 = $mappe1 . "00";
} else {
$mappe1 = $mappe1 . "00";
}
//Laver slutmappen
$slutmappe1 = ((substr($num, -3, 1) + 1)."00") -1;
if ($slutmappe1 < 100) {
$slutmappe1 = "0". $slutmappe1;
}
$mappenavn = $ubermappe . $mappe1 . "-" . $ubermappe . $slutmappe1;
$root = $type . "/" . $mappenavn . "/";
}
//echo $slutmappe."<br>";
//echo $root."<br>";
// Filename
if (isset($_GET['print'])) {
$file = "//$SERVER/$KATALOG/".$_GET['type']."/".$nr."/".$_GET['type'].$_GET['print'].$nr."R".$rev."-".$sprog.".rtf";
} else {
//Oprindelig
//echo $file = "//$SERVER/$KATALOG/".$_GET['type']."/".$nr."/".$_GET['type'].$nr."R".$rev."-".$sprog.".rtf";
$file = "//$SERVER/$KATALOG/".$root.$nr."/".$_GET['type'].$nr."R".$rev."-".$sprog.".rtf";
}
$file;
// Fetch database values
$res = array();
for ($i=0;$i<=5;$i++) {
$sql = mysql_query("
SELECT *
FROM ".$_GET['type'].$i."
WHERE tilbudsnummer='".$_GET['id']."'
") or die(mysql_error);
if (mysql_num_rows($sql)) $res = array_merge($res, mysql_fetch_assoc($sql));
}
// Indlæs manglende værdier - nulstiller hvis behov
$res['rREV'] = $rev;
// Felt r3 - tilbudsnummer
$res['r3'] = $nr;
// r527 - ordrenummer
$res['r527'] = $nr;
// Felt rCVR
// Henter kundens cvrnr og betalingsbetingelser
$sql = mysql_query("SELECT betal, cvr FROM kunde WHERE id = '".$res['kunde_hidden']."'") or die(mysql_error);
if (mysql_num_rows($sql) == 1) list($res['r528'], $res['rCVR']) = mysql_fetch_row($sql);
else {
$res['r528'] = '';
$res['rCVR'] = '';
}
// Felt r1email
// Hent projektlederens emailadresse og direkte telefon
$sql = mysql_query("SELECT email, companyphone FROM stamdata WHERE employee = '".$res['r1']."'") or die(mysql_error);
if (mysql_num_rows($sql) == 1) list($res['r1email'], $res['r1tlf']) = mysql_fetch_row($sql);
// Felt r1
$res['r1'] = $PROJECTMANAGER[$res['r1']][navn];
$res['r1navn'] = substr($res['r1'], 0, strpos($res['r1'], '('));
$res['r1initialer'] = substr($res['r1'], strpos($res['r1'], '(')+1, 3);
// Felt r538
$res['r538'] = $TEGNER[$res['r538']][navn];
$res['r538navn'] = substr($res['r538'], 0, strpos($res['r538'], '('));
$res['r538initialer'] = substr($res['r538'], strpos($res['r538'], '(')+1, 3);
// Fetch template
echo $filnavn = 'template/template_'.$diverse.'_' . $sprog;
if (isset($_GET['print'])) $filnavn .= "_" . $_GET['print'];
echo $tempfile = file($filnavn . '.rtf');
foreach ($tempfile as $line) {
$template .= rtrim($line);
}
/*
GAMMEL TABEL METODE
$rows = explode("\\trowd", $template);
for ($i = 0; $i < count($rows); $i++) {
// Find det første felt i tabellen - feltet der angiver antal
$startpos = strpos($rows[$i], "\\{\\{") +4 ;
$checkpos = strpos($rows[$i], "cell ");
//if ($checkpos === false) $checkpos = strpos($rows[$i], "\\row");
if ($checkpos < $startpos) $startpos = 4;
$slutpos = strpos($rows[$i], "\\}\\}");
$felt = substr($rows[$i], $startpos, $slutpos-$startpos);
if ($startpos == 4 || (is_numeric($res[$felt]) && $res[$felt]!=0 ) || (is_string($res[$felt]) && strlen($res[$felt])>0)) $content .= $rows[$i] . "\\trowd";
}
$content = substr($content, 0, strlen($content)-6);
GAMMEL TABEL METODE SLUT
*/
$rows = explode("\\par ", $template);
for ($i = 0; $i < count($rows); $i++) {
// HACK - tilføjer et mellemrum grundet problemer med strpos
// når feltet er det første der forekommer i strengen
// Find det første felt i tabellen - feltet der angiver antal
$startpos = strpos(" " . $rows[$i], "\\{\\{");
$slutpos = strpos($rows[$i], "\\}\\}");
if ($startpos >= 1) {
$startpos += 3;
$felt = substr($rows[$i], $startpos, $slutpos-$startpos);
if (is_numeric($res[$felt]) && (int)$res[$felt]!=0) $content .= $rows[$i] . "\\par ";
else if (strlen($res[$felt]) > 0 && $res[$felt] != '0') {
echo $felt . " - " . $res[$felt] . " - " . strlen($res[$felt]) . "<br>";
$content .= $rows[$i] . "\\par ";
}
} else $content .= $rows[$i] . "\\par ";
}
// $content = substr($content, 0, strlen($content)-6);
// Oversættelse af checkboxe
// Felt r25
if ($res['r25'] == '1') $res['r25'] = $r25[0][$sprog];
else $res['r25'] = '';
// Felt r26
if ($res['r26'] == '1') $res['r26'] = $r26[0][$sprog];
else $res['r26'] = '';
// Felt r27
if ($res['r27'] == '1') $res['r27'] = $r27[0][$sprog];
else $res['r27'] = '';
// Felt r28
if ($res['r28'] == '1') $res['r28'] = $r28[0][$sprog];
else $res['r28'] = '';
// Felt r29
if ($res['r29'] == '1') $res['r29'] = $r29[0][$sprog];
else $res['r29'] = '';
// Felt r30
if ($res['r30'] == '1') $res['r30'] = $r30[0][$sprog];
else $res['r30'] = '';
// Felt r31
if ($res['r31'] == '1') $res['r31'] = $r31[0][$sprog];
else $res['r31'] = '';
// Felt r32 og r32a
if ($res['r32'] == '1') {
$res['r32'] = $r32[0][$sprog];
$res['r32a'] .= ' m';
}
else {
$res['r32'] = '';
$res['r32a'] = '';
}
// Felt r478a
if ($res['r478a'] == '1') $res['r478a'] = $r478a[0][$sprog];
else $res['r478a'] = '';
// Felt r478b
if ($res['r478b'] == '1') $res['r478b'] = $r478b[0][$sprog];
else $res['r478b'] = '';
// Felt r478c
if ($res['r478c'] == '1') $res['r478c'] = $r478c[0][$sprog];
else $res['r478c'] = '';
// Felt r478d
if ($res['r478d'] == '1') $res['r478d'] = $r478d[0][$sprog];
else $res['r478d'] = '';
// Felt r514a og r514
if ($res['r514a'] == '1') $res['r514a'] = $r514a[0][$sprog];
else {
$res['r514a'] = '';
$res['r514'] = '';
}
// Felt r515a og r515
if ($res['r515a'] == '1') $res['r515a'] = $r515a[0][$sprog];
else {
$res['r515a'] = '';
$res['r515'] = '';
}
// Felt r507a og r507
if ($res['r507a'] == '1') $res['r507a'] = $r507a[0][$sprog];
else {
$res['r507a'] = '';
$res['r507'] = '';
}
// Felt r508a og r508
if ($res['r508a'] == '1') $res['r508a'] = $r508a[0][$sprog];
else {
$res['r508a'] = '';
$res['r508'] = '';
}
// Felt r516a og r516
if ($res['r516a'] == '1') $res['r516a'] = $r516a[0][$sprog];
else {
$res['r516a'] = '';
$res['r516'] = '';
}
// Felt r517a og r517
if ($res['r517a'] == '1') $res['r517a'] = $r517a[0][$sprog];
else {
$res['r517a'] = '';
$res['r517'] = '';
}
// Felt r518a og r518
if ($res['r518a'] == '1') $res['r518a'] = $r518a[0][$sprog];
else {
$res['r518a'] = '';
$res['r518'] = '';
}
// Opslag af værdier for dropdown-bokse
// Felt r6
$res['r6'] = findValue($r6, $USAGE[$res['r6']]);
// Felt r45
$res['r45'] = findValue($r45, $NORM[$res['r45']]['norm']);
// Felt r46
$res['r46'] = str_replace(".", ",", $res['r46']);
$res['r46'] = findValue($r46, $res['r46']);
// Felt r49
$res['r49'] = findValue($r49, $res['r49']);
// Felt r65
$res['r65'] = findValue($r65, $TAGBEKLAD[$res['r65']]);
// Felt r72
$res['r72'] = findValue($r72, $FACADEGAVL[$res['r72']]);
// Felt r69
$res['r69'] = findValue($r69, $UNDERBEKLAD[$res['r69']]);
// Felt r53b
$res['r53b'] = findValue($r53b, $KORROSIONKLASSE[$res['r53b']]);
// Felt r54
$res['r54'] = findValue($r54, $FARVE[$res['r54']]);
// Felt r53
$res['r53'] = findValue($r53, $KORROSIONKLASSE[$res['r53']]);
// Felt r53a
$res['r53a'] = findValue($r53a, $KORROSIONKLASSE[$res['r53a']]);
// Felt r55
$res['r55'] = findValue($r55, $PRODUKTIONSMETODE[$res['r55']]);
// Snesæk felter
if ($res['r56v'] = 1) {//venstre
$res['r56v'] = $r56v[0][$sprog];
} else {
$res['r56v'] = '';
}
if ($res['r56h'] = 1) {//højre
$res['r56h'] = $r56h[0][$sprog];
} else {
$res['r56h'] = '';
}
if ($res['r56d'] = 1) {//begge
$res['r56d'] = $r56d[0][$sprog];
} else {
$res['r56d'] = '';
}
if ($res['r56e'] = 1) {//ingen
$res['r56e'] = $r56e[0][$sprog];
} else {
$res['r56e'] = '';
}
// Felt r57
if ($res['r57'] == 1) $res['r57'] = findValue($r57, 'Åben');
else if ($res['r57'] == 2) $res['r57'] = findValue($r57, 'Lukket');
else if ($res['r57'] == 3) $res['r57'] = findValue($r57, 'Delvis åben');
if ($res['r505a'] == 0) $res['r505a'] = findValue($r505a, 'DKK');
else if ($res['r505a'] == 1) $res['r505a'] = findValue($r505a, 'EUR');
else if ($res['r505a'] == 1) $res['r505a'] = findValue($r505a, 'USD');
else if ($res['r505a'] == 1) $res['r505a'] = findValue($r505a, 'NKR');
else if ($res['r505a'] == 1) $res['r505a'] = findValue($r505a, 'SKR');
// Nummerformat
$res['r504'] = number_format($res['r504'], 0, ',', '.');
$res['r514'] = number_format($res['r514'], 0, ',', '.');
$res['r515'] = number_format($res['r515'], 0, ',', '.');
$res['r507'] = number_format($res['r507'], 0, ',', '.');
$res['r508'] = number_format($res['r508'], 0, ',', '.');
$res['r516'] = number_format($res['r516'], 0, ',', '.');
$res['r517'] = number_format($res['r517'], 0, ',', '.');
$res['r518'] = number_format($res['r518'], 0, ',', '.');
$res['r519'] = number_format($res['r519'], 0, ',', '.');
$res['r506'] = number_format($res['r506'], 0, ',', '.');
$res['r520'] = number_format($res['r520'], 0, ',', '.');
$res['r521'] = number_format($res['r521'], 0, ',', '.');
$res['r512'] = number_format($res['r512'], 0, ',', '.');
$res['r513'] = number_format($res['r513'], 0, ',', '.');
$res['r522'] = number_format($res['r522'], 0, ',', '.');
$res['r523'] = number_format($res['r523'], 0, ',', '.');
$res['r524'] = number_format($res['r524'], 0, ',', '.');
$res['r525'] = number_format($res['r525'], 0, ',', '.');
$res['r48'] = number_format($res['r48'], 2, ',', '');
$res['r70'] = number_format($res['r70'], 2, ',', '');
// format
$res['r526'] = str_replace("\n", "\\par\n", $res['r526']);
// Create substitute array
reset($res);
$from = array();
$to = array();
while (list($key, $val) = each($res)) {
//if ($val == '') $val = ' ';
$from[] = '\{\{'.$key.'\}\}';
$to[] = $val;
}
$from[] = 'µ';
$to[] = "\'b5";
$output = str_replace($from, $to, $content);
if (file_exists($file)) {
unlink($file);
}
$fp = fopen($file, 'w');
fputs($fp, $output);
fclose($fp);
}
?>
<script language="JavaScript" type="text/javascript">
window.close();
opener.stifinder.location.reload(false);
</script>
Kan det på en eller anden måde lade sig gøre, at åbne rtf-filen direkte i Word, som det allersidste?
