I am currently implementing Android PrintService, that is able to print PDFs via thermal printers. I managed to convert PDF to bitmap using PDFRenderer and I am even able to print the document.
The thing is, the document (bitmap) is not full page width.
I am receiving the document in 297x420 resolution and I am using printer with 58mm paper.
This is how I process the document (written in C#, using Xamarin):
// Create PDF renderer
var pdfRenderer = new PdfRenderer(fileDescriptor);  
// Open page
PdfRenderer.Page page = pdfRenderer.OpenPage(index);
// Create bitmap for page
Bitmap bitmap = Bitmap.CreateBitmap(page.Width, page.Height, Bitmap.Config.Argb8888);
// Now render page into bitmap
page.Render(bitmap, null, null, PdfRenderMode.ForPrint);
And then, converting the bitmap into ESC/POS:
// Initialize result
List<byte> result = new List<byte>();
// Init ESC/POS
result.AddRange(new byte[] { 0x1B, 0x33, 0x21 });
// Init ESC/POS bmp commands (will be reapeated)
byte[] escBmp = new byte[] { 0x1B, 0x2A, 0x01, (byte)(bitmap.Width % 256), (byte)(bitmap.Height / 256) };
// Iterate height
for (int i = 0; i < (bitmap.Height / 24 + 1); i++)
{
    // Add bitmapp commands to result
    result.AddRange(escBmp);
    // Init pixel color
    int pixelColor;
    // Iterate width
    for (int j = 0; j < bitmap.Width; j++)
    {
        // Init data
        byte[] data = new byte[] { 0x00, 0x00, 0x00 };
        for (int k = 0; k < 24; k++)
        {
            if (((i * 24) + k) < bitmap.Height)
            {
                // Get pixel color
                pixelColor = bitmap.GetPixel(j, (i * 24) + k);
                // Check pixel color
                if (pixelColor != 0)
                {
                    data[k / 8] += (byte)(128 >> (k % 8));
                }
            }
        }
        // Add data to result
        result.AddRange(data);
    }
    // Add some... other stuff
    result.AddRange(new byte[] { 0x0D, 0x0A });
}
// Return data
return result.ToArray();
Current result looks like this:

Thank you all in advance.
 
    