Glad it finally works. On the group issue, what I mean is loop through all pageItems, not each type separately. Here is the main function follow my logic: function layersCheck(doc) { var oLayers = doc.layers, len = oLayers.length, oLayer; for (; len-- > 0;) { oLayer = oLayers[len]; oLayer.locked && oLayer.locked = false; // if locked, unlock it !oLayer.visible && (oLayer.visible = true, oLayer.remove()); // if not visible, delete it } } function extractText_RasterizeAll(doc) { var t = (doc.legacyTextItems.convertToNative(), doc.textFrames), l = t.length, layer = doc.layers.add(), group = layer.groupItems.add(), i = -1, rastOptions = new RasterizeOptions, len, p, oLayer; // collect text objects, legacyTextItems have been converted to native textItems for (; ++i < l; t.move(layer, ElementPlacement.PLACEATBEGINNING)); // group all other objects, remove empty layers while (doc.layers.length > 1) { oLayer = doc.layers[doc.layers.length - 1]; for (p = oLayer.pageItems.length; p-- > 0; oLayer.pageItems .move(group, ElementPlacement.PLACEATBEGINNING)); oLayer.remove(); } // rasterize the group rastOptions.antiAliasingMethod = AntiAliasingMethod.None; rastOptions.clippingMask = false; rastOptions.resolution = 300; rastOptions.convertSpotColors = false; rastOptions.transparency = true; doc.rasterize(group, group.visibleBounds, rastOptions); } layersCheck(activeDocument); extractText_RasterizeAll(activeDocument); The result: a single raster image object and all text objects in one layer. Note: Above code does not handle sublayers.
... View more