Change size of content on page
I have a program that is taking in PDFs that have a lot of pages and placing a watermark with page number and other information on it on the bottom of the page.
Every once in a while the watermark covers something important, and so we have to go back and find the original to see what the watermark is covering up.
I am curious if there is a way to shrink the page content, reduce it by half an inch, and then put the watermark in the area that is guaranteed to be empty.
SIGN IN To post a reply.
11 Replies
CM
Chinnu Muniyappan
Syncfusion Team
October 4, 2016 10:45 AM UTC
Hi Andy,
Thank you for contacting Syncfusion support.
| Every once in a while the watermark covers something important, and so we have to go back and find the original to see what the watermark is covering up. | You can also reduce the watermark transparency by using PdfGraphics.SetTransparency. please find the below code snippet and documentation link for more details.
| |
| I am curious if there is a way to shrink the page content, reduce it by half an inch, and then put the watermark in the area that is guaranteed to be empty. | We have created workaround sample for shrink the existing page content by using PdfTemplate. Please refer the below sample for more details. Sample link: |
Please let us know if you have any concern.
Regards,
Chinnu
AD
Andy Dillbeck
October 4, 2016 06:41 PM UTC
So I'm trying it out with the transparency set at 50% ( SetTransparency(0.5F) ) and I'm getting some weird results with font.
When I run the program on my computer the inserted text is kind of fuzzy and thick.
AD
Andy Dillbeck
October 4, 2016 06:52 PM UTC
So I'm trying it out with the transparency set at 50% ( SetTransparency(0.5F) ) and I'm getting some weird results with font.



When I run the program on my computer the inserted text is kind of fuzzy and thick.

Then on the production machine the font is very sharp, but the transparency doesn't work right

When I print it to xps it looks fine, and then print it to paper from there it looks like I want it to

Any way to figure out what is going on with the fonts? I tried both the standard fonts
Dim font As Syncfusion.Pdf.Graphics.PdfFont = New Syncfusion.Pdf.Graphics.PdfStandardFont(Syncfusion.Pdf.Graphics.PdfFontFamily.Helvetica, 12.0F)
and with TrueType fonts
Dim font As Syncfusion.Pdf.Graphics.PdfFont = New Syncfusion.Pdf.Graphics.PdfTrueTypeFont(New Drawing.Font("Arial", 14))
with the same results.
CM
Chinnu Muniyappan
Syncfusion Team
October 5, 2016 08:50 AM UTC
Hi Andy,
Thank you for your update.
We are not able to reproduce the mentioned transparency issue, however we have created a sample for using PdfBurshes to draw the watermark texts, please refer the below code snippet and sample for more details.
| 'Draw the watermark lpage.Graphics.DrawString("Page : " + i.ToString(), font, PdfBrushes.Black, New PointF(200, lpage.Size.Height - 40)) |
Sample link:
Please try this sample and let us know your result.
If still you are facing the same issue, could you please provide us your output document and environment details it would be more helpful for us to investigate further on this.
Regards,
Chinnu
AD
Andy Dillbeck
October 5, 2016 03:54 PM UTC
Here's the code I was using, which included PDFPens and PDFBrushes:
Dim g As Syncfusion.Pdf.Graphics.PdfGraphics = lpage.Graphics
Dim state As Syncfusion.Pdf.Graphics.PdfGraphicsState = g.Save
g.SetTransparency(0.5F)
g.DrawString(i & " " & companycity & " - " & Now.ToString("M-d-yy HH:mm:ss tt"), font, Syncfusion.Pdf.Graphics.PdfPens.Black, Syncfusion.Pdf.Graphics.PdfBrushes.Black, New System.Drawing.PointF(30, lpage.Graphics.ClientSize.Height - 35))
I switched it to
g.DrawString(i & " " & companycity & " - " & Now.ToString("M-d-yy HH:mm:ss tt"), font, Syncfusion.Pdf.Graphics.PdfBrushes.Black, New System.Drawing.PointF(30, lpage.Graphics.ClientSize.Height - 35))
and now it looks like this:

