2

indesign (CS5) で選択した画像/グループの長さと幅を出力し、選択範囲を .png ファイルに保存する JavaScript アプリケーションを作成しようとしています。問題は、選択範囲の visibleBounds を使用して生成している長さと幅が、エクスポートされた画像の長さと幅とわずかに異なることです。より具体的には、画像の高さが幅よりも大きい場合、生成される高さは結果の .png の高さと同じになりますが、生成される幅はわずかに小さくなります。逆に、幅が大きい場合、生成される高さはわずかに小さくなります。これが私が取り組んできたコードです:

dest = Folder.selectDialog('Save report');
selected = app.activeDocument.selection[0];
filer = new File (dest+'/'+'testImage.png');
h = selected.visibleBounds[2] - selected.visibleBounds[0];
w = selected.visibleBounds[3] - selected.visibleBounds[1];
alert('height: '+h+'\nwidth: '+w);
selected.exportFile(ExportFormat.PNG_FORMAT, filer, false);

また、この問題は比較的小さな画像でのみ発生することも指摘しておく必要があります。画像が小さいほど影響が大きいようです。どんな助けでも大歓迎です。

4

1 に答える 1

1

この問題も見つかりました。まったく同じ画像でも、ページ上の位置に応じて異なるサイズでエクスポートされます。問題は、inDesign がピクセルではなく、最低レベルでセンチメートルまたはインチを使用していることだと思います。

ただし、これを解決するために最終的に行ったのは、画像をエクスポートしたらinDesignドキュメントに配置し、幅と高さを確認して両方の値を確認することです. このソリューションは、後で画像のサイズを知るためにのみ有効です。一度エクスポートすると、明らかな理由なしにサイズが変わることがあるため、エクスポートする前にサイズを知る方法が見つかりませんでした。

selected.exportFile(ExportFormat.PNG_FORMAT, filer, false);
//These lines load the image into the document, check the size of the image file previously exported, and writes the correct measure into the XML file
var imageFile = File(filer);
var imageGraphic = app.activeDocument.pages.item(0).place(imageFile, null);
imageGraphicItem = imageGraphic[0];
var imageFrame = imageGraphicItem.parent;
var correctImageWidth = Math.round(imageFrame.visibleBounds[3]-imageFrame.visibleBounds[1]);
var correctImageHeight = Math.round(imageFrame.visibleBounds[2]-imageFrame.visibleBounds[0]);
//Do something
imageGraphicItem.parent.remove(); 

それが役に立てば幸い!

于 2013-03-07T15:47:51.727 に答える