2

我正在尝试编写一个javascript应用程序来输出indesign(CS5)中选定图像/组的长度和宽度,并将选择保存到.png文件中。问题是我使用选择的 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 回答