Linux PHP kullanarak Word belgesi oluşturun

10 Cevap php

Nedir PHP için kullanılabilir çözümler linux ortamında word belgesi oluşturmak için?

10 Cevap

Genellikle olduğu gibi başlık ve çıkış HTML ekleyin.

header("Content-type: application/vnd.ms-word");
header("Content-Disposition: attachment;Filename=document_name.doc");

echo "<html>";
echo "<meta http-equiv=\"Content-Type\" content=\"text/html; charset=Windows-1252\">";
echo "<body>";
echo "<b>My first document</b>";
echo "</body>";
echo "</html>";

Harici stil kullanmayın emin olun. Her şey aynı dosya içinde olmalıdır.

Eğer "gerçek" Word belgeleri üretmek için gerekiyorsa bir Windows tabanlı web sunucusu ve COM otomasyon gerekiyor. Ben çok bu konuda Joel's article öneririz.

OpenOffice şablonları + OOo komut satırı arayüzü.

  1. Gibi, yer tutucular ile manuel bir ODT şablonu oluşturmak [% değer-to-yerine%]
  2. PHP gerçek veriler ile örnekleniminin zaman, (bir sıkıştırılmış XML bulunuyor) şablonu ODT'yi halletmek ve metinsel gerçek değerler ile tutucuların yerine XML karşı çalıştırın.
  3. ODT'yi geri Zip
  4. > DOC OpenOffice komut satırı arayüzü üzerinden - dönüşüm ODT'yi çalıştırın.

Araçları ve bu adımların her kolaylaştırmak için mevcut kütüphaneler vardır.

Yardımcı olur olabilir.

PHPWord docx biçiminde Word belgeleri oluşturabilir. . Aynı zamanda bir şablon olarak varolan docx dosyası kullanabilirsiniz - şablon değişkenleri biçimi $ {varName} belgeye eklenebilir

Bu bir LGPL lisansına sahip ve kodu ile gelen örnekler güzel benim için çalıştı.

Bu zamana kadar Linux üzerinde DOC dosyalarını oluşturmak için en kolay yolu, PHP kullanarak Zend Framework bileşeni phpLiveDocx ile.

Proje web sitesinden:

"PhpLiveDocx geliştiriciler bir kelime işlemci oluşturulan bir şablon, PHP ile yapılandırılmış veri birleştirerek belgeleri oluşturmak için olanak sağlar. Çıkan belgenin PDF, DOCX, DOC veya RTF dosyası olarak kaydedilebilir. Kavramı posta-birleştirme ile aynıdır . "

Bu indirmek ve kullanmak tamamen ücretsizdir. Daha fazla bilgi için, bir göz atın lütfen:

http://www.phplivedocx.org/articles/brief-introduction-to-phplivedocx/

Apache proje MS Office dosyaları oluşturmak için kullanılabilir POI adlı bir kütüphaneye sahiptir. Bu bir Java kütüphanesi ama avantajı hiçbir sorun ile Linux üzerinde çalışabilir olmasıdır. Bu kütüphane kendi sınırlamaları vardır ama sizin için iş yapabilir, ve muhtemelen Word'ü çalıştırmak için çalışırken daha kullanmak basittir.

Başka bir seçenek OpenOffice olurdu ama ben hiç kullanmadım çünkü ben tam olarak bunu tavsiye edemez.

Eğer gerçekten bir Word belgesi oluşturmak gerekiyorsa, o zaman senin en iyi bahis Microsoft Word aracılığıyla Word belgesi oluşturmak için COM kullanmak için muhtemelen. Bazı örnekler için http://www.programmershelp.co.uk/phpcreateword.php ve http://drewd.com/2007/01/25/reading-from-a-word-document-with-com-in-php bakınız.

Örneğin http://conort.googlepages.com/generate-word-from-php ve ve http://paggard.com/projects/rtf.generator/ - bkz Aksi takdirde benim tavsiyem RTF veya HTML belgeleri kullanmak olacaktır.

OpenTBS şablonları tekniği kullanarak PHP DOCX dinamik belgeler oluşturabilirsiniz.

No geçici dosyalar gerekli, hiçbir komut satırları, PHP bütün.

Bu resim ekleyebilir veya silebilirsiniz. Oluşturulan belge PHP HTML indir, sunucu üzerinde kaydedilmiş bir dosya, ya da ikili içeriği olarak imal edilebilir.

Ayrıca OpenDocument dosyaları birleştirme (ODT, ODS, ODF, ...)

http://www.tinybutstrong.com/tools.php

Ivan Krechetov cevabı takiben, burada ekstra bir kütüphaneye ihtiyaç duymadan docx ve ODT için adres mektup birleştirme (aslında sadece basit bir metin yerine), yaptığı bir fonksiyonudur.

function mailMerge($templateFile, $newFile, $row)
{
  if (!copy($templateFile, $newFile))  // make a duplicate so we dont overwrite the template
    return false; // could not duplicate template
  $zip = new ZipArchive();
  if ($zip->open($newFile, ZIPARCHIVE::CHECKCONS) !== TRUE)
    return false; // probably not a docx file
  $file = substr($templateFile, -4) == '.odt' ? 'content.xml' : 'word/document.xml';
  $data = $zip->getFromName($file);
  foreach ($row as $key => $value)
    $data = str_replace($key, $value, $data);
  $zip->deleteName($file);
  $zip->addFromString($file, $data);
  $zip->close();
  return true;
}

This will replace [Person Name] with Mina and [Person Last Name] with Mooo:

$replacements = array('[Person Name]' => 'Mina', '[Person Last Name]' => 'Mooo');
$newFile = tempnam_sfx(sys_get_temp_dir(), '.dat');
$templateName = 'personinfo.docx';
if (mailMerge($templateName, $newFile, $replacements))
{
  header('Content-type: application/msword');
  header('Content-Disposition: attachment; filename=' . $templateName);
  header('Accept-Ranges: bytes');
  header('Content-Length: '. filesize($file));
  readfile($newFile);
  unlink($newFile);
}

Bu fonksiyon belge yerine dize çok genel bozuk eğer dikkat edin. [Kişi Adı] gibi ayrıntılı yedek dizeleri kullanmaya çalışın.

Kaliteli kelime belgeler oluşturmak için 2 seçenek vardır. Kelime (bu en azından bir pencere php sunucusu gerektirir) ile iletişim kurmak için COM kullanın. Openoffice kullanın ve word formatında belgeleri oluşturmak ve kaydetmek için API bulunuyor.

PHP, COM belgeleri bir göz atın (yorum yararlı) http://us3.php.net/com