PDFsharp & MigraDoc Foundation https://forum.pdfsharp.net/ |
|
First page is blackened after adding watermark https://forum.pdfsharp.net/viewtopic.php?f=2&t=4260 |
Page 1 of 1 |
Author: | sjsyk123456 [ Thu Jun 10, 2021 9:12 am ] | ||
Post subject: | First page is blackened after adding watermark | ||
Page is blackened after adding watermark in case of some pdf files . Please see attached image. What could be the reason , and possible fix. Here is code Page is blackened after adding watermark in case of some pdf files . Please see attached image. What could be the reason , and possible fix. [see the blacked out page image][1] [1]: https://i.stack.imgur.com/vPw4u.png It does not happen for all the files but for some files only. Code: var _pdfInBytes = File.ReadAllBytes("c:\\test\\test123.pdf");
string watermarkText = "This watermark text on left side"; var coordinates = new Point(25, 200); using (var pdfNewDoc = new PdfDocument()) { using (var pdfImport = PdfReader.Open(new MemoryStream(_pdfInBytes, true), PdfDocumentOpenMode.Import)) { if (pdfImport.PageCount == 0) { return; } foreach (var pg in pdfImport.Pages) { pdfNewDoc.AddPage(pg); } var page = pdfNewDoc.Pages[0]; // overlapping trick #165910 var xOffset = 100.0; for (var index = 0; index < page.Contents.Elements.Count; index++) { var stream = page.Contents.Elements.GetDictionary(index).Stream; var x = GetMinXOffsetDraft(stream.ToString()); if (xOffset > x){ { xOffset = x; } } xOffset *= 0.6; // magic number :) // blank page trick #165910 if (page.CropBox.IsEmpty && !page.MediaBox.IsEmpty){ page.CropBox = page.MediaBox; } // Get an XGraphics object for drawing beneath the existing content var gfx = XGraphics.FromPdfPage(page, XGraphicsPdfPageOptions.Prepend); var tf = new XTextFormatter(gfx); var xFont = new XFont("Arial", 10, XFontStyle.Regular); // Get watermark text size var wmSize = gfx.MeasureString(watermarkText, xFont); // Middle Y coordinate var wmY = (gfx.PageSize.Height - wmSize.Width) / 2; var coords = new XPoint(page.CropBox.Location.X + (xOffset < coordinates.X ? xOffset : coordinates.X), page.CropBox.Location.Y + (coordinates.Y > wmY ? coordinates.Y :wmY)); // Define a rotation transformation at the center of the page gfx.TranslateTransform(coordinates.X, coordinates.Y); gfx.RotateTransform(90); gfx.TranslateTransform(-coordinates.X, -coordinates.Y); // Create brush var brushColor = Color.Red; var brush1= new XSolidBrush(XColor.FromArgb(brushColor.A, brushColor.R, brushColor.G, brushColor.B)); brush1.Overprint = false; XBrush brush = new XSolidBrush(XColor.FromArgb(brushColor.A, brushColor.R, brushColor.G, brushColor.B)); var rect = new XRect(coordinates.X, coordinates.Y, gfx.PageSize.Height -coordinates.Y, coordinates.X); tf.DrawString(watermarkText, xFont, brush, rect); byte[] outputBytes = null; using (var outStream = new MemoryStream()) { pdfNewDoc.Save(outStream, false); outputBytes = outStream.ToArray(); } File.WriteAllBytes("c:\\test\\test-"+DateTime.Now.ToString("ddmmyyyyhhmmss") +".pdf", outputBytes); } }
|
Author: | TH-Soft [ Thu Jun 10, 2021 11:57 am ] |
Post subject: | Re: First page is blackened after adding watermark |
Hi! Which version of PDFsharp do you use? Why don't you use the Issue Submission Template? Maybe it makes a difference to wrap the watermark code with "gfx.Save()" and "gfx.Restore()". P.S.: Also discussed on SO: https://stackoverflow.com/q/67919243/162529 |
Page 1 of 1 | All times are UTC |
Powered by phpBB® Forum Software © phpBB Group https://www.phpbb.com/ |