Les propriétés (auteur, titre, catégorie, mot clef, commentaire...) que je souhaite modifier sont celles attachées au fichier de type bureautique (xls, doc, txt, pdf, odt, ods ...).
Pour se faire j'ai trouvé une dll dsofile.dll qui marche très bien lorsque utilisée sous excel et macro VBA.
Néanmoins même si Excel me permet de répondre à une partie de mes besoins, je dois absolument intégrer cette dll à du code php.
J'ai trouvé des exemples sur Internet (Cf ci-dessous EXEMPLE) mais lorsque je fais tourner mon code, je tombe toujours sur une erreur (Cf ci-dessous ERREUR 1) que je n'arrive pas à corriger.
J'ai l'impression que je n'arrive pas à faire reconnaître ma dll par php.
Voila ce que j'ai déjà fait ou tenté :
* récupération du dsofile.dll + installation
* mise en place de cette dll dans windows/system32
* mise en place de cette dll dans xampp/php/ext + déclaration dans php.ini => (Cf ci-dessous ERREUR 2)
* mise en place dans php_ini de com.allow_dcom=true, com.autoregister_typelib = true, com.autoregister_casesensitive = false, com.autoregister_verbose = true
J'ai essayé aussi de faire via dcomcnfg la configuration du composant service "DSO OLE Document Properties Reader 2.1" mais je ne l'ai pas trouvé ni lui ni la clef.
Je commence à ne plus avoir trop d'idée et le fait que certains codes datent de 2003 et que je ne trouve pas de solution sur le Net m'inquiète un peu.
Alors si vous avez des idées, je suis preneur.
EXEMPLE
=======
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
| <?php
// the file you wish to access
$fn = '/docs/MFA.xls';
$oFilePropReader = new COM('DSOleFile.PropertyReader');
$props = $oFilePropReader->GetDocumentProperties($fn);
// one syntax
$au = com_get($props, 'Author');
print "au: $au \n";
//another syntax
$str = 'LastEditedBy';
$lsb = $props->$str;
var_dump($lsb);
// set a property if you wish
if (!$props->IsReadOnly()) {
$props->Subject = 'tlc';
}
?> |
ERREUR 1
========
Fatal error: Uncaught exception 'com_exception' with message 'Failed to create COM object `DSOleFile.PropertyReader': Syntaxe incorrecte ' in D:\DEV\XtraDoc\rechercheDocBD.php:14 Stack trace: #0 D:\DEV\XtraDoc\rechercheDocBD.php(14): com->com('DSOleFile.Prope...') #1 {main} thrown in D:\DEV\XtraDoc\rechercheDocBD.php on line 14
ERREUR 2
========
PHP Warning: PHP Startup: Invalid library (maybe not a PHP library) 'dsofile.dll' in Unknown on line 0
Partager