Maison  >  Article  >  Java  >  analyse de conversion de fichier au format jtd

analyse de conversion de fichier au format jtd

巴扎黑
巴扎黑original
2017-06-26 09:58:244234parcourir

Dans le projet sur lequel je m'occupe depuis la fin de l'année, le module dont je suis principalement responsable est la partie analyse des fichiers. Quand je le faisais, j'ai fait toutes sortes d'erreurs et au moins des ennuis. c'est enfin terminé. Maintenant, j'ai rassemblé toutes les parties du projet. Résumons l'analyse de ces fichiers pour référence future. Les principaux documents analysés dans ce projet incluent les fichiers office, pdf, csv, rtf, txt, jtd et. emails aux formats eml, msg et pst, ainsi que compression rar et zip Lors de la décompression du package, il existe effectivement un fichier au format mlf Cependant, après mes recherches et les recherches des patrons de l'entreprise, je n'arrive pas à m'en sortir. la difficulté pour le moment, je ne peux donc qu'abandonner le fichier dans ce format pour le moment, et d'autres analyses n'ont pas été faites, principalement celles-ci, je les résumerai toutes un par un plus tard. analyse de fichiers, j'utilise Tika d'Apache.

Aujourd'hui, nous allons d'abord examiner l'analyse de ce fichier jtd Certaines personnes ne savent peut-être pas ce qu'est ce fichier jtd :

jtd格式文件是由日本的文字处理软件一太郎生成的文件格式

Cela peut être. compris comme format jtd Le fichier est le mot que nous utilisons habituellement. Il vous suffit d'utiliser le logiciel Ichitaro pour l'éditer et l'ouvrir. Laissez-moi vous montrer à quoi ressemble ce logiciel Ichitaro :

analyse de conversion de fichier au format jtd

<.> Je viens de voir cette exigence, j'étais très gêné à l'époque. Comment faire ça ? C'est un logiciel japonais, je ne l'ai pas compris même en recherchant des informations dessus, je ne l'ai pas trouvé même sur Baidu et. Stackoverflow. Merci à un grand patron de l'entreprise qui sait lire et comprendre le japonais. Ce patron a trouvé une solution sur un site Web japonais. L'adresse du site Web est http://d.hatena.ne.jp/satorufujimori/20070227/1172549793

. La solution est d'utiliser un script vbs pour convertir jtd. Le fichier de format est converti en fichier txt, puis le txt correspondant est analysé pour obtenir le contenu. Le script sur le site Web est le suivant :

<.>

Tout le monde fait attention au 10, qui est un identifiant. 10 signifie que le format jtd sera Le fichier est converti en fichier au format txt Si vous souhaitez convertir le fichier au format jtd en un fichier dans d'autres formats. , vous devez remplacer 10 par d'autres identifiants. Cependant, ce qui est embarrassant, c'est que nous n'avons pas trouvé de document spécifique expliquant quel numéro représente quel document, puis j'ai essayé de 0 à 100, et beaucoup de formats désordonnés sont sortis. Le seul utile était 10, ce qui signifie qu'il ne peut convertir que les fichiers au format jtd en fichiers au format txt. Dans ce cas, les images du fichier d'origine seront toutes disparues, mais notre tâche consiste à lire le contenu du fichier et à le saisir. Solr pour la récupération, donc s'il n'y a pas d'image, il n'y aura pas d'image. Plus tard, nous avons adopté cette méthode pour résoudre le problème.

//taro2txt.vbs
Set taro = CreateObject("JXW.Application")
taro.Visible = True
taro.Documents.Open "c:\taro\a.jtd"
taro.ActiveDocument.SaveAs "c:\out\a.txt", "", "", "", 10, "ShiftJIS" //※1
taro.Quit
Grâce au script ci-dessus, vous pouvez convertir des fichiers jtd sans mot de passe en fichiers txt, mais le plus embarrassant est que nos fichiers au format jtd ont des mots de passe, mais heureusement, cela a finalement été résolu. J'ai oublié comment le résoudre à l'époque, mais la solution est la suivante :

Une fois le script terminé, cliquez simplement sur Exécuter pour convertir le fichier

