PDFファイルをZIP圧縮してパスワードをつけたい

お世話になります。

タイトルのとおり、PDFファイルをZIP圧縮してパスワードをつけたいと考えています。

デフォルトのアクティビティには圧縮がなかったため、UIPATHGOから、
下記の圧縮アクティビティをインストールしました。

インストールした際に、下記の依存関係エラーが出力されたのですが、解決方法が分かりません。

NU1101: Unable to find package SharpCompress. No packages exist with this id in source(s): https://uipathgo.myget.org/F/tomohiko-281355/auth/08cb578a-6ed5-49de-9946-9728c87c2be3/api/v3/index.json, UiPATHGO

NU1101: Unable to find package Ionic.Zip. No packages exist with this id in source(s): https://uipathgo.myget.org/F/tomohiko-281355/auth/08cb578a-6ed5-49de-9946-9728c87c2be3/api/v3/index.json, UiPATHGO

上記エラーの解決方法か、他にパスワードZIPファイルの作成方法がありましたら教えていただけますしょうか。

1 Like

こんにちは @tmgtn

パスワードをつけて、ファイルを圧縮するのサンプルを作りました。

image

image

ソースコードはGitHubに公開しています。

ご参考まで

1 Like

@ui-path-example さん

リプライありがとうございました。

全体の動きとしては作っていただいた シナリオで間違いないのですが、
圧縮するのはフォルダではなくファイルになります。
ファイルの場合は、下記エラーが表示されてしまうのですが、
修正していただくことは可能でしょうか。

19.3.0+Branch.master.Sha.5fdb43627d7d3c011018bb545ddf9470210d44a9
ソース: Zipファイル作成 Invoke Code
メッセージ: 呼び出しのターゲットが例外をスローしました。
例外の種類: System.Reflection.TargetInvocationException
IncludeExceptionDetailInFaults=true により作成された可能性のある ExceptionDetail の値:
System.Reflection.TargetInvocationException: 呼び出しのターゲットが例外をスローしました。 ----> System.IO.IOException: ディレクトリ名が無効です。
場所 System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)
場所 System.IO.FileSystemEnumerableIterator1.CommonInit() 場所 System.IO.FileSystemEnumerableIterator1…ctor(String path, String originalUserPath, String searchPattern, SearchOption searchOption, SearchResultHandler`1 resultHandler, Boolean checkHost)
場所 System.IO.Directory.GetFiles(String path)
場所 ICSharpCode.SharpZipLib.Core.FileSystemScanner.ScanDir(String directory, Boolean recurse)
場所 ICSharpCode.SharpZipLib.Zip.FastZip.CreateZip(Stream outputStream, String sourceDirectory, Boolean recurse, String fileFilter, String directoryFilter)
場所 UiPathCodeRunner_da41b6ae6f164349b96b21754e644d0e.Run(FastZip fastZip, String str_SourceFilePath, String str_zipFileName)
— 内部 ExceptionDetail スタック トレースの最後 —
場所 System.RuntimeMethodHandle.InvokeMethod(Object target, Object arguments, Signature sig, Boolean constructor)
場所 System.Reflection.RuntimeMethodInfo.UnsafeInvokeInternal(Object obj, Object parameters, Object arguments)
場所 System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object parameters, CultureInfo culture)
場所 System.RuntimeType.InvokeMember(String name, BindingFlags bindingFlags, Binder binder, Object target, Object providedArgs, ParameterModifier modifiers, CultureInfo culture, String namedParams)
場所 UiPath.Core.Activities.Workflow.CompilerRunner.Run(Object args)
場所 UiPath.Core.Activities.InvokeCode.Execute(CodeActivityContext context)
場所 System.Activities.CodeActivity.InternalExecute(ActivityInstance instance, ActivityExecutor executor, BookmarkManager bookmarkManager)
場所 System.Activities.ActivityInstance.Execute(ActivityExecutor executor, BookmarkManager bookmarkManager)
場所 System.Activities.Runtime.ActivityExecutor.ExecuteActivityWorkItem.ExecuteBody(ActivityExecutor executor, BookmarkManager bookmarkManager, Location resultLocation)

@tmgtn さん

残念ながら、Fastzipというメソッドはフォルダしか処理できません。

Wins のPower Shell は確かにファイルを圧縮できますか、パスワードは付けられません。

圧縮したいファイルは別の新規フォルダの保存して、圧縮するとこはお勧めます。

ご参考まで。

@ui-path-example さん

ありがとうございました。運用でカバーしたいと思います。

@tmgtn さん

とんでもないです。お役に立つ、嬉しいです。

すでに対応されているかもしれませんが、
例えば7-zipなどのCUIで呼び出し可能なプログラムを経由して操作するという手段があります。
(検証したことはないのですが)
あるいはUI操作でカバーするなどもありかもしれません。

@cheez_RPA さん
リプライありがとうございました。
こちらで試したところ、仰る通り7zipのCUI版をプロセスを開始アクティビティにて呼び出して対応できることが分かりましたので、上記の対応をしております。

1 Like

遅くなりましたが解決されたようで何よりです!

質問が解決しましたら回答を解決策としてマークいただけますと幸いです!