I have been developing this code, based on the official documentation of QGIS and some codes in gis.stackexchange. But my problem is that I don't know where to establish my height and width to make a A4 size.. I am using the Text Editor of QGIS, version 2.14 (QgsComposition using the constructor with mapRenderer has been working before)
from qgis.core import *
from qgis.utils import iface
from PyQt4.QtGui import QColor
from PyQt4 import Qt
municipios = QgsVectorLayer("MyLayer\\MUNICIPIOS.shp","Municipios","ogr")
l = QgsMapLayerRegistry.instance().addMapLayer(municipios)
el_renderer = iface.mapCanvas().mapRenderer()
composition = QgsComposition(el_renderer)
composition.setPlotStyle(QgsComposition.Print)
lst = [municipios.id()] # add ID of every layer
el_renderer.setLayerSet(lst)
el_renderer.setOutputSize(QSize(composition.paperWidth(), composition.paperHeight()), composition.printResolution())
x, y = 0,0
w, h = composition.paperWidth(), composition.paperHeight()
composer_map = QgsComposerMap(composition, x ,y, w, h)
composer_map.setNewExtent(el_renderer.extent())
composition.addComposerMap(composer_map)
composition.addItem(composer_map)
print "\n QgsComposerMap funciona"
printer = QPrinter()
printer.setOutputFormat(QPrinter.PdfFormat)
printer.setOutputFileName("C:\\output\\my_pdf.pdf")
printer.setPaperSize(QSizeF(composition.paperWidth(), composition.paperHeight()), QPrinter.Millimeter)
printer.setFullPage(True)
printer.setColorMode(QPrinter.Color)
printer.setResolution(composition.printResolution())
pdfPainter = QPainter(printer)
paperRectMM = printer.pageRect(QPrinter.Millimeter)
paperRectPixel = printer.pageRect(QPrinter.DevicePixel)
composition.render(pdfPainter, paperRectPixel, paperRectMM)
pdfPainter.end()
print "\n se ha exportado a PDF"