我正在尝试编写一个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);
我还应该指出,这个问题只发生在相对较小的图像上。似乎图像越小,影响越大。任何帮助将不胜感激。
答案 0 :(得分: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();
希望它有所帮助!