PHPackages                             tiitoo/wordbundle - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [File &amp; Storage](/categories/file-storage)
4. /
5. tiitoo/wordbundle

ActiveSymfony-bundle[File &amp; Storage](/categories/file-storage)

tiitoo/wordbundle
=================

This is a Symfony2 Bundle helps you to read and write Word files, thanks to the PHPWord library

067PHP

Since Aug 5Pushed 6y ago1 watchersCompare

[ Source](https://github.com/TiiToo/WordBundleSF23)[ Packagist](https://packagist.org/packages/tiitoo/wordbundle)[ RSS](/packages/tiitoo-wordbundle/feed)WikiDiscussions master Synced 3d ago

READMEChangelogDependenciesVersions (1)Used By (0)

Symfony2 Word bundle
====================

[](#symfony2-word-bundle)

This bundle permits you to create, modify and read word objects.

License
-------

[](#license)

[![License](https://camo.githubusercontent.com/355ef41136ce991e2d980ebf52f04ee73589c7a9f2f7d1d311c7cac75f75a025/68747470733a2f2f706f7365722e707567782e6f72672f6c69756767696f2f457863656c42756e646c652f6c6963656e73652e706e67)](LICENSE)

Installation
------------

[](#installation)

**1** Add this to your composer.json

```
    "minimum-stability": "dev",
    "prefer-stable": true,
```

**2** Add to composer.json to the `require` key

```
    $composer require ggggino/wordbundle
```

**3** Register the bundle in `app/AppKernel.php`

```
    $bundles = array(
        // ...
        new GGGGino\WordBundle\GGGGinoWordBundle(),
    );
```

Get started
-----------

[](#get-started)

- Create an empty object:

```
$phpWordObject = $this->get('phpword')->createPHPWordObject();
```

- Create an object from a file:

```
$phpWordObject = $this->get('phpword')->createPHPWordObject('file.docx');
```

- Create a Word and write to a file given the object:

```
$writer = $this->get('phpword')->createWriter($phpWordObject, 'Word2007');
$writer->save('file.xls');
```

- Create a Word and create a StreamedResponse:

```
$writer = $this->get('phpword')->createWriter($phpWordObject, 'Word2007');
$response = $this->get('phpword')->createStreamedResponse($writer);
```

Not Only 'Word2007'
-------------------

[](#not-only-word2007)

The list of the types are:

1. 'Word2007'
2. 'ODText'
3. 'HTML'
4. 'PDF'
5. 'RTF'

Example
-------

[](#example)

### Fake Controller

[](#fake-controller)

The best place to start is the fake Controller at `Tests/app/Controller/FakeController.php`, that is a working example.

### More example

[](#more-example)

You could find a lot of examples in the official PHPWord repository

### Create a new doc

[](#create-a-new-doc)

```
namespace YOURNAME\YOURBUNDLE\Controller;

use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Symfony\Component\HttpFoundation\ResponseHeaderBag;

class DefaultController extends Controller
{

    public function indexAction($name)
    {
        // ask the service for a Word2007
        $phpWordObject = $this->get('phpword')->createPHPWordObject();

        // Create a new Page
        $section = $phpWordObject->addSection();

        // Adding Text element to the Section having font styled by default...
        $section->addText(
            '"Learn from yesterday, live for today, hope for tomorrow. '
                . 'The important thing is not to stop questioning." '
                . '(Albert Einstein)'
        );

        // create the writer
        $writer = $this->get('phpword')->createWriter($phpWordObject, 'Word2007');
        // create the response
        $response = $this->get('phpword')->createStreamedResponse($writer);
        // adding headers
        $dispositionHeader = $response->headers->makeDisposition(
            ResponseHeaderBag::DISPOSITION_ATTACHMENT,
            'stream-file.doc'
        );
        $response->headers->set('Content-Type', 'application/msword');
        $response->headers->set('Pragma', 'public');
        $response->headers->set('Cache-Control', 'maxage=1');
        $response->headers->set('Content-Disposition', $dispositionHeader);

        return $response;
    }
}
```

### Edit a doc

[](#edit-a-doc)

In the template file(docx) variable should be declared as ${var1}, so in the template you can change "var1" value in this way:

```
$phpTemplateObject->setValue('var1', 'testValue');
```

Complete example

```
namespace YOURNAME\YOURBUNDLE\Controller;

use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Symfony\Component\HttpFoundation\ResponseHeaderBag;

class DefaultController extends Controller
{

    public function indexAction($name)
    {
      $fileName = ".../../test.docx";

        // ask the service for a Word2007
        $phpTemplateObject = $this->get('phpword')->createTemplateObject($fileName);

        $phpTemplateObject->setValue('test', 'testValue');

        $phpWordObject = $this->get('phpword')->getPhpWordObjFromTemplate($phpTemplateObject);

        // create the writer
        $writer = $this->get('phpword')->createWriter($phpWordObject, 'Word2007');
        // create the response
        $response = $this->get('phpword')->createStreamedResponse($writer);
        // adding headers
        $dispositionHeader = $response->headers->makeDisposition(
            ResponseHeaderBag::DISPOSITION_ATTACHMENT,
            'stream-file.docx'
        );
        $response->headers->set('Content-Type', 'application/msword');
        $response->headers->set('Pragma', 'public');
        $response->headers->set('Cache-Control', 'maxage=1');
        $response->headers->set('Content-Disposition', $dispositionHeader);

        return $response;
    }
}
```

Contribute
----------

[](#contribute)

1. fork the project
2. clone the repo
3. submit a PullRequest

###  Health Score

19

—

LowBetter than 10% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity8

Limited adoption so far

Community7

Small or concentrated contributor base

Maturity36

Early-stage or recently created project

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

### Community

Maintainers

![](https://avatars.githubusercontent.com/u/4389101?v=4)[TiiToo](/maintainers/TiiToo)[@TiiToo](https://github.com/TiiToo)

---

Top Contributors

[![TiiToo](https://avatars.githubusercontent.com/u/4389101?v=4)](https://github.com/TiiToo "TiiToo (5 commits)")

### Embed Badge

![Health badge](/badges/tiitoo-wordbundle/health.svg)

```
[![Health](https://phpackages.com/badges/tiitoo-wordbundle/health.svg)](https://phpackages.com/packages/tiitoo-wordbundle)
```

###  Alternatives

[knplabs/gaufrette

PHP library that provides a filesystem abstraction layer

2.5k39.8M123](/packages/knplabs-gaufrette)[google/cloud-storage

Cloud Storage Client for PHP

34390.8M125](/packages/google-cloud-storage)[illuminate/filesystem

The Illuminate Filesystem package.

15261.6M2.6k](/packages/illuminate-filesystem)[superbalist/flysystem-google-storage

Flysystem adapter for Google Cloud Storage

26320.6M30](/packages/superbalist-flysystem-google-storage)[creocoder/yii2-flysystem

The flysystem extension for the Yii framework

2931.7M62](/packages/creocoder-yii2-flysystem)[flowjs/flow-php-server

PHP library for handling chunk uploads. Works with flow.js html5 file uploads.

2451.6M15](/packages/flowjs-flow-php-server)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
