質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.49%
Windows

Windowsは、マイクロソフト社が開発したオペレーティングシステムです。当初は、MS-DOSに変わるOSとして開発されました。 GUIを採用し、主にインテル系のCPUを搭載したコンピューターで動作します。Windows系OSのシェアは、90%を超えるといわれています。 パソコン用以外に、POSシステムやスマートフォンなどの携帯端末用、サーバ用のOSもあります。

コマンド

コマンドとは特定のタスクを行う為に、コンピュータープログラムへ提示する指示文です。多くの場合、コマンドはShellやcmdようなコマンドラインインターフェイスに対する指示文を指します。

バッチファイル

バッチファイル(Batch File)は、Windowsのコマンドラインインタープリターによって複数のコマンドを実行させる事が出来るスクリプトファイルです。

Q&A

解決済

2回答

3780閲覧

ghostscript gsで圧縮時のinput名 output名が同じだとNG?

hyksm

総合スコア174

Windows

Windowsは、マイクロソフト社が開発したオペレーティングシステムです。当初は、MS-DOSに変わるOSとして開発されました。 GUIを採用し、主にインテル系のCPUを搭載したコンピューターで動作します。Windows系OSのシェアは、90%を超えるといわれています。 パソコン用以外に、POSシステムやスマートフォンなどの携帯端末用、サーバ用のOSもあります。

コマンド

コマンドとは特定のタスクを行う為に、コンピュータープログラムへ提示する指示文です。多くの場合、コマンドはShellやcmdようなコマンドラインインターフェイスに対する指示文を指します。

バッチファイル

バッチファイル(Batch File)は、Windowsのコマンドラインインタープリターによって複数のコマンドを実行させる事が出来るスクリプトファイルです。

0グッド

0クリップ

投稿2016/12/12 08:46

コマンドでPDF圧縮にghostscriptを使用しています

下記の様に書くと思いますが
output.pdf input.pdfが同じ名前だとうまく圧縮されません

hoge.pdf hoge.pdf だとNG
hoge1.pdf hoge.pdf だとOKになる

これをなんとか同じ名前で保存したいのですが方法はありますか?

コマンドでのファイル上書きが出来ないから、この様な症状になるのでしょうか
上書きする方法など、何か別の方法でもよいので教えてください

gswin64c -sDEVICE=pdfwrite -dCompatibilityLevel=1.4 -dPDFSETTINGS=/screen -dNOPAUSE -dQUIET -dBATCH -sOutputFile=output.pdf input.pdf

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

gsの処理でファイルをロックしている為、上書きが出来ない事が原因かと思われます。
batでの処理であれば、

@echo off set A_DIR=<PDFの保存DIR> set B_DIR=%TMP% for /R %A_DIR% %%i in (*.pdf) do ( gswin64c -sDEVICE=pdfwrite -dCompatibilityLevel=1.4 -dPDFSETTINGS=/screen -dNOPAUSE -dQUIET -dBATCH -sOutputFile=%B_DIR%%%~ni.bk.pdf %%i move %B_DIR%%%~ni.bk.pdf %%i ) pause

でどうでしょう?
batはあまり詳しくはないので書き方がおかしいかもしれませんが…

投稿2016/12/12 11:34

dohq

総合スコア232

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ベストアンサー

ghostscriptは使用したことが無いので、調べてみました。パイプライン処理のように見えますので、入力=出力では入力ファイルの上書きをする可能性があるので、一時的に出力を別名で出力して(テンポラリーファイル)、入力ファイルを消去して出力ファイルを入力ファイル名にリネームが簡単ではないでしょうか?スクリプトを作成すると容易と考えます。

処理の流れ。 入力ファイル ↓ ghostscript ↓ 例えば`temp.pdf` ↓ 入力ファイルの削除 ↓ `temp.pdf`を入力ファイル名にリネーム

投稿2016/12/12 10:06

MasahikoHirata

総合スコア3747

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

hyksm

2016/12/12 10:43

やはりそういった流れになりますよね。出来れば簡潔にしたかったんですが、それでやってみます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.49%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問