質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Word

Microsoft WordはMicrosoftが開発した業務用の文書生成用のソフトウェアです。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

0回答

604閲覧

PHPWord load→writeするとレイアウトが崩れる

nnahito

総合スコア2004

Word

Microsoft WordはMicrosoftが開発した業務用の文書生成用のソフトウェアです。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

0グッド

2クリップ

投稿2018/03/08 02:35

編集2018/03/08 09:11

環境

  • PHP7系
  • Mac OS High Sierra
  • PHPWord 0.14.0(最新版)

PHPWordのインストールコマンドは以下を使用しました。

composer require phpoffice/phpword:dev-develop composer update

やりたいこと

docxをPHP上で編集し、吐き出したい。
レイアウトは極力崩したくない。

やったこと

ひとまず、下記コードを実行したところ、様々な条件下で出力形式が代わってしまう。


該当コード

php

1<?php 2 3// 必要モジュールの読み込み 4require_once 'vendor/autoload.php'; 5 6// 読み込むファイルのパス 7$source = __DIR__ . '/base.docx'; 8 9// DOCXファイルの読み込み 10$phpWord = \PhpOffice\PhpWord\IOFactory::load($source, 'Word2007'); # Word2007 11 12// 出力 13$phpWord->save('test_out.docx');

Case 1
正常出力される。
自作した、そこまで編集履歴のないdocxであれば、きれいに出力される。


Case 2
ややレイアウトが崩れる。
例えば、ネットに落ちているこのdocファイルを、Wordの最新版でDocxに変換し上記コードを実行したところ、
ややレイアウトが崩れて出力される。


Case 3

ぐっちゃぐちゃ。
見るに堪えない。

こんなのとか。

あと、以下のwarningが出力される。
……なんででしょう……orz

Warning: DOMElement::getAttribute() expects parameter 1 to be string, array given in /Users/USER_NAME/project/server/vendor/phpoffice /common/src/Common/XMLReader.php on line 140 PHP Warning: DOMElement::getAttribute() expects parameter 1 to be string, array given in /Users/USER_NAME/project/server/vendor/phpo ffice/common/src/Common/XMLReader.php on line 140

以上のところまで検証いたしました。
やはり、PHPで処理するには限界があるのでしょうか?
一応、編集したい対象のdocxは図などはなく基本文章のdocxファイルのみとなっております。

もし、この原因をご存じの方がいらっしゃいましたら、ご教示いただけますと幸いです。
よろしくお願いいたします。

進展その1

PhpOffice\PhpWord\Element\ListItemRunオブジェクトがあると、思いっきりデザインが崩れるようです。。。

進展その2

Case 3のグッチャグチャになるやつ、元のdocxファイルにtabがあると必ず起こるっぽいですね。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問