public PdfPrinter(string path, Layout layout, Pdf.PdfFontSetting fontSetting) { Rectangle pdfPageSize; switch (layout.PageSize) { case PageSize.A5Portrait: pdfPageSize = iTextPageSize.A5; break; case PageSize.A4Landscape: pdfPageSize = iTextPageSize.A4.Rotate(); break; default: throw new NotSupportedException(); } _font = fontSetting.Font.CreateBaseFont(RunDirection.Vertical, false); _isPsuedoVertical = fontSetting.Font.PsuedoVertical; _headerFont = fontSetting.Font.CreateBaseFont(RunDirection.Horizontal, true); _latinFont = fontSetting.LatinFont.CreateBaseFont(RunDirection.Horizontal, true); _latinBaselineOffsetRatio = fontSetting.LatinBaselineOffsetRatio; _nombreFont = fontSetting.LatinFont.CreateBaseFont(RunDirection.Horizontal, true); _symbolFont = fontSetting.SymbolFont.CreateBaseFont(RunDirection.Vertical, false); _doc = new Document(pdfPageSize); _isMirrorEnabled = layout.Mirroring; _initialX = pdfPageSize.Width - layout.RightMargin - layout.FontSize / 2; _initialXMirrored = layout.RightMargin + layout.FontSize * 2 + layout.Leading * (layout.NumberOfLines - 2); _initialY = pdfPageSize.Height - layout.TopMargin; _pageX = pdfPageSize.Width - layout.PageNumberRightMargin; _pageY = pdfPageSize.Height - layout.PageNumberTopMargin; _pageFontSize = 10.5F; _pageHeaderOffset = layout.PageHeaderOffset; _writer = PdfWriter.GetInstance(_doc, new FileStream(path, FileMode.Create)); _writer.RunDirection = PdfWriter.RUN_DIRECTION_RTL; _writer.ViewerPreferences = PdfWriter.DirectionR2L | (layout.Mirroring ? PdfWriter.PageLayoutTwoPageRight : 0); _writer.SetFullCompression(); _fontSizeChanged = true; _pageNumber = 0; }