} // End Sub CropPdf2 static void CropPdf3(double page_width, double page_height) { string fn = @"D:\username\Desktop\0001 Altstetten - GB01 H602 - OG14.pdf"; // fn = @"D:\username\Desktop\0030 Sentimatt - GB01 Sentimatt - EG00.pdf"; fn = @"D:\username\Desktop\Altstetten_1_50.pdf"; // The current implementation of PDFsharp has only one layout of the graphics context. // The origin(0, 0) is top left and coordinates grow right and down. // The unit of measure is always point (1 / 72 inch). // 1 pt = 0,0352778 cm // 1 pt = 0,352778 mm // 1 inch = 2,54 cm // 1/72 inch to cm = 0,035277777777777776 cm // A0: // w: 2384 pt = 84,10222 cm // h: 3370 pt = 118,8861 cm // A3: // w: 842 pt = 29,7039 cm // h: 1191 pt = 42,01583 cm // A4: // 595 pt to cm = 20,9903 w // 842 pt to cm = 29,7039 h // A0 page_width = 2384; page_height = 3370; // A3 page_width = 842; page_height = 1191; // A4 page_width = 595; page_height = 842; PdfMargin margin = new PdfMargin(mm2pt(10)); // 1cm in pt double crop_width = page_width - margin.Left - margin.Right; double crop_height = page_height - margin.Top - margin.Bottom; using (PdfSharp.Drawing.XPdfForm sourceForm = PdfSharp.Drawing.XPdfForm.FromFile(fn)) { sourceForm.PageNumber = 1; int numHori = (int)System.Math.Ceiling(sourceForm.Page.Width.Point / crop_width); int numVerti = (int)System.Math.Ceiling(sourceForm.Page.Height.Point / crop_height); PdfSharp.Drawing.XRect pageDimenstions = new PdfSharp.Drawing.XRect(0, 0, sourceForm.Page.Width, sourceForm.Page.Height); using (PdfSharp.Pdf.PdfDocument destDocument = new PdfSharp.Pdf.PdfDocument()) { for (int iverti = 0; iverti < numVerti; iverti++) { for (int ihori = 0; ihori < numHori; ihori++) { PdfSharp.Pdf.PdfPage destPage = destDocument.AddPage(); destPage.Width = crop_width; destPage.Height = crop_height; PdfSharp.Drawing.XRect cropRect = new PdfSharp.Drawing.XRect(ihori * crop_width, iverti * crop_height, sourceForm.Page.Width, sourceForm.Page.Height); using (PdfSharp.Drawing.XGraphics destGFX = PdfSharp.Drawing.XGraphics.FromPdfPage(destPage)) { destGFX.DrawImageCropped(sourceForm, cropRect, pageDimenstions, PdfSharp.Drawing.XGraphicsUnit.Point); } // End Using destGFX } // ihori } // iverti // destDocument.Save("chopped.pdf"); using (System.IO.MemoryStream ms = new System.IO.MemoryStream()) { destDocument.Save(ms); ms.Position = 0; using (PdfSharp.Drawing.XPdfForm croppedImages = PdfSharp.Drawing.XPdfForm.FromStream(ms)) { using (PdfSharp.Pdf.PdfDocument finalDestination = new PdfSharp.Pdf.PdfDocument()) { PdfSharp.Drawing.XFont font = new PdfSharp.Drawing.XFont("Arial", 8); for (int i = 0; i < croppedImages.PageCount; ++i) { PdfSharp.Pdf.PdfPage targetPage = finalDestination.AddPage(); targetPage.Width = page_width; targetPage.Height = page_height; PdfSharp.Drawing.XRect pageSize = new PdfSharp.Drawing.XRect(0, 0, targetPage.Width, targetPage.Height); try { croppedImages.PageIndex = i; using (PdfSharp.Drawing.XGraphics targetGFX = PdfSharp.Drawing.XGraphics.FromPdfPage(targetPage)) { #if DEBUG_ME targetGFX.DrawRectangle(XBrushes.Honeydew, pageSize); #endif PdfSharp.Drawing.XRect targetRect = new PdfSharp.Drawing.XRect(margin.Left, margin.Top, crop_width, crop_height); targetGFX.DrawImage(croppedImages, targetRect, targetRect, PdfSharp.Drawing.XGraphicsUnit.Point); DrawBorder(targetGFX, targetPage.Width.Point, targetPage.Height.Point, margin); DrawCrosshairs(targetGFX, targetPage.Width.Point, targetPage.Height.Point, margin); // int numHori = (int)System.Math.Ceiling(sourceForm.Page.Width / crop_width); // int numVerti = (int)System.Math.Ceiling(sourceForm.Page.Height / crop_height); int col = i % numHori; int row = i / numHori; // targetGFX.DrawString($"Column {col + 1}/{numHori} Row {row + 1}/{numVerti}, Page {i + 1}/{croppedImages.PageCount}", font, PdfSharp.Drawing.XBrushes.Black, margin.Left + 5, targetPage.Height.Point - margin.Bottom + font.Size + 5); targetGFX.DrawString($"Spalte {col + 1}/{numHori} Zeile {row + 1}/{numVerti}, Seite {i + 1}/{croppedImages.PageCount}", font, PdfSharp.Drawing.XBrushes.Black, margin.Left + 5, targetPage.Height.Point - margin.Bottom + font.Size + 5); } // End using targetGFX } catch (System.Exception ex) { System.Console.WriteLine(croppedImages.PageIndex); System.Console.WriteLine(ex.Message); } } // Next i finalDestination.Save("CropPdf3.pdf"); } // End Using finalDestination } // End Using croppedImages } // End Using ms } // End Using destDocument } // End Using sourceForm } // End Sub CropPdf3
public static void CropPdf1(double crop_width, double crop_height) { string fn = @"D:\username\Desktop\0001 Altstetten - GB01 H602 - OG14.pdf"; // fn = @"D:\username\Desktop\0030 Sentimatt - GB01 Sentimatt - EG00.pdf"; // The current implementation of PDFsharp has only one layout of the graphics context. // The origin(0, 0) is top left and coordinates grow right and down. // The unit of measure is always point (1 / 72 inch). // 1 pt = 0,0352778 cm // 1 pt = 0,352778 mm // 1 inch = 2,54 cm // 1/72 inch to cm = 0,035277777777777776 cm // A0: // w: 2384 pt = 84,10222 cm // h: 3370 pt = 118,8861 cm // A3: // w: 842 pt = 29,7039 cm // h: 1191 pt = 42,01583 cm // A4: // 595 pt to cm = 20,9903 w // 842 pt to cm = 29,7039 h using (PdfSharp.Drawing.XPdfForm sourceForm = PdfSharp.Drawing.XPdfForm.FromFile(fn)) { sourceForm.PageNumber = 1; int numHori = (int)System.Math.Ceiling(sourceForm.Page.Width.Point / crop_width); int numVerti = (int)System.Math.Ceiling(sourceForm.Page.Height.Point / crop_height); PdfSharp.Drawing.XRect pageDimenstions = new PdfSharp.Drawing.XRect(0, 0, sourceForm.Page.Width.Point, sourceForm.Page.Height.Point); // Crop the PDF - HAS NO EFFECT... // sourceForm.Page.CropBox = new PdfSharp.Pdf.PdfRectangle(cropDim); using (PdfSharp.Pdf.PdfDocument destDocument = new PdfSharp.Pdf.PdfDocument()) { for (int iverti = 0; iverti < numHori; iverti++) { for (int ihori = 0; ihori < numHori; ihori++) { PdfSharp.Pdf.PdfPage destPage = destDocument.AddPage(); destPage.Width = sourceForm.Page.Width; destPage.Height = sourceForm.Page.Height; PdfSharp.Drawing.XRect cropDim = new PdfSharp.Drawing.XRect(ihori * crop_width, iverti * crop_height, crop_width, crop_height); PdfSharp.Drawing.XRect cropRect = new PdfSharp.Drawing.XRect(cropDim.X, destPage.Height.Point - cropDim.Height - cropDim.Y, cropDim.Width, cropDim.Height); using (PdfSharp.Drawing.XGraphics destGFX = PdfSharp.Drawing.XGraphics.FromPdfPage(destPage)) { destGFX.DrawImage(sourceForm, pageDimenstions); destGFX.DrawRectangle(PdfSharp.Drawing.XPens.DeepPink, cropDim); } // End Using destGFX // PdfSharp.Drawing.XRect cropRect1 = new PdfSharp.Drawing.XRect(cropRect.X - 30, cropRect.Y - 30, cropRect.Width + 30, cropRect.Height + 30); destPage.CropBox = new PdfSharp.Pdf.PdfRectangle(cropRect); // destPage.MediaBox = new PdfSharp.Pdf.PdfRectangle(cropRect1); // destPage.CropBox = new PdfSharp.Pdf.PdfRectangle(new XPoint(cropDim.X, destPage.Height - cropDim.Height - cropDim.Y), // new XSize(cropDim.Width, cropDim.Height)); } // Next ihori } // Next iverti destDocument.Save("CropPdf1.pdf"); } // End Using gfx } // End Using document } // End Sub CropPdf1
public static void ReadPdf() { // Get a fresh copy of the sample PDF file string filename = @"C:\Program Files\Microsoft SQL Server\MSSQL13.SQLEXPRESS\R_SERVICES\doc\manual\R-intro.pdf"; // Create the output document PdfSharp.Pdf.PdfDocument outputDocument = new PdfSharp.Pdf.PdfDocument(); // Show single pages // (Note: one page contains two pages from the source document) outputDocument.PageLayout = PdfSharp.Pdf.PdfPageLayout.SinglePage; /* * PdfSharp.Drawing.XFont font = * new PdfSharp.Drawing.XFont("Verdana", 8, PdfSharp.Drawing.XFontStyle.Bold); * PdfSharp.Drawing.XStringFormat format = new PdfSharp.Drawing.XStringFormat(); * format.Alignment = PdfSharp.Drawing.XStringAlignment.Center; * format.LineAlignment = PdfSharp.Drawing.XLineAlignment.Far; */ PdfSharp.Drawing.XGraphics gfx; PdfSharp.Drawing.XRect box; // Open the external document as XPdfForm object PdfSharp.Drawing.XPdfForm form = PdfSharp.Drawing.XPdfForm.FromFile(filename); for (int idx = 0; idx < form.PageCount; idx += 2) { // Add a new page to the output document PdfSharp.Pdf.PdfPage page = outputDocument.AddPage(); page.Orientation = PdfSharp.PageOrientation.Landscape; double width = page.Width; double height = page.Height; int rotate = page.Elements.GetInteger("/Rotate"); gfx = PdfSharp.Drawing.XGraphics.FromPdfPage(page); // Set page number (which is one-based) form.PageNumber = idx + 1; box = new PdfSharp.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, PdfSharp.Drawing.XBrushes.Red, box, format); */ if (idx + 1 < form.PageCount) { // Set page number (which is one-based) form.PageNumber = idx + 2; box = new PdfSharp.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, PdfSharp.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 string makeIt(string out_name, string source, ID_MACROS.IDS.PAGE_MODE md) { if (md == ID_MACROS.IDS.PAGE_MODE.mode1) { string filename = source; PdfDocument outputDocument = new PdfDocument(); PdfSharp.Drawing.XFont font = new PdfSharp.Drawing.XFont("Times New Roman", 10, PdfSharp.Drawing.XFontStyle.Regular); PdfSharp.Drawing.XStringFormat format = new PdfSharp.Drawing.XStringFormat(); format.Alignment = PdfSharp.Drawing.XStringAlignment.Near; format.LineAlignment = PdfSharp.Drawing.XLineAlignment.Far; PdfSharp.Drawing.XGraphics gfx; PdfSharp.Drawing.XRect box; PdfSharp.Drawing.XPdfForm form = PdfSharp.Drawing.XPdfForm.FromFile(filename); for (int idx = 0; idx < form.PageCount; idx++) { PdfPage page = outputDocument.AddPage(); double width = page.Width; double height = page.Height; gfx = PdfSharp.Drawing.XGraphics.FromPdfPage(page); form.PageNumber = idx + 1; box = new PdfSharp.Drawing.XRect(0, 0, width, height); gfx.DrawImage(form, box); box.Inflate(0, -30); } filename = out_name; outputDocument.Save(filename); return(filename); } else { int[] lst = PDF_MAKER.PDF_MAKER.Page_Number_List; string filename = source; PdfDocument outputDocument = new PdfDocument(); PdfSharp.Drawing.XFont font = new PdfSharp.Drawing.XFont("Times New Roman", 10, PdfSharp.Drawing.XFontStyle.Regular); PdfSharp.Drawing.XStringFormat format = new PdfSharp.Drawing.XStringFormat(); format.Alignment = PdfSharp.Drawing.XStringAlignment.Center; format.LineAlignment = PdfSharp.Drawing.XLineAlignment.Far; PdfSharp.Drawing.XGraphics gfx; PdfSharp.Drawing.XRect box; PdfSharp.Drawing.XPdfForm form = PdfSharp.Drawing.XPdfForm.FromFile(filename); for (int idx = 0; idx < form.PageCount; idx++) { PdfPage page = outputDocument.AddPage(); double width = page.Width; double height = page.Height; gfx = PdfSharp.Drawing.XGraphics.FromPdfPage(page); form.PageNumber = idx + 1; box = new PdfSharp.Drawing.XRect(0, 0, width, height); gfx.DrawImage(form, box); box.Inflate(0, -30); if (lst[idx] == 2) { gfx.DrawString(String.Format("{1}", filename, idx + 1), font, PdfSharp.Drawing.XBrushes.Black, box, format); } else if (lst[idx] == 1) { gfx.DrawString(String.Format("{1}", filename, PAGE_MODE_II_NUMBERS.RomanNumbers.convert(idx + 1)), font, PdfSharp.Drawing.XBrushes.Black, box, format); } else { } } filename = out_name; outputDocument.Save(filename); return(filename); } }