PDFsharp рдФрд░ MigraDoc Foundation (рдмреБрдирд┐рдпрд╛рджреА рдмрд╛рддреЛрдВ)

рд▓реЗрдЦ рдХреЗ рдмрд╛рдж рд╕реЗ, рдЬрд┐рд╕рдХреЗ рдХрд╛рд░рдг рдореБрдЭреЗ рдПрдХ рдирд┐рдордВрддреНрд░рдг рдорд┐рд▓рд╛, рд╡рд╣ рдХрд╣реАрдВ рдЧрд╛рдпрдм рд╣реЛ рдЧрдпрд╛, рдореИрдВ рдЗрд╕реЗ рдлрд┐рд░ рд╕реЗ рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВред

рдкреАрдбреАрдПрдл рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдирд┐: рд╢реБрд▓реНрдХ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреА рдХрдо рд╕рдВрдЦреНрдпрд╛ рдХреЛ рджреЗрдЦрддреЗ рд╣реБрдП .рдиреЗрдЯ рдФрд░ рд░реВрд╕реА рдореЗрдВ рдЙрдирдХреА рдЕрдкрд░реНрдпрд╛рдкреНрдд рдХрд╡рд░реЗрдЬ рдХреЗ рдХрд╛рд░рдг, рдореИрдВ PDFsharp рдФрд░ MigradDoc рдЬреИрд╕реА рд╢рд╛рдирджрд╛рд░ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВред

рдЪрд▓реЛ рд╢реБрд░реВ рд╕реЗ рд╣реА рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ - рд╕реНрд░реЛрдд рдХреЛ рдпрд╣рд╛рдВ рдпрд╛ рдпрд╣рд╛рдВ рдбрд╛рдЙрдирд▓реЛрдб рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ
рдЕрдм рдЕрдкрдиреЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЗ рд▓рд┐рдВрдХ рдЬреЛрдбрд╝реЗрдВ:
using MigraDoc; using PdfSharp; using MigraDoc.DocumentObjectModel; using MigraDoc.Rendering; using PdfSharp.Pdf; 

рдПрдХ рдирдпрд╛ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдмрдирд╛рдПрдБ
 Document document = new Document(); 

рдкреНрд░рддреНрдпреЗрдХ рдорд╛рдЗрдЧреНрд░рдбреЙрдХ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдореЗрдВ рд╕реНрд╡рддрдВрддреНрд░ рдЦрдВрдб рд╣реЛрддреЗ рд╣реИрдВ, рдЬрд┐рд╕рдХрд╛ рдЕрдкрдирд╛ рдкреНрд░рд╛рд░реВрдк рд╣реЛ рд╕рдХрддрд╛ рд╣реИред
рдЕрдиреБрднрд╛рдЧ рдирд┐рд░реНрдорд╛рдг:
 Section section = document.AddSection(); 
рдЗрд╕ рддрд░рд╣ рдХреЗ рдЖрд░рдВрднреАрдХрд░рдг рдХреЗ рдмрд╛рдж, рдЕрдиреБрднрд╛рдЧ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдирд╛ - рд╣рдо рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдХреЗ рднрд╛рдЧ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВред
рдЕрдиреБрднрд╛рдЧ рдореЗрдВ Add, AddParagraph (), AddImage (), AddTable () , рдЖрджрд┐ рдЬреИрд╕реЗ рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдлрд╝рдВрдХреНрд╢рдВрд╕ рд╣реИрдВ, рд╕рд╛рде рд╣реА рдкреЗрдЬрд╕реЗрдЯрдЕрдк рд╕реЗрдХреНрд╢рди рдХреЗ рдкреНрд░рд╛рд░реВрдк рдХреЛ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд░реНрдЧ рд╣реИ ред
рд╕реНрд╡рд░реВрдк рдкрд░рд┐рд╡рд░реНрддрди:
 section.PageSetup.PageFormat = PageFormat.5;//   section.PageSetup.Orientation = Orientation.Portrait;// section.PageSetup.BottomMargin = 10;//  section.PageSetup.TopMargin = 10;//  

рдРрдб (рдкрд░рдо) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЬрд╛рдирдХрд╛рд░реА рдпрд╛ рддреЛ рдЬреЛрдбрд╝ рджреА рдЬрд╛рддреА рд╣реИ, рдЬрд╣рд╛рдВ рдкрд░рдо рдПрдХ рдкреИрд░рд╛рдЧреНрд░рд╛рдл (рдкреИрд░рд╛рдЧреНрд░рд╛рдл), рдПрдХ рдЪрд┐рддреНрд░ (рдЫрд╡рд┐), рдПрдХ рддрд╛рд▓рд┐рдХрд╛ (рддрд╛рд▓рд┐рдХрд╛), рдПрдХ рдЪрд╛рд░реНрдЯ (рдЪрд╛рд░реНрдЯ) рдпрд╛ рдПрдХ рдкрд╛рда рдлреНрд░реЗрдо (TextFrame) рд╣реИ
 Paragraph paragraph =new Paragraph(); section.Add(paragraph); 

рдпрд╛ рдЕрдиреБрднрд╛рдЧ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рдЙрджрд╛рд╣рд░рдг рдХреЗ рдмрд╛рдж
 Paragraph paragraph = section.AddParagraph(); 

рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдкреНрд░рддреНрдпреЗрдХ рдкреИрд░рд╛рдЧреНрд░рд╛рдл рдХреЗ рд▓рд┐рдП рдПрдХ рд╡реНрдпрдХреНрддрд┐рдЧрдд рдкреНрд░рд╛рд░реВрдк (рд╡рд░реНрдЧ рдкреНрд░рд╛рд░реВрдк) рдФрд░ рд╢реИрд▓реА (рд╡рд░реНрдЧ рд╢реИрд▓реА) рд╕реЗрдЯ рдХрд░рдирд╛ рднреА рд╕рдВрднрд╡ рд╣реИ:
 paragraph.Format.Font.Color = Color.FromCmyk(100, 30, 20, 50); 

рдкреНрд░рддреНрдпреЗрдХ рдЕрдиреБрдЪреНрдЫреЗрдж рдХреЗ рд▓рд┐рдП, рдЖрдк рдЬрд╛рдирдХрд╛рд░реА рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ:
 Text text = new Text("text"); paragraph.AddText("text");// paragraph.AddFormattedText("formatted text", styleName);//   paragraph.Add(text);//     paragraph.AddBookmark("Bookmark");// paragraph.AddChar('c');// paragraph.AddDateField("10.10.2010");// paragraph.AddFootnote("Footnote");//  //    

рд╣рдордиреЗ рдЖрдзрд╛рд░ рдПрдХрддреНрд░ рдХрд░ рд▓рд┐рдпрд╛ рд╣реИ, рдЕрдм рдпрд╣ рдПрдХ рдкреВрд░реНрдг PDF рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдореЗрдВ рдмрджрд▓рдирд╛ рд╣реИ, рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП PdfDocumentRenderer рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ:
 pdfRenderer = new PdfDocumentRenderer(true, PdfFontEmbedding.Always); pdfRenderer.Document = document; pdfRenderer.RenderDocument(); pdfRenderer.PdfDocument.Save(filePath);//  

рдЖрдкрдХреЛ рдЙрди рдлреЛрдВрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛ рд╕рдХрддреА рд╣реИ рдЬреЛ рдУрдПрд╕ рдореЗрдВ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рд╕реНрдерд╛рдкрд┐рдд рдирд╣реАрдВ рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, DejaVuSansMono.ttf ред рдЖрдк рдЙрдкрд░реЛрдХреНрдд рдлрд╝реЙрдиреНрдЯ рдХреА рдлрд╝рд╛рдЗрд▓ рдХреЛ рдкрд╣рд▓реЗ рдЙрд╕реА рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рд░рдЦрдХрд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬрд╣рд╛рдБ рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЧреНрдп рдлрд╝рд╛рдЗрд▓ рд╣реИ:
 Uri uri = new Uri(@"file://" + System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetEntryAssembly().Location) + @"\DejaVuSansMono.ttf"); XPrivateFontCollection pfc = XPrivateFontCollection.Global; try { pfc.Add(uri, "./#DejaVu Sans Mono"); } catch (Exception) {} pdfRenderer.DocumentRenderer.PrivateFonts = pfc; 

рдпрджрд┐ рдЖрдкрдХреЛ рдЕрдкрдиреЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдореЗрдВ рдмрдирд╛рдП рдЧрдП рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рддреЛ MigraDoc.Rendering.Windows.DocumentPreview , MigraDoc рдореЗрдВ рдмрдирд╛рдП рдЧрдП рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реЛрдВ рдХреЛ рдЖрдЙрдЯрдкреБрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдирд┐рдпрдВрддреНрд░рдг, рд╣рдорд╛рд░реА рд╕рд╣рд╛рдпрддрд╛ рдХрд░реЗрдЧрд╛ред рдкрд╣рд▓реЗ рдЖрдкрдХреЛ рдЗрд╕реЗ рдлреЙрд░реНрдо рдпрд╛ WPF рд╡рд┐рдВрдбреЛ рдкрд░ рд░рдЦрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдФрд░ рдлрд┐рд░ рдирд┐рдореНрди рдХреЛрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ:
 Document doc = new Document(); doc = oDocument.Clone(); preview.Ddl = DdlWriter.WriteToString(doc); 

рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдмрдирд╛рдП рдЧрдП рдкреАрдбреАрдПрдл рджрд╕реНрддрд╛рд╡реЗрдЬреЛрдВ рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ рдЙрдкрд▓рдмреНрдз рдирд╣реАрдВ рд╣реИред
рдореЗрд░рд╛ рд╕реБрдЭрд╛рд╡ рд╣реИ рдХрд┐ рдЖрдк рдХреНрд▓реЛрди () рдлрд╝рдВрдХреНрд╢рди рдкрд░ рдзреНрдпрд╛рди рджреЗрдВ, рдЬреЛ рдХрд┐ рдХрд┐рд╕реА рднреА рдорд╛рдЗрдЧреНрд░рдбреЛрдХ рдСрдмреНрдЬреЗрдХреНрдЯ (рджрд╕реНрддрд╛рд╡реЗрдЬрд╝, рдЕрдиреБрднрд╛рдЧ, рдкреИрд░рд╛рдЧреНрд░рд╛рдл, рдЖрджрд┐) рдХреЛ рдЕрд╕рд╛рдЗрди рдХрд░рддреЗ рд╕рдордп рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ, рдпрджрд┐ рдЖрдк рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдкрд╣рд▓реА рд╡рд╕реНрддреБ рдХреЛ рдмрджрд▓рдиреЗ рд╕реЗ рд╡рд╣ рднреА рдмрджрд▓ рдЬрд╛рдПрдЧрд╛ рдЬреЛ рдкрд╣рд▓реЗ рдХреЛ рд╕реМрдВрдкрд╛ рдЧрдпрд╛ рдерд╛ред
MigraDoc рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдореБрджреНрд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдк MigraDocPrintDocument рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
 MigraDocPrintDocument migraDocPrint = new MigraDocPrintDocument(preview.Renderer); migraDocPrint.Print(); 

рд▓реЗрдХрд┐рди рдЗрд╕ рддрд░рд╣ рдХреА рд╕рдорд╕реНрдпрд╛ рдХреЛ рджреЗрдЦрд╛ рдЧрдпрд╛ рдХрд┐ рд╕рд░реНрд╡рд░ рд╕реЗ рдкреНрд░рд┐рдВрдЯ рдХрд░рддреЗ рд╕рдордп рдпрд╣ рд╡рд┐рдзрд┐ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддреА рд╣реИ, рд╕реНрдерд╛рдиреАрдп рдкреНрд░рд┐рдВрдЯрд░ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдореБрджреНрд░рдг рд╕рд╛рдорд╛рдиреНрдп рд╣реИред
рдЗрд╕рд▓рд┐рдП, рдПрдХ рд╡рд┐рдХрд▓реНрдк рдХреЗ рд░реВрдк рдореЗрдВ, рдЖрдк рдкреНрд░рд┐рдВрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдлреЙрдХреНрд╕рд┐рдЯ рд░реАрдбрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
 pdfDocumentRenderer.PdfDocument.Save(@"temp.pdf"); Process.Start(@"Resources\Foxit Reader.exe", @"/p temp.pdf"); 

рдЕрдВрдд рдореЗрдВ, рдореИрдВ рдпрд╣ рдХрд╣рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдХрд┐ рдЗрд╕ рдкрдж рд╕реЗ рд╕рднреА рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдореИрдВ рдЗрд╕ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдореЗрдВ рд╕рдмрд╕реЗ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдФрд░ рдкрд░реНрдпрд╛рдкреНрдд рдЕрд╡рд╕рд░ рдХреЗ рд░реВрдк рдореЗрдВ рдмрд╕ рдЧрдпрд╛ред


Source: https://habr.com/ru/post/In150059/


All Articles