public FileInfoChangeResult ChangeFIleInfo(string filePath, BookInfo changeInfo, PDFFileChangeSetting changeSetting)
        {
            var res = new FileInfoChangeResult();

            try
            {
                var doc = PdfReader.Open(filePath, PdfDocumentOpenMode.Modify);

                var changeData = RenameInfo.GetReplaceParam(changeInfo);
                doc.Info.Title    = EncodingUnicode(GetChanedData(changeSetting.Title, changeData));
                doc.Info.Author   = EncodingUnicode(GetChanedData(changeSetting.Author, changeData));
                doc.Info.Keywords = EncodingUnicode(GetChanedData(changeSetting.Keyword, changeData));
                doc.Info.Subject  = EncodingUnicode(GetChanedData(changeSetting.SubTitle, changeData));
                //出版年
                var time = DateTime.Now;
                if (DateTime.TryParse(GetChanedData(changeSetting.CreationDate, changeData), out time))
                {
                    doc.Info.CreationDate = time;
                }


                doc.Save(filePath);

                res.IsSuccess = true;
            }
            catch (Exception e)
            {
                res.IsSuccess = false;
                res.Message   = e.ToString();
            }

            return(res);
        }
        public static ValidationResult CheckFileName(string path, ValidationContext context)
        {
            if (string.IsNullOrWhiteSpace(path))
            {
                return(new ValidationResult("ファイル名を入力してください。"));
            }

            //置換パラメータがなければ無効
            var keys = RenameInfo.GetKeys();

            if (!keys.Any(x => path.Contains(x)))
            {
                return(new ValidationResult("最低でも1つの置換パラメータを入れてください。"));
            }

            var invalidChars = System.IO.Path.GetInvalidFileNameChars();

            if (path.IndexOfAny(invalidChars) >= 0)
            {
                return(new ValidationResult("ファイル名に指定不可能な文字列が入力されています。"));
            }

            else
            {
                return(ValidationResult.Success);
            }
        }
Exemple #3
0
 public FileInfoSettingViewModel()
 {
     _closeRequest      = new InteractionRequest <Confirmation>();
     _messageBoxRequest = new InteractionRequest <Confirmation>();
     Setting            = new WpfPDFFileChangeSetting();
     FileNameSetting    = string.Empty;
     DisplayRule        = RenameInfo.GetRuleName();
 }
        public ConvertInfo RenameBookFile(string file, BookInfo renameInfo, string renameRule)
        {
            var repName = string.Empty;

            if (File.Exists(file) && !string.IsNullOrWhiteSpace(renameRule))
            {
                try
                {
                    var ext      = Path.GetExtension(file);
                    var basedir  = Path.GetDirectoryName(file);
                    var repParam = RenameInfo.GetReplaceParam(renameInfo);
                    repName = CommonStringReplace.GetReplaceString(renameRule, repParam) + ext;

                    //禁則文字は_置換する
                    var invalidChars = System.IO.Path.GetInvalidFileNameChars();
                    foreach (var ire in invalidChars)
                    {
                        repName = repName.Replace(ire, '_');
                    }
                    //重複時にはカウントアップ
                    var savePath = FileUtil.GetUniqueFilename(Path.Combine(basedir, repName));
                    repName = Path.GetFileName(savePath);

                    File.Move(file, savePath);
                    return(new ConvertInfo()
                    {
                        BeforeFileName = file, AfterFileName = repName, Message = "", IsReaNameSuccess = true, AfterFullPath = savePath
                    });
                }
                catch (Exception e)
                {
                    return(new ConvertInfo()
                    {
                        BeforeFileName = file, AfterFileName = repName, Message = e.ToString(), IsReaNameSuccess = false
                    });
                }
            }
            return(new ConvertInfo()
            {
                BeforeFileName = file, AfterFileName = repName, Message = "リネーム失敗", IsReaNameSuccess = false
            });
        }
Exemple #5
0
        void renameResources(List <TypeInfo> renamedTypes)
        {
            var newNames = new Dictionary <Resource, RenameInfo>();

            foreach (var info in renamedTypes)
            {
                var      oldFullName = info.oldFullName;
                Resource resource;
                if (!nameToResource.TryGetValue(oldFullName, out resource))
                {
                    continue;
                }
                if (newNames.ContainsKey(resource))
                {
                    continue;
                }
                var newTypeName = info.type.TypeDefinition.FullName;
                var newName     = newTypeName + resource.Name.Substring(oldFullName.Length);
                newNames[resource] = new RenameInfo(resource, info, newName);

                Log.v("Renamed resource in resources: {0} => {1}", Utils.removeNewlines(resource.Name), newName);
                resource.Name = newName;
            }
        }
        void renameResources(List<TypeInfo> renamedTypes)
        {
            var newNames = new Dictionary<Resource, RenameInfo>();
            foreach (var info in renamedTypes) {
                var oldFullName = info.oldFullName;
                Resource resource;
                if (!nameToResource.TryGetValue(oldFullName, out resource))
                    continue;
                if (newNames.ContainsKey(resource))
                    continue;
                var newTypeName = info.type.TypeDef.FullName;
                var newName = newTypeName + resource.Name.String.Substring(oldFullName.Length);
                newNames[resource] = new RenameInfo(resource, info, newName);

                Logger.v("Renamed resource in resources: {0} => {1}", Utils.removeNewlines(resource.Name), newName);
                resource.Name = newName;
            }
        }