コード例 #1
0
        PdfDocument PrepareDocumentForBatch(PdfDocument document, PdfSettingsBatchDto set, string countryInSettings)
        {
            var      settings = set.Settings;
            Document doc      = new Document();
            PdfPage  page     = document.Pages[0];

            Section sec = doc.AddSection();


            sec.PageSetup.LeftMargin   = Unit.FromInch(settings.LeftMargin);
            sec.PageSetup.RightMargin  = Unit.FromInch(settings.RightMargin);
            sec.PageSetup.TopMargin    = Unit.FromInch(settings.TopMargin);
            sec.PageSetup.BottomMargin = Unit.FromInch(settings.BottomMargin);

            //date
            if (settings.ShowDate)
            {
                AddDate(sec, settings);
            }

            //address
            if (settings.ShowAddress)
            {
                AddAddress(sec, settings, set.CountryInSettings);
            }

            // body
            AddBody(sec, settings);

            //signature
            if (settings.ShowSingnature)
            {
                AddSignature(sec, settings);
            }

            //fields
            if (settings.HasReceiptStub)
            {
                FillFields(document, set.Fields, settings, countryInSettings);
            }
            DocumentRenderer docRenderer = new DocumentRenderer(doc);

            docRenderer.PrepareDocument();
            int pages = docRenderer.FormattedDocument.PageCount;

            for (int j = 1; j <= pages; ++j)
            {
                using (XGraphics gfx = XGraphics.FromPdfPage(page))
                {
                    // HACK²
                    gfx.MUH = PdfFontEncoding.Unicode;


                    docRenderer.RenderPage(gfx, j);
                }
            }
            return(document);
        }
コード例 #2
0
 /// <summary>
 /// used for batch
 /// if not do this, all fields in pdf document will have the same values
 /// </summary>
 /// <param name="document"></param>
 void RenameAnnotationFields(PdfDocument document, PdfSettingsBatchDto set, string country, int unicNum)
 {
     for (int i = 0; i < document.Pages.Count; i++)
     {
         PdfAnnotations anotations = document.Pages[i].Annotations;
         for (int j = 0; j < anotations.Count; j++)
         {
             PdfAnnotation obj;
             if (!string.IsNullOrEmpty(GetValueByName(anotations[j].Title, set.Fields, set.Settings, country)))
             {
                 obj       = anotations[j];
                 obj.Title = $"{anotations[j].Title}_{unicNum}";
             }
         }
     }
 }