J'ouvre des documents Word avec la méthode Documents.Open dans l'espace de noms Microsoft.Office.Interop.Word. Cela fonctionne bien, sauf que lorsque j'ouvre un fichier qui n'est pas un document Word, il est automatiquement converti en un document Word. Je voudrais trouver un moyen de lever une exception du document n'est pas un document Word, détecter si le document est ou n'est pas un document Word avant de l'ouvrir, ou détecter si le document a été converti après qu'il est ouvert et converti. Est-ce que quelqu'un a des idées sur la façon d'accomplir cela?API Word: empêcher la conversion du fichier
2
A
Répondre
3
Un test simple serait de vérifier le nombre magique dans l'en-tête du document avant d'essayer d'ouvrir le document avec Word.
Les documents Word binaires (.doc) sont des documents composés et commencent par 0xcfd0, où les documents OpenXML (.docx) commencent par la chaîne "PK".
static bool HasComoundDocumentSignature(string filename)
{
using (BinaryReader br = new BinaryReader(File.Open(filename, FileMode.Open)))
{
UInt16 magicNumber = br.ReadUInt16();
return magicNumber == 0xcfd0;
}
}
static bool HasZipSignature(string filename)
{
using (BinaryReader br = new BinaryReader(File.Open(filename, FileMode.Open)))
{
UInt16 magicNumber = br.ReadUInt16();
return magicNumber == 0x4b50;
}
}
static bool HasWordSignature(string filename)
{
return HasCompoundDocumentSignature(filename)
|| HasZipSignature(filename);
}
Questions connexes
- 1. Conversion Word XML en RTF
- 2. Empêcher la conversion d'entités HTML
- 3. Comment empêcher l'utilisateur d'éditer Word Document avec Word # Interop?
- 4. Empêcher l'édition du fichier
- 5. empêcher la conversion de <br/>
- 6. Conversion de doc Word en tiff
- 7. Document Word avec images Taille du fichier
- 8. ASP.NET GridView - Empêcher Word-emballage dans la colonne
- 9. Conversion audio du fichier CAF
- 10. Empêcher Word de reformater mon HTML
- 11. Problème lors de la modification du fichier Word en PHP
- 12. Comment empêcher la saisie de caractères russes dans Word avec un addin Word?
- 13. API pour la conversion vidéo webm
- 14. xe.com conversion de devises api
- 15. Empêcher la conversion du fuseau horaire lors de la désérialisation de la valeur DateTime
- 16. Conversion de XPS en Word en Java
- 17. API C# pour l'éditeur d'équation MS Word
- 18. Conversion de masse de Word 2003 à Word 2007 sans utiliser l'automatisation Word?
- 19. Conversion d'un fichier doc Microsoft Word en fichier HTML à l'aide d'ASP.NET & C#
- 20. empêcher la bruteforcing du captcha
- 21. Automatiser la conversion du fichier Excel xls en Excel xml
- 22. Empêcher l'ouverture d'un fichier
- 23. API pour changer la propriété du fichier vista
- 24. Conversion de MS Word en Excel par programme
- 25. Accélérer la conversion du forum
- 26. jQuery empêcher pâte à iframe designmode de MS Word
- 27. Comparaison Word By Word
- 28. empêcher la copie si le document pdf (généré à partir du mot)
- 29. Création d'un fichier document Word
- 30. Vérifier le fichier modèle Word
Je sais que c'est assez proche, mais je ne voulais pas aller avec quelque chose comme cela comme une solution parce que tout fichier zip devrait être en mesure de passer ce test, il est donc pas nécessairement une indication que le fichier est Fichier Word Je cherche vraiment quelque chose dans l'API qui me donnera un indice sur les conversions effectuées sur le fichier lors de son ouverture. – jcnnghm
@jcnnghm: Oui, bien sûr que ce n'est pas à l'épreuve des balles. Si vous trouvez un fichier zip, vous devrez l'ouvrir et vérifier le fichier _rels \ .rels, et analyser le XML de cette partie du paquet pour voir s'il contient une relation de type "http://schemas.openxmlformats.org/ officeDocument/2006/relations/officeDocument ". –