онлайн - php word to pdf



Преобразование Word doc, docx и Excel xls, xlsx в PDF с PHP (7)

Я ищу способ конвертировать файлы Word и Excel в PDF с помощью PHP.

Причина этого заключается в том, что мне нужно объединить файлы разных форматов в один документ. Я знаю, что если я смогу преобразовать все в PDF, я могу объединить PDF-файлы в один файл с помощью PDFMerger (который использует fpdf).

Я уже могу создавать PDF-файлы из других типов файлов / изображений, но я застрял в Word Docs. (Я думаю, что, возможно, я смогу преобразовать файлы Excel с помощью библиотеки PHPExcel, которую я уже использую для создания файлов Excel из html-кода).

Я не использую Zend Framework, поэтому я надеюсь, что кто-то сможет указать мне в правильном направлении.

В качестве альтернативы, если есть способ создать файлы изображений (jpg) из документов Word, это будет работоспособным.

Спасибо за любую помощь!

https://ffff65535.com


1) Я использую WAMP.

2) Я установил Open Office (из apache http://www.openoffice.org/download/ ).

3) $output_dir = "C:/wamp/www/projectfolder/"; это моя папка проекта, где я хочу создать выходной файл.

4) Я уже разместил свой входной файл здесь C:/wamp/www/projectfolder/wordfile.docx";

Затем я запустил свой код ... (ниже)

<?php
    set_time_limit(0);
    function MakePropertyValue($name,$value,$osm){
    $oStruct = $osm->Bridge_GetStruct("com.sun.star.beans.PropertyValue");
    $oStruct->Name = $name;
    $oStruct->Value = $value;
    return $oStruct;
    }
    function word2pdf($doc_url, $output_url){

    //Invoke the OpenOffice.org service manager
    $osm = new COM("com.sun.star.ServiceManager") or die ("Please be sure that OpenOffice.org is installed.\n");
    //Set the application to remain hidden to avoid flashing the document onscreen
    $args = array(MakePropertyValue("Hidden",true,$osm));
    //Launch the desktop
    $oDesktop = $osm->createInstance("com.sun.star.frame.Desktop");
    //Load the .doc file, and pass in the "Hidden" property from above
    $oWriterDoc = $oDesktop->loadComponentFromURL($doc_url,"_blank", 0, $args);
    //Set up the arguments for the PDF output
    $export_args = array(MakePropertyValue("FilterName","writer_pdf_Export",$osm));
    //print_r($export_args);
    //Write out the PDF
    $oWriterDoc->storeToURL($output_url,$export_args);
    $oWriterDoc->close(true);
    }

    $output_dir = "C:/wamp/www/projectfolder/";
    $doc_file = "C:/wamp/www/projectfolder/wordfile.docx";
    $pdf_file = "outputfile_name.pdf";

    $output_file = $output_dir . $pdf_file;
    $doc_file = "file:///" . $doc_file;
    $output_file = "file:///" . $output_file;
    word2pdf($doc_file,$output_file);
    ?>

Вы пробовали http://www.phpdocx.com/ ? Кроме того, он также может быть размещен на вашем сервере.


Другой способ сделать это - использовать непосредственно параметр в команде libreoffice:

libreoffice --convert-to pdf /path/to/file.{doc,docx}

Решения на основе Open Office / LibreOffice будут выполнять задание OK, но не ожидайте, что ваши файлы PDF будут похожи на ваши исходные файлы, если они были созданы в MS-Office. PDF, который выглядит на 90% как оригинал, не считается приемлемым во многих областях.

Единственный способ убедиться, что ваши файлы PDF выглядят точно так же, как оригиналы, - это использовать решение, использующее официальные DLL-файлы MS-Office под капотом. Если вы используете PHP-решение на серверах, отличных от Windows, то для этого требуется дополнительный Windows Server. Это может быть showstopper, но если вы действительно заботитесь о внешнем виде ваших PDF-файлов, у вас может не быть возможности.

Взгляните на это сообщение в блоге . В нем показано, как использовать PHP для преобразования файлов MS-Office с высоким уровнем точности.

Отказ от ответственности: я написал этот пост в блоге и работал над соответствующим коммерческим продуктом, поэтому считаю меня предвзятым. Однако это отличное решение для людей PHP, с которыми я работаю.


Шаг 1. Установите «Apache_OpenOffice_4.1.2» в вашей системе. Шаг 2. Загрузите библиотеку «unoconv» из github или где-нибудь еще.

-> C: \ Program Files (x86) \ OpenOffice 4 \ program \ python.exe = Путь к каталогу установки open office

-> D: \ wamp \ www \ doc_to_pdf \ libobasis4.4-pyuno \ unoconv = Путь к папке библиотеки

-> D: / wamp / www / doc_to_pdf / files /'.$ pdf_File_name. ' = путь и имя файла pdf

-> D: / wamp / www / doc_to_pdf / files /'.$ doc_file_name = Путь к файлу вашего документа.

Если PDF не создан, чем последний шаг, перейдите в -> Панель управления \ Все элементы панели управления \ Средства администрирования-> services-> найдите «wampapache» -> щелкните правой кнопкой мыши и выберите свойство -> нажмите вкладку входа в систему. Затем установите флажок allow служба для взаимодействия с рабочим столом

Создайте образец .php-файла и поставьте ниже код и запустите на сервере wamp или xampp

$result = exec('"C:\Program Files (x86)\OpenOffice 4\program\python.exe" D:\wamp\www\doc_to_pdf\libobasis4.4-pyuno\unoconv -f pdf -o D:/wamp/www/doc_to_pdf/files/'.$pdf_File_name.' D:/wamp/www/doc_to_pdf/files/'.$doc_file_name);

Этот код работает для меня в операционной системе Windows-8


Я нашел некоторое решение после стольких поисковых запросов. Вы также можете попробовать, если устали искать хорошее решение.

Для общего использования SOAP API

Вам необходимо указать имя пользователя и пароль для запроса SOAP на https://www.livedocx.com.

Сделайте регистрацию с помощью этого https://www.livedocx.com/user/account_registration.aspx и выполните соответствующие действия.

Используйте ниже код в вашем .php-файле.

ini_set ('soap.wsdl_cache_enabled', 0);

// you will get this username and pass while register
define ('USERNAME', 'Username'); 
define ('PASSWORD', 'Password');

// SOAP WSDL endpoint
define ('ENDPOINT', 'https://api.livedocx.com/2.1/mailmerge.asmx?wsdl');

// Define timezone
date_default_timezone_set('Europe/Berlin');
$soap = new SoapClient(ENDPOINT);
$soap->LogIn(
    array(
        'username' => USERNAME,
        'password' => PASSWORD
    )
);
$data = file_get_contents('test.doc');
$soap->SetLocalTemplate(
    array(
        'template' => base64_encode($data),
        'format'   => 'doc'
    )
);
$soap->CreateDocument();
$result = $soap->RetrieveDocument(
    array(
        'format' => 'pdf'
    )
);
$data = $result->RetrieveDocumentResult;
file_put_contents('tree.pdf', base64_decode($data));
$soap->LogOut();
unset($soap);

Следуйте этой ссылке для получения дополнительной информации http://www.phplivedocx.org/

Для Ubuntu

Требуется установка OpenOffice и Unoconv.

из командной строки

apt-get remove --purge unoconv
git clone https://github.com/dagwieers/unoconv
cd unoconv
sudo make install

Теперь добавьте ниже код в свой PHP-скрипт и убедитесь, что файл должен быть исполняемым.

shell_exec('/usr/bin/unoconv -f pdf  folder/test.docx');
shell_exec('/usr/bin/unoconv -f pdf  folder/sachin.png');

Надейтесь, что это решение поможет вам.


Я успешно разместил переносимую версию libreoffice на веб-сервере моего хоста, которую я вызываю с PHP, чтобы выполнить преобразование командной строки из .docx и т. Д. В pdf. на лету. У меня нет прав администратора на веб-сервере моего хоста. Вот мое сообщение в блоге о том, что я сделал:

http://geekswithblogs.net/robertphyatt/archive/2011/11/19/converting-.docx-to-pdf-or-.doc-to-pdf-or-.doc.aspx

Ура! Преобразуйте непосредственно из .docx или .odt в .pdf, используя PHP с LibreOffice (преемник OpenOffice)!





pdf-generation