2015-10-12 23 views
8

Tôi đang tạo .docx tệp từ mẫu sử dụng PHPWord. Nó hoạt động tốt nhưng bây giờ tôi muốn chuyển đổi các tập tin được tạo ra để PDF.Tạo PDF từ .docx được tạo bởi PHPWord

Trước tiên tôi cố gắng sử dụng tcpdf kết hợp với PHPWord

$wordPdf = \PhpOffice\PhpWord\IOFactory::load($filename.".docx"); 

\PhpOffice\PhpWord\Settings::setPdfRendererPath(dirname(__FILE__)."/../../Office/tcpdf"); 
\PhpOffice\PhpWord\Settings::setPdfRendererName('TCPDF'); 

$pdfWriter = \PhpOffice\PhpWord\IOFactory::createWriter($wordPdf , 'PDF'); 
if (file_exists($filename.".pdf")) unlink($filename.".pdf"); 
$pdfWriter->save($filename.".pdf"); 

nhưng khi tôi cố gắng để tải các tập tin để chuyển nó sang PDF tôi nhận được ngoại lệ sau khi tải file

Fatal error: Uncaught exception 'BadMethodCallException' with message 'Cannot add PreserveText in Section.'

Sau một số nghiên cứu tôi thấy rằng một số người khác cũng có lỗi này (phpWord - Cannot add PreserveText in Section)

EDIT

After trying around some more I found out, that the Exception only occurs when I have some mail merge fields in my document. Once I removed them the Exception does not come up anymore, but the converted PDF files look horrible. All style information are gone and I can't use the result, so the need for an alternative stays.



Tôi nghĩ về việc sử dụng một cách khác để tạo ra PDF, nhưng tôi chỉ có thể tìm thấy 4 cách:

  1. Sử dụng OpenOffice - Impossible vì tôi không thể cài đặt bất kỳ phần mềm nào trên Máy chủ. Cũng đi theo cách nêu here không làm việc, hoặc như hoster của tôi (Strato) sử dụng hệ điều hành SunOS như hệ điều hành và điều này cần Linux
  2. Sử dụng phpdocx - Tôi không có bất kỳ ngân sách để trả tiền cho nó và bản demo không thể tạo PDF
  3. Sử dụng PHPLiveDocx - công trình này, nhưng có giới hạn của 250 tài liệu mỗi ngày và 20 mỗi giờ và tôi phải chuyển đổi arround 300 tài liệu cùng một lúc, thậm chí có thể nhiều lần một ngày
  4. Sử dụng PHP-Digital-Format-Convert - sản lượng trông đẹp hơn với PHPWordtcpdf, nhưng vẫn không thể sử dụng làm hình ảnh bị thiếu và hầu hết (không phải tất cả!) Của kiểu

Có cách nào để tạo PDF không? Hay có giải pháp nào để làm cho các tài liệu PDF được tạo ra trông đẹp mắt?

+2

đầu ra PDF Decent có thể sẽ yêu cầu bạn tạo một mẫu thứ hai (bạn đã có một mẫu MSWord, tiếp theo bạn sẽ muốn có một mẫu PDF lấy tài liệu nguồn của bạn để đầu vào mà tcpdf muốn). –

+0

@Rob_M Vâng tôi đã nghĩ đến việc tạo một mẫu HTML vì có một số thư viện để chuyển đổi HTML sang PDF, nhưng tôi có khá nhiều mẫu khác nhau, vì vậy sẽ khá nhiều công việc để tạo và viết lại cách tôi điền với nội dung, vì vậy tôi hy vọng có một cách khác dễ dàng hơn ... – Pinguin895

+0

Liên kết này có thể giúp: https://github.com/PHPOffice/PHPWord/issues/311 –

Trả lời

0

Tôi không nghĩ rằng tôi là đúng .. Bạn lưu tài liệu như nội dung HTML

$objWriter = \PhpOffice\PhpWord\IOFactory::createWriter($phpWord, 'HTML');

Sau hơn bạn đọc nội dung tập tin HTML và viết nội dung như tập tin PDF với sự giúp đỡ của mPDF hoặc tcPdf hoặc fpdf.

0

tôi đã sử dụng Gears/pdf để chuyển đổi file docx tạo ra bởi phpword sang PDF:

$success = Gears\Pdf::convert(
      'file_path/file_name.docx', 
      'file_path/file_name.pdf'); 
Các vấn đề liên quan