Attachment: 10516112222andyd273new_2dd7b62b.zip
AD
Andy Dillbeck
October 5, 2016 06:53 PM UTC
> We have created workaround sample for shrink the existing page content by using PdfTemplate. Please refer the below sample for more details.
So I got this working, and it looks like it might work better than the transparency thing, but I'm curious if there is a way to save over the source PDF with the resized PDF.
I've tried:
Dim newDoc As New Syncfusion.Pdf.PdfDocument
Dim newPage As Syncfusion.Pdf.PdfPage
Dim template As Syncfusion.Pdf.Graphics.PdfTemplate
Dim lDoc As New Syncfusion.Pdf.Parsing.PdfLoadedDocument(path)
For Each lpage As Syncfusion.Pdf.PdfPageBase In lDoc.Pages
newDoc.PageSettings.Size = lpage.Size
newDoc.PageSettings.Margins.All = 0
newPage = newDoc.Pages.Add
template = lpage.CreateTemplate
newPage.Graphics.DrawPdfTemplate(template, System.Drawing.PointF.Empty, New System.Drawing.SizeF(newPage.Size.Width, newPage.Size.Height - 36))
Dim g As Syncfusion.Pdf.Graphics.PdfGraphics = newPage.Graphics
Dim state As Syncfusion.Pdf.Graphics.PdfGraphicsState = g.Save
g.DrawString(i & " " & companycity & " - " & Now.ToString("M-d-yy HH:mm:ss tt"), font, Syncfusion.Pdf.Graphics.PdfBrushes.Black, New System.Drawing.PointF(30, lpage.Graphics.ClientSize.Height - 35))
newPage.Graphics.Restore()
i += 1
Next
lDoc.Close()
lDoc = Nothing
newDoc.Save(path)
newDoc.Close()
and it works if I write to a new path, but I really want to write over the same file. However If I try to save to the same path I get an error: 'Unexpected token Eof before 925'
So far I've tried deleting the original file first, saving to a new path and then overwriting the original, and using file streams instead of paths, but none of them seem to work.
What's the right way to do it?
CM
Chinnu Muniyappan
Syncfusion Team
October 6, 2016 01:11 PM UTC
Hi Andy,
Thank you for your update.
| Here's the code I was using, which included PDFPens and PDFBrushes: Dim g As Syncfusion.Pdf.Graphics.PdfGraphics = lpage.Graphics Dim state As Syncfusion.Pdf.Graphics.PdfGraphicsState = g.Save g.SetTransparency(0.5F) g.DrawString(i & " " & companycity & " - " & Now.ToString("M-d-yy HH:mm:ss tt"), font, Syncfusion.Pdf.Graphics.PdfPens.Black, Syncfusion.Pdf.Graphics.PdfBrushes.Black, New System.Drawing.PointF(30, lpage.Graphics.ClientSize.Height - 35)) I switched it to g.DrawString(i & " " & companycity & " - " & Now.ToString("M-d-yy HH:mm:ss tt"), font, Syncfusion.Pdf.Graphics.PdfBrushes.Black, New System.Drawing.PointF(30, lpage.Graphics.ClientSize.Height - 35)) | We are not able to reproduce the issue and the attached output document was preserved as excepted in Adobe reader please find the below screenshot for more details. Could you please provide us the below details, it would more helpful for us to investigate further on this. 1.PDF reader which is using for viewing the PDF document 2.System environment details 3.Cultrue setting details | |
| and it works if I write to a new path, but I really want to write over the same file. However If I try to save to the same path I get an error: 'Unexpected token Eof before 925' So far I've tried deleting the original file first, saving to a new path and then overwriting the original, and using file streams instead of paths, but none of them seem to work. What's the right way to do it? | We have created a workaround sample for overwriting the existing PDF document to new PDF document, please refer the below code snippet and sample for more details.
Sample link : |
Please let us know if you have any concern.
Regards,
Chinnu
AD
Andy Dillbeck
October 10, 2016 08:09 PM UTC
So I have this mostly working, except that on some PDF's stuff on the edges gets cut off, especially along the top. Is there a way to reliably get it to fit the page?
Attachment: 101016132006andyd273new_fd1b1908.zip
The attached document has abnormally sized pages, and I think that may be part of the reason things are getting trimmed.
Here's my code for putting the watermark on the bottom:
Dim lDoc As New Syncfusion.Pdf.Parsing.PdfLoadedDocument(path)
Dim newDoc As New Syncfusion.Pdf.PdfDocument
Dim newPage As Syncfusion.Pdf.PdfPage
Dim template As Syncfusion.Pdf.Graphics.PdfTemplate
Dim font As Syncfusion.Pdf.Graphics.PdfFont = New Syncfusion.Pdf.Graphics.PdfStandardFont(Syncfusion.Pdf.Graphics.PdfFontFamily.Helvetica, 12.0F)
Dim i As Integer = 1
For Each lpage As Syncfusion.Pdf.PdfPageBase In lDoc.Pages
newDoc.PageSettings.Size = lpage.Size
newDoc.PageSettings.Margins.All = 0
newPage = newDoc.Pages.Add
template = lpage.CreateTemplate
newPage.Graphics.DrawPdfTemplate(template, System.Drawing.PointF.Empty, New System.Drawing.SizeF(lpage.Size.Width - 10, lpage.Size.Height - 35))
Dim g As Syncfusion.Pdf.Graphics.PdfGraphics = newPage.Graphics
Dim state As Syncfusion.Pdf.Graphics.PdfGraphicsState = g.Save
g.DrawString(i & " " & companycity & " - " & Now.ToString("M-d-yy HH:mm:ss tt"), font, Syncfusion.Pdf.Graphics.PdfBrushes.Black, New System.Drawing.PointF(30, lpage.Graphics.ClientSize.Height - 35))
newPage.Graphics.Restore()
i += 1
Next
Dim ms As New System.IO.MemoryStream
newDoc.Save(ms)
lDoc.Close()
newDoc.Close()
System.IO.File.WriteAllBytes(path, ms.ToArray)
ms.Dispose()
and here's my code for printing:
Dim viewer As New Syncfusion.Windows.Forms.PdfViewer.PdfDocumentView
viewer.Load(InputfilePath)
Dim File As String = Split(InputfilePath, "\")(4)
Dim print As New System.Windows.Forms.PrintDialog()
print.Document = viewer.PrintDocument
print.Document.DocumentName = File
print.Document.Print()
viewer.Unload()
viewer.Dispose()
Attachment: 101016132006andyd273new_fd1b1908.zip
CM
Chinnu Muniyappan
Syncfusion Team
October 11, 2016 11:25 AM UTC
Hi Andy,
Thank you for your update.
We have created a sample for achieving your requirement, please refer the below code snippet and sample for more details.
| 'Create a new PDF section Dim section As PdfSection For Each lpage As Syncfusion.Pdf.PdfPageBase In lDoc.Pages 'Add the section section = newDoc.Sections.Add() 'Set the page size section.PageSettings.Size = lpage.Size 'Set margins section.PageSettings.Margins.All = 0 'Add a new page newPage = section.Pages.Add() 'Create template. template = lpage.CreateTemplate |
Sample link:
Please let us know if you have any concern.
Regards,
Chinnu
AD
Andy Dillbeck
October 14, 2016 07:53 PM UTC
This appears to all be resolved.
I didn't use the section thing, I just specified that the everything should use Syncfusion.Pdf.PdfPageSize.Letter, which makes sure that everything fits on a page even if it has to be squished slightly.
Dim lDoc As New Syncfusion.Pdf.Parsing.PdfLoadedDocument(path)
Dim newDoc As New Syncfusion.Pdf.PdfDocument
newDoc.PageSettings.Size = Syncfusion.Pdf.PdfPageSize.Letter
newDoc.PageSettings.Margins.All = 0
Dim newPage As Syncfusion.Pdf.PdfPage
Dim template As Syncfusion.Pdf.Graphics.PdfTemplate
Dim font As Syncfusion.Pdf.Graphics.PdfFont = New Syncfusion.Pdf.Graphics.PdfStandardFont(Syncfusion.Pdf.Graphics.PdfFontFamily.Helvetica, 12.0F)
Dim i As Integer = 1
For Each lpage As Syncfusion.Pdf.PdfPageBase In lDoc.Pages
newPage = newDoc.Pages.Add
template = lpage.CreateTemplate
newPage.Graphics.DrawPdfTemplate(template, New System.Drawing.PointF(5, 5), New System.Drawing.SizeF(Syncfusion.Pdf.PdfPageSize.Letter.Width - 10, Syncfusion.Pdf.PdfPageSize.Letter.Height - 35))
Dim g As Syncfusion.Pdf.Graphics.PdfGraphics = newPage.Graphics
Dim state As Syncfusion.Pdf.Graphics.PdfGraphicsState = g.Save
g.DrawString(i & " " & companycity & " - " & Now.ToString("M-d-yy HH:mm:ss tt"), font, Syncfusion.Pdf.Graphics.PdfBrushes.Black, New System.Drawing.PointF(30, Syncfusion.Pdf.PdfPageSize.Letter.Height - 35))
newPage.Graphics.Restore()
i += 1
Next
Dim ms As New System.IO.MemoryStream
newDoc.Save(ms)
lDoc.Close()
newDoc.Close()
System.IO.File.WriteAllBytes(path, ms.ToArray)
ms.Dispose()
CM
Chinnu Muniyappan
Syncfusion Team
October 17, 2016 10:14 AM UTC
Hi Andy,
While using PdfPageSize.Letter was working fine because the letter size large than the default page size but the input document contains various page sizes, please refer the below screenshot, while using sections the output document also preserves the same size as input PDF page size, so we are suggesting you to use PdfSection to create a document with various page size.
Regards,
Chinnu
SIGN IN To post a reply.
- 11 Replies
- 2 Participants
-
AD Andy Dillbeck
- Oct 3, 2016 03:32 PM UTC
- Oct 17, 2016 10:14 AM UTC