If i print document with virtual printers, like pdf printer of Mircrosoft, margins are correct.
Instead, if i print files on a real printer, margins are wrong and they are less or bigger compared to original pdf.
here there is my code:
- Code: Select all
private void PrintListe(string Formato, int Npagine)
{
int minP = 0, maxP = 0;
if (Formato == "Fronte")
{
minP = 1;
maxP = 1;
}
if (Formato == "Retro")
{
minP = 2;
maxP = 2;
}
int nstampa = 0;
do
{
if (Formato == "Fronte-Retro")
{
minP = 1;
maxP = 2;
var docum = new PdfDocument(@"Tmp/list" + nstampa + ".pdf");
docum.Pages.ReArrange(new int[] { 1, 0 });
docum.SaveToFile(@"Tmp/list" + nstampa + ".pdf");
docum.Close();
}
PdfDocument doc = new PdfDocument();
doc.LoadFromFile(@"Tmp/list" + nstampa + ".pdf");
doc.PrintFromPage = minP;
doc.PrintToPage = maxP;
doc.PrinterName = Pagine.Impostazioni.getPrinterName();
PaperSize paper = new PaperSize("A3", (int)PdfPageSize.A3.Width, (int)PdfPageSize.A3.Height);
paper.RawKind = (int)PaperKind.A3;
switch (Pagine.Impostazioni.getPaperSize())
{
case "A2":
{
paper = new PaperSize("A2", (int)PdfPageSize.A2.Width, (int)PdfPageSize.A2.Height);
paper.RawKind = (int)PaperKind.A2;
break;
}
case "A3":
{
paper = new PaperSize("A3", (int)PdfPageSize.A3.Width, (int)PdfPageSize.A3.Height);
paper.RawKind = (int)PaperKind.A3;
break;
}
case "A4":
{
paper = new PaperSize("A4", (int)PdfPageSize.A4.Width, (int)PdfPageSize.A4.Height);
paper.RawKind = (int)PaperKind.A4;
break;
}
case "A5":
{
paper = new PaperSize("A5", (int)PdfPageSize.A5.Width, (int)PdfPageSize.A5.Height);
paper.RawKind = (int)PaperKind.A5;
break;
}
case "A6":
{
paper = new PaperSize("A6", (int)PdfPageSize.A6.Width, (int)PdfPageSize.A6.Height);
paper.RawKind = (int)PaperKind.A6;
break;
}
}
doc.PrintDocument.DefaultPageSettings.PaperSize = paper;
doc.PrintSettings.SelectSinglePageLayout(PdfSinglePageScalingMode.ActualSize, false);
doc.PrintDocument.PrintController=new StandardPrintController();
PrintDocument printDoc = doc.PrintDocument;
printDoc.DefaultPageSettings.Margins.Left =0;
printDoc.DefaultPageSettings.Margins.Right = 0;
printDoc.DefaultPageSettings.Margins.Top = 0;
printDoc.DefaultPageSettings.Margins.Bottom = 0;
printDoc.PrinterSettings.DefaultPageSettings.Margins.Left = 0;
printDoc.PrinterSettings.DefaultPageSettings.Margins.Right = 0;
printDoc.PrinterSettings.DefaultPageSettings.Margins.Top = 0;
printDoc.PrinterSettings.DefaultPageSettings.Margins.Bottom = 0;
printDoc.DocumentName= "list" + nstampa + ".pdf";
printDoc.Print();
doc.Close();
nstampa++;
} while (nstampa < Npagine);
}
here there is the gap between orginal file and the printed file:
Orginal PDF:front 1,7sx 15,5h - back 1,7sx e 4,7h
Printed File:front1,9sx (+2) 15,65h (+1,5) - back 1,9sx (+2) 5,1h (+4)