InDesign スクリプト ブックのInddファイルのリンクをブックと同じフォルダーのファイルに更新する(改善)
ブックファイルに登録したinddファイルを、ブックファイルと同じフォルダーのファイルに更新するスクリプトを先日作成しましたが、難点はスピードが遅いことでした。
その原因がわかりましたので、ソースを更新します。
「ページとセクションの番号を自動更新する」がデフォルトで有効になっているので、inddファイルを1ファイル更新するごとに自動更新されていました。
最初に「ページとセクションの番号を自動更新する」を無効にし、ファイルの更新が完了した後に有効に戻すようにしています。
appBook.automaticPagination=false;
スピードはかなり早くなっていると思います。これなら我慢できるかな。
function modifyBook(){ var appBook=app.books.item(0); var bookPath=appBook.filePath; bookPath = decodeURI(bookPath); // URLデコード var fileList = new Array(); var fileListNew = new Array(); var inddFileitem; var i = 0; appBook.automaticPagination=false; var inddFileLen=appBook.bookContents.length; var inddFile=appBook.bookContents; for (i=0;i<inddFileLen;i++){ inddFileitem=inddFile.item(i); fileList[i]=appBook.bookContents.item(i).fullName.name; fileListNew[i]=bookPath+"/"+fileList[i]; fileListNew[i]=new File(fileListNew[i]); // /を\に変換 inddFileitem.replace(fileListNew[i]); } appBook.automaticPagination=true; }
InDesign スクリプト ブックのInddファイルのリンクをブックと同じフォルダーのファイルに更新する
InDesignで作業する場合、inddファイルをブックに登録してDTPすると思います。
たとえば、今のデータをそのままバックアップとして残し、inddファイルやブックファイル一式をコピーして作業する場合、注意が必要です。
コピーしたブックファイルからinddファイルを開くと、コピーする前のフォルダーにあるinddが開いてしまいます。
それに気づかずに作業してしまうと、コピー前のinddファイルを編集してしまうことになります。
ブックファイルは、絶対パスでinddファイルを登録しているのです。
この問題を解決するために、ブックファイルに登録したinddファイルを、ブックファイルと同じフォルダーのファイルに更新するスクリプトを作成しました。
InDesignCS5で動作確認済みです。
難点は、時間がかかることでしょうか。
手元の7ファイルで試したところ、2分程度かかりました。(Windows10 pro,i5-3470 3.20GHz, メモリ8GB)
他に何か良い方法があれば、教えてください。
function modifyBook(){ var appBook=app.books.item(0); var bookPath=appBook.filePath; bookPath = decodeURI(bookPath); // URLデコード var fileList = new Array(); var fileListNew = new Array(); var inddFileitem; var i = 0; var inddFileLen=appBook.bookContents.length; var inddFile=appBook.bookContents; for (i=0;i<inddFileLen;i++){ inddFileitem=inddFile.item(i); fileList[i]=appBook.bookContents.item(i).fullName.name; fileListNew[i]=bookPath+"/"+fileList[i]; fileListNew[i]=new File(fileListNew[i]); // /を\に変換 inddFileitem.replace(fileListNew[i]); } }
Visual Studioでプロジェクト名称を変更する
Visual Studioで、プログラムのファイル名を変更したい、作ったプログラムを流用して作りたいなど、思うことがあります。
普通にファイル名を変更すると、プロジェクトを開けなくなったりしますが、次の手順でプロジェクト名を変更すると、問題なく変更できるようです。
プログラムを複製して別のファイルとして作る
1.あらかじめプロジェクトファイルをコピーします。
Visual Studio 2017の場合、\ドキュメント\Visual Studio 2017にプロジェクトファイルがあります。
ソリューションファイルは、変更せずにそのままにします。
2.Visual Studioを開き、ソリューション(.sln)を開きます。
3.「アセンブリ名」と「既定の名前空間」に新しい名前を入力します。
Visual Studio 2017 Communityをインストールしてみた
Visual Studio 2017がリリースされたということで、Visual Studio 2017からバージョンアップしてみました。
今回もVisual Studio 2017 Communityをインストールします。
1.Visual Studioのホームページから、ダウンロードします。
Visual Studio | Developer Tools and Services | Microsoft IDE
2.「Visual Studioのダウンロード」をクリックし、「コミュニティ」をクリックします。
3.実行ファイルがダウンロードされますので、実行します。
4.「続行」をクリックします。
5.数分間待つと、下記の画面が表示されます。「インストール」をクリックします。
6.インストールが始まります。
7.インストールが完了しました。「起動」をクリックしてみましょう。
8.「サインイン」をクリックします。
9.メールアドレス、パスワードを入力して、[サインイン]をクリックします。
10.Visual Studioが起動したら、インストールは完了です。
11.Visual Studio 2015のファイルなどを読み込んだ場合、下記の画面が表示されることがあります。
[インストール]をクリックします。
12.一度、Visual Studio 2017を終了してから、[インストール]をクリックします。
13.インストールにはしばらくかかります。
この画面が表示されたら、[閉じる]をクリックします。
C#でタイムスタンプ変更ツールを作成する
デジタルビデオカメラで撮影したファイルをパソコンに取り込むと、ファイルのタイムスタンプ(作成日時)が取り込んだ日時に変更されてしまうことがあります。
そのタイムスタンプを戻すツールがなかなか見つからなかったので、作ってみました。
ここからダウンロードできます。
使い方は簡単。
起動した画面に、動画をドラッグアンドドロップすると、作成日時を更新日時と同じ設定に変更します。
改良していきたいので、バグを見つけたり、要望がありましたら、ぜひコメントください。
対応ファイルは、".m2ts", ".mts", ".wmv",".avi",".mpeg",".mpg",".vob",".mov"です。
このツールの作り方は、後日説明しようかと、、、
Windowsでプログラミングしてみよう(3) ~C#でフォームを表示してみる~
今回は、Windowsフォームを表示して、文字やボタンを配置してみましょう。
1.Visual Studioを起動して、File - New - Projectを選びます。
2.Installed - Tempates - Visual C#を選択し、[Windows Forms Application] を選択します。
3.[Name] ボックスにプロジェクト名を指定し、[OK] をクリックします。
4.次のように画面が表示されます。
表示されたフォームに、文字や文章を置いていきます。
5.画面左のウインドウから「Label」を選び、フォームにドラッグアンドドロップします。
6.画面右のPropertiesの「Text」に表示させたい文字列を入力します。
7.フォームの画面左の名前を変更するには、Formをマウスで選択した後、Propertiesの「Text」の文字列を変更します。
8.ボタンを配置するには、画面左のウインドウから「Button」を選び、フォームにドラッグアンドドロップします。
9.画面右のPropertiesの「Text」にボタンに表示する文字列を入力します。
10.[閉じる]ボタンを押したときに、画面を閉じるようにコードを入力します。
[閉じる]ボタンをダブルクリックします。
11.”button1_Click()”のところに、画面を閉じるコード”this.Close();"を入力します。
12.フォームを表示してみます。画面上部の[Start]をクリックします。
13.フォームが表示されます。
[閉じる]をクリックすると、フォームが閉じます。
これで、フォームを表示することができました。