spécifique
//taro2txt.vbs
Set taro = CreateObject("JXW.Application")
taro.Visible = True
taro.Documents.Open "c:\taro\a.jtd",password//在此处加上密码
taro.ActiveDocument.SaveAs "c:\out\a.txt", "", "", "", 10, "ShiftJIS" //※1
taro.Quit
jtd en txt Il suffit ensuite de traiter le fichier txt pour en extraire le contenu (l'extraction du contenu des fichiers au format txt sera expliquée dans un autre article plus tard).

Le problème ci-dessus a été résolu, mais il y a toujours un problème. Je n'arrive pas à créer un fichier script pour tous les fichiers jtd. De plus, je ne sais pas de quels fichiers le client dispose, alors j'y ai pensé. en l'ajoutant à vbs. Le script passe les paramètres. Bien que je ne connaisse pas la syntaxe de VBS, je l'ai quand même écrit selon ce qui est dit sur Internet :

Où a0 représente le chemin du fichier jtd, a1 indique le chemin du fichier au format txt à générer, et a2 indique le mot de passe du fichier jtd. En fait, c'est le processus de passage de paramètres pour appeler la fonction.

Une fois le script perfectionné, il s'agit d'utiliser java pour appeler le script vbs. J'ai trouvé la réponse à cette question sur stackoverflow. La méthode d'appel est la suivante :
Option Explicit

Dim a0 : a0 = WScript.Arguments(0)
Dim a1 : a1 = WScript.Arguments(1)
Dim a2 : a2 = WScript.Arguments(2)
Dim taro

ExchangeFile a0, a1, a2

Sub ExchangeFile(src,dest,password)
    Set taro = CreateObject("JXW.Application")
    taro.Visible = True
    taro.Documents.Open src,password
    taro.ActiveDocument.SaveAs dest, "", "", "", 10, "" 
    taro.Quit
End Sub

Grâce à la série d'étapes ci-dessus, le fichier jtd peut être converti avec succès en fichier txt, mais il y a plusieurs problèmes :

public static void main(String[] args) {
   try {
      Runtime.getRuntime().exec( "wscript D:/Send_Mail_updated.vbs" );
   }
   catch( IOException e ) {
      System.out.println(e);
      System.exit(0);
   }
}
L'appel du script vbs via le programme java ne renvoie pas de valeur indiquant si le fichier txt est réellement généré. Si le mot de passe est erroné, le fichier txt correspondant ne peut pas être généré. Ma méthode consiste à vérifier si le fichier txt a été généré de temps en temps. sera jugé que la conversion a échoué. Le nombre de fois est basé sur la taille du fichier, par exemple 10 Mo. Le fichier est vérifié toutes les 5 secondes pour un total de 10 fois. Si le fichier txt n'est pas généré, il sera jugé. comme un échec. C'est une perte de temps lors de la tentative de mot de passe, et le fichier peut être relativement volumineux, ou la configuration de la machine n'est pas assez bonne. Il était initialement possible de générer un fichier txt, mais après le temps de vérification, cela l'a été. directement déterminé qu'il ne pouvait pas être converti correctement ;

  1. Chaque fois que vous exécutez le script vbs, le logiciel Ichitaro sera ouvert, et lors de la tentative du mot de passe, si le mot de passe est incorrect, un Une fenêtre contextuelle d'erreur Windows apparaîtra sur le serveur sur lequel l'application est déployée. Bien que le processus d'Ichitaro soit finalement tué, le client peut clairement voir le programme Itaro et les invites d'erreur avant qu'il ne soit tué.

  2. Si le fichier jtd est trop volumineux, par exemple, lorsque le fichier atteint 30 Mo, la vitesse de conversion du script sera très lente. La question 2 mentionne également que pendant le processus de conversion du fichier, le client peut le faire. le programme Ichitaro est vu sur le serveur, si le client tue directement Itaro pendant cette période, alors la conversion du fichier échouera définitivement

Les problèmes ci-dessus n'ont pas encore été résolus, et là ; sera plus tard. Cela dépend de l'utilisation après le déploiement chez le client. Si les fichiers au format jtd chez le client font tous moins de 10 Mo, il ne devrait pas y avoir de problème particulier. Cependant, si les fichiers dépassent 30 Mo, le nombre de fichiers sera supérieur à 30 Mo. le processus de conversion sera certainement lent. Et il y a toujours le risque que le logiciel Ichitaro soit tué pendant le processus de conversion. La situation spécifique dépend de la situation d'essai du client.

C'est tout pour l'instant sur l'analyse des fichiers au format jtd Quant à l'extraction du contenu après conversion des fichiers au format jtd en fichiers au format txt, j'en parlerai plus tard.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn