public static void CropPdf() { double baseY = 0; PdfSharpCore.Pdf.PdfDocument outputDocument = new PdfSharpCore.Pdf.PdfDocument(); PdfSharpCore.Pdf.PdfPage page = outputDocument.AddPage(); //page.Height = PdfSharpCore.Drawing.XUnit.FromMillimeter(baseY + 10).Point; double height = PdfSharpCore.Drawing.XUnit.FromMillimeter(baseY + 10).Point; page.CropBox = new PdfSharpCore.Pdf.PdfRectangle( new PdfSharpCore.Drawing.XPoint(0, page.Height - height), new PdfSharpCore.Drawing.XSize(page.Width, height)); }
public FileResult ExportToPDF(Guid id) { const string facename = "Cambria"; PdfDocument document = new PdfDocument(); PdfSharpCore.Pdf.PdfPage page = document.AddPage(); document.Info.Title = "Student Information"; document.Info.Author = "Ankitkumar Singh"; document.Info.Subject = "Student Card"; document.Info.Keywords = "student-card"; XGraphics gfx = XGraphics.FromPdfPage(page); XFont font = new XFont(facename, 20, XFontStyle.BoldItalic); Student studentDetails = _studentRepository.GetStudent(id); XFont fontRegular = new XFont(facename, 14, XFontStyle.Regular); XFont fontBold = new XFont(facename, 14, XFontStyle.Bold); gfx.DrawString("Student Card", font, XBrushes.Black, new XRect(0, 40, page.Width, page.Height), XStringFormats.TopCenter); gfx.DrawString("Student Id : " + studentDetails.Id, fontRegular, XBrushes.Black, 200, 140); gfx.DrawString("Name : " + studentDetails.FirstName + " " + studentDetails.LastName, fontBold, XBrushes.Black, 200, 165); gfx.DrawString("Contact : " + studentDetails.Contact, fontBold, XBrushes.Black, 200, 190); gfx.DrawString("Subject Id : " + studentDetails.PhdSubjectId, fontBold, XBrushes.Black, 200, 215); gfx.DrawString("Subject Name : " + studentDetails.phdSubject.Name, fontBold, XBrushes.Black, 200, 240); XImage image = XImage.FromFile("D:\\Ankitkumar-Singh\\Asp-Core-Mvc\\test finally done\\Asp-Core-Test\\Asp-Core-Test\\wwwroot\\images\\qrcode.png"); gfx.DrawImage(image, 20, 120, 150, 150); const string filename = "UserIdentityCard.pdf"; document.Save(filename); string ReportURL = "UserIdentityCard.pdf"; byte[] FileBytes = System.IO.File.ReadAllBytes(ReportURL); return(File(FileBytes, "application/pdf")); }
static void OldSimpleMain(string[] args) { PdfSharpCore.Fonts.GlobalFontSettings.FontResolver = new FontResolver(); MigraDocCore.DocumentObjectModel.MigraDoc.DocumentObjectModel.Shapes .ImageSource.ImageSourceImpl = new PdfSharpCore.ImageSharp.ImageSharpImageSource <SixLabors.ImageSharp.PixelFormats.Rgba32>(); using (PdfSharpCore.Pdf.PdfDocument document = new PdfSharpCore.Pdf.PdfDocument()) { document.Info.Title = "Family Tree"; document.Info.Author = "FamilyTree Ltd. - Stefan Steiger"; document.Info.Subject = "Family Tree"; document.Info.Keywords = "Family Tree, Genealogical Tree, Genealogy, Bloodline, Pedigree"; document.ViewerPreferences.Direction = PdfSharpCore.Pdf.PdfReadingDirection.LeftToRight; PdfSharpCore.Pdf.PdfPage page = document.AddPage(); // page.Width = PdfSettings.PaperFormatSettings.Width // page.Height = PdfSettings.PaperFormatSettings.Height page.Width = 500; page.Height = 1000; page.Orientation = PdfSharpCore.PageOrientation.Landscape; double mid = page.Width / 2; double textBoxWidth = 200; double halfTextBoxWidth = textBoxWidth / 2; using (PdfSharpCore.Drawing.XGraphics gfx = PdfSharpCore.Drawing.XGraphics.FromPdfPage(page)) { gfx.MUH = PdfSharpCore.Pdf.PdfFontEncoding.Unicode; PdfSharpCore.Drawing.Layout.XTextFormatter tf = new PdfSharpCore.Drawing.Layout.XTextFormatter(gfx); tf.Alignment = PdfSharpCore.Drawing.Layout.XParagraphAlignment.Left; PdfSharpCore.Drawing.Layout.XTextFormatterEx2 etf = new PdfSharpCore.Drawing.Layout.XTextFormatterEx2(gfx); string fn = @"C:\Users\username\Pictures\4_Warning_Signs_Of_Instability_In_Russia1.png"; // fn = @"C:\Users\username\Pictures\62e867ba-9bb7-40d0-b01f-57f7cc951929.jpg"; // DrawImg(fn, gfx, 10, 10); double dblWidth = 1.0; string strHtmlColor = "#FF00FF"; PdfSharpCore.Drawing.XColor LineColor = XColorHelper.FromHtml(strHtmlColor); PdfSharpCore.Drawing.XPen pen = new PdfSharpCore.Drawing.XPen(LineColor, dblWidth); double dblX1 = 100; double dblY1 = 100; double dblX2 = 200; double dblY2 = 200; gfx.DrawLine(pen, dblX1, dblY1, dblX2, dblY2); double rectX = 100; double rectY = 100; double rectWidth = 200; double rectHeight = 100; PdfSharpCore.Drawing.XRect rect = new PdfSharpCore.Drawing.XRect(rectX, rectY , rectWidth, rectHeight ); PdfSharpCore.Drawing.XFont font = new PdfSharpCore.Drawing.XFont("Arial" , 12.0, PdfSharpCore.Drawing.XFontStyle.Bold ); int lastFittingChar = 0; double neededHeight = 0.0; string text = @"I bi dr Gummiboum U schtah eifach so chli da So wie jedä Gummiboum 'sch im Fau aues, woni cha U i nime d Tage so wie si sii U si chömed u gö wider verbii U aues wird anders oder blibt wies isch gsii Ja i nime d Tage so we si sii U si chömed u gö wider verbii Aues wird anders oder blibt wies isch gsii Ja aues wird anders oder blibt wies isch gsii I bi dr Gummiboum U verstoube fängs ä chli Oh Gummiboum I bin ä geile huere Gummiboum öppert mues ne schliesslich sii"; etf.PrepareDrawString(text, font, rect, out lastFittingChar, out neededHeight); System.Console.WriteLine(lastFittingChar); System.Console.WriteLine(neededHeight); string foo = text.Substring(0, lastFittingChar); System.Console.WriteLine(foo); tf.DrawString(text , font , PdfSharpCore.Drawing.XBrushes.Black , rect , PdfSharpCore.Drawing.XStringFormats.TopLeft ); //gfx.DrawRectangle(PdfSharpCore.Drawing.XBrushes.HotPink, rect); gfx.DrawRectangle(pen, rect); } // End Using gfx byte[] baPdfDocument; using (System.IO.MemoryStream ms = new System.IO.MemoryStream()) { document.Save(ms, false); ms.Flush(); // baPdfDocument = new byte[ms.Length]; // ms.Seek(0, System.IO.SeekOrigin.Begin); // ms.Read(baPdfDocument, 0, (int)ms.Length); baPdfDocument = ms.ToArray(); } // End Using ms System.IO.File.WriteAllBytes("FamilyTree.pdf", baPdfDocument); //document.Save(filename); } // End Using document System.Console.WriteLine(System.Environment.NewLine); System.Console.WriteLine(" --- Press any key to continue --- "); System.Console.ReadKey(); } // End Sub Main
static void Main(string[] args) { // TfsRemover.RemoveTFS(); TreeInfo ti = GetAncestors(); int maxNumPeople = (int)System.Math.Pow(2.0, (double)ti.MaxGeneration); System.Console.WriteLine(maxNumPeople); System.Collections.Generic.Dictionary <int, System.Collections.Generic.Dictionary <int , DataPoint> > dict = new System.Collections.Generic.Dictionary <int , System.Collections.Generic.Dictionary <int, DataPoint> >(); PdfSharpCore.Fonts.GlobalFontSettings.FontResolver = new FontResolver(); MigraDocCore.DocumentObjectModel.MigraDoc.DocumentObjectModel.Shapes .ImageSource.ImageSourceImpl = new PdfSharpCore.ImageSharp.ImageSharpImageSource <Rgba32>(); using (PdfSharpCore.Pdf.PdfDocument document = new PdfSharpCore.Pdf.PdfDocument()) { document.Info.Title = "Family Tree"; document.Info.Author = "FamilyTree Ltd. - Stefan Steiger"; document.Info.Subject = "Family Tree"; document.Info.Keywords = "Family Tree, Genealogical Tree, Genealogy, Bloodline, Pedigree"; document.ViewerPreferences.Direction = PdfSharpCore.Pdf.PdfReadingDirection.LeftToRight; PdfSharpCore.Pdf.PdfPage page = document.AddPage(); // page.Width = PdfSettings.PaperFormatSettings.Width // page.Height = PdfSettings.PaperFormatSettings.Height const double GOLDEN_RATIO = 1.61803398875; // https://en.wikipedia.org/wiki/Golden_ratio double marginLeft = 125; double marginTop = marginLeft; double textBoxWidth = 200; double textBoxHeight = textBoxWidth / GOLDEN_RATIO; double textBoxVdistance = textBoxHeight / (GOLDEN_RATIO / (GOLDEN_RATIO * GOLDEN_RATIO)); double textBoxLargeHdistance = textBoxWidth / (GOLDEN_RATIO * GOLDEN_RATIO); double textBoxSmallHdistance = textBoxLargeHdistance / (GOLDEN_RATIO * GOLDEN_RATIO); int numGenerationsToList = 5; int maxGenerationIndex = numGenerationsToList - 1; int numItems = (int)System.Math.Pow(2, maxGenerationIndex); page.Orientation = PdfSharpCore.PageOrientation.Landscape; page.Width = marginLeft * 2 + numItems * textBoxWidth + (numItems / 2) * textBoxSmallHdistance + (numItems / 2 - 1) * textBoxLargeHdistance ; page.Height = marginTop * 2 + numGenerationsToList * textBoxHeight + (numGenerationsToList - 1) * textBoxVdistance ; double dblLineWidth = 1.0; string strHtmlColor = "#FF00FF"; PdfSharpCore.Drawing.XColor lineColor = XColorHelper.FromHtml(strHtmlColor); PdfSharpCore.Drawing.XPen pen = new PdfSharpCore.Drawing.XPen(lineColor, dblLineWidth); PdfSharpCore.Drawing.XFont font = new PdfSharpCore.Drawing.XFont("Arial" , 12.0, PdfSharpCore.Drawing.XFontStyle.Bold ); using (PdfSharpCore.Drawing.XGraphics gfx = PdfSharpCore.Drawing.XGraphics.FromPdfPage(page)) { gfx.MUH = PdfSharpCore.Pdf.PdfFontEncoding.Unicode; PdfSharpCore.Drawing.Layout.XTextFormatter tf = new PdfSharpCore.Drawing.Layout.XTextFormatter(gfx); tf.Alignment = PdfSharpCore.Drawing.Layout.XParagraphAlignment.Left; PdfSharpCore.Drawing.Layout.XTextFormatterEx2 etf = new PdfSharpCore.Drawing.Layout.XTextFormatterEx2(gfx); for (int generationNumber = maxGenerationIndex; generationNumber > -1; --generationNumber) { dict[generationNumber] = new System.Collections.Generic.Dictionary <int, DataPoint>(); int num = (int)System.Math.Pow(2.0, generationNumber); for (int i = 0; i < num; ++i) { if (generationNumber != maxGenerationIndex) { var dp1 = dict[generationNumber + 1][i * 2]; var dp2 = dict[generationNumber + 1][i * 2 + 1]; var rect1 = dp1.rect; var rect2 = dp2.rect; double xNew = (rect1.TopLeft.X + rect2.TopRight.X) / 2.0; double yNew = marginTop + generationNumber * textBoxHeight + generationNumber * textBoxVdistance; gfx.DrawLine(pen, xNew, yNew + rect1.Height, rect1.X + rect1.Width / 2.0, rect1.Y); gfx.DrawLine(pen, xNew, yNew + rect1.Height, rect2.X + rect2.Width / 2.0, rect2.Y); xNew = xNew - rect1.Width / 2.0; dict[generationNumber][i] = new DataPoint() { Person = ( from itemList in ti.ls[generationNumber] where itemList.Id == dp1.Person.Child select itemList ).FirstOrDefault(), rect = new DataStructures.Rectangle(xNew, yNew, rect1.Width, rect1.Height) }; } else { System.Console.WriteLine($"i: {i}"); int numSmallSpaces = (i + 1) / 2; System.Console.WriteLine($"numSmallSpaces: {numSmallSpaces}"); int numPairs = i / 2; System.Console.WriteLine($"numPairs: {numPairs}"); double rectX = marginLeft + i * textBoxWidth + numSmallSpaces * textBoxSmallHdistance + numPairs * textBoxLargeHdistance ; double rectY = marginTop + generationNumber * textBoxHeight + generationNumber * textBoxVdistance ; dict[generationNumber][i] = new DataPoint() { Person = ti.ls[generationNumber][i], rect = new DataStructures.Rectangle(rectX, rectY, textBoxWidth, textBoxHeight) }; } gfx.DrawRectangle(pen, dict[generationNumber][i].rect.ToXRect()); string text = $@"Generation {generationNumber} Person {i}"; text = dict[generationNumber][i].Person.composite_name; tf.DrawString(text , font , PdfSharpCore.Drawing.XBrushes.Black , dict[generationNumber][i].rect.ToXRect() , PdfSharpCore.Drawing.XStringFormats.TopLeft ); } // Next i } // Next generationNumber } // End Using gfx byte[] baPdfDocument; using (System.IO.MemoryStream ms = new System.IO.MemoryStream()) { document.Save(ms, false); ms.Flush(); // baPdfDocument = new byte[ms.Length]; // ms.Seek(0, System.IO.SeekOrigin.Begin); // ms.Read(baPdfDocument, 0, (int)ms.Length); baPdfDocument = ms.ToArray(); } // End Using ms System.IO.File.WriteAllBytes("FamilyTree.pdf", baPdfDocument); //document.Save(filename); } // End Using document System.Console.WriteLine(System.Environment.NewLine); System.Console.WriteLine(" --- Press any key to continue --- "); System.Console.ReadKey(); } // End Sub Main
public static void ReadPdf() { // Get a fresh copy of the sample PDF file string filename = "FamilyTree.pdf"; // Create the output document PdfSharpCore.Pdf.PdfDocument outputDocument = new PdfSharpCore.Pdf.PdfDocument(); // Show single pages // (Note: one page contains two pages from the source document) outputDocument.PageLayout = PdfSharpCore.Pdf.PdfPageLayout.SinglePage; /* * PdfSharpCore.Drawing.XFont font = * new PdfSharpCore.Drawing.XFont("Verdana", 8, PdfSharpCore.Drawing.XFontStyle.Bold); * PdfSharpCore.Drawing.XStringFormat format = new PdfSharpCore.Drawing.XStringFormat(); * format.Alignment = PdfSharpCore.Drawing.XStringAlignment.Center; * format.LineAlignment = PdfSharpCore.Drawing.XLineAlignment.Far; */ PdfSharpCore.Drawing.XGraphics gfx; PdfSharpCore.Drawing.XRect box; // Open the external document as XPdfForm object PdfSharpCore.Drawing.XPdfForm form = PdfSharpCore.Drawing.XPdfForm.FromFile(filename); for (int idx = 0; idx < form.PageCount; idx += 2) { // Add a new page to the output document PdfSharpCore.Pdf.PdfPage page = outputDocument.AddPage(); page.Orientation = PdfSharpCore.PageOrientation.Landscape; double width = page.Width; double height = page.Height; int rotate = page.Elements.GetInteger("/Rotate"); gfx = PdfSharpCore.Drawing.XGraphics.FromPdfPage(page); // Set page number (which is one-based) form.PageNumber = idx + 1; box = new PdfSharpCore.Drawing.XRect(0, 0, width / 2, height); // Draw the page identified by the page number like an image gfx.DrawImage(form, box); // Write document file name and page number on each page box.Inflate(0, -10); /* * gfx.DrawString(string.Format("- {1} -", filename, idx + 1), * font, PdfSharpCore.Drawing.XBrushes.Red, box, format); */ if (idx + 1 < form.PageCount) { // Set page number (which is one-based) form.PageNumber = idx + 2; box = new PdfSharpCore.Drawing.XRect(width / 2, 0, width / 2, height); // Draw the page identified by the page number like an image gfx.DrawImage(form, box); // Write document file name and page number on each page box.Inflate(0, -10); /* * gfx.DrawString(string.Format("- {1} -", filename, idx + 2), * font, PdfSharpCore.Drawing.XBrushes.Red, box, format); */ } } // Save the document... filename = "TwoPagesOnOne_tempfile.pdf"; outputDocument.Save(filename); // ...and start a viewer. System.Diagnostics.Process.Start(filename); }
public static void Test(string textToPrint, string fontDirectory, string outputDirectory) { char[] textBuffer = textToPrint.ToCharArray(); PdfSharpCore.Pdf.PdfDocument s_document = null; // Create a temporary file s_document = new PdfSharpCore.Pdf.PdfDocument(); s_document.Info.Title = "PDFsharp XGraphic Sample"; s_document.Info.Author = "Stefan Lange"; s_document.Info.Subject = "Created with code snippets that show the use of graphical functions"; s_document.Info.Keywords = "PDFsharp, XGraphics"; PdfSharpCore.Pdf.PdfPage page = s_document.AddPage(); using (PdfSharpCore.Drawing.XGraphics g = PdfSharpCore.Drawing.XGraphics.FromPdfPage(page)) { g.SmoothingMode = PdfSharpCore.Drawing.XSmoothingMode.HighQuality; // g.Clear(System.Drawing.Color.White); g.ScaleTransform(1.0F, -1.0F); // Flip the Y-Axis g.TranslateTransform(0.0F, -(float) 500); // Translate the drawing area accordingly DevPdfTextPrinter _currentTextPrinter = new DevPdfTextPrinter(); _currentTextPrinter.ScriptLang = new ScriptLang(ScriptTagDefs.Thai.Tag); _currentTextPrinter.Typeface = Helpers.FontHelper.GetTestTypeface(fontDirectory); _currentTextPrinter.FontSizeInPoints = 32; _currentTextPrinter.FillBackground = true; _currentTextPrinter.DrawOutline = false; //----------------------- _currentTextPrinter.HintTechnique = HintTechnique.None; _currentTextPrinter.PositionTechnique = PositionTechnique.None; _currentTextPrinter.TargetGraphics = g; //render at specific pos int lineSpacingPx = (int) System.Math.Ceiling(_currentTextPrinter.FontLineSpacingPx); float x_pos = 0, y_pos = y_pos = lineSpacingPx * 2; //start 1st line //test draw multiple lines for (int i = 0; i < 3; ++i) { _currentTextPrinter.DrawString( textBuffer, 0, textBuffer.Length, x_pos, y_pos ); //draw top to bottom y_pos -= lineSpacingPx; } //transform back g.ScaleTransform(1.0F, -1.0F); // Flip the Y-Axis g.TranslateTransform(0.0F, -(float) 500); // Translate the drawing area accordingly } // End Using g outputDirectory = System.IO.Path.Combine(outputDirectory, "FontRendering.pdf"); s_document.Save(outputDirectory); } // End Sub Test