Magento create invoice programmatically

$order_id = 1;
 $order = Mage::getModel("sales/order")->load($order_id);

try {

if(!$order->canInvoice())
 {
 Mage::throwException(Mage::helper('core')->__('Cannot create an invoice...'));
 }

$invoice = Mage::getModel('sales/service_order', $order)->prepareInvoice();

if (!$invoice->getTotalQty()) {
 Mage::throwException(Mage::helper('core')->__('Cannot create an invoice without products.'));
 }

$invoice->setRequestedCaptureCase(Mage_Sales_Model_Order_Invoice::NOT_CAPTURE);

$invoice->register();
 $transactionSave = Mage::getModel('core/resource_transaction')
 ->addObject($invoice)
 ->addObject($invoice->getOrder());

$transactionSave->save();

}
 catch (Mage_Core_Exception $e) {
 echo $e->getMessage();
 }