Do you own a Debenu Quick PDF Library version 7, 8, 9, 10, 11, 12, 13 or iSEDQuickPDF license? Upgrade to Debenu Quick PDF Library 14 today!

Debenu Quick PDF Library - PDF SDK Community Forum Homepage
Forum Home Forum Home > For Users of the Library > Sample Code
  New Posts New Posts RSS Feed - Watermark...
  FAQ FAQ  Forum Search   Register Register  Login Login

Watermark...

 Post Reply Post Reply
Author
Message
Ingo View Drop Down
Moderator Group
Moderator Group
Avatar

Joined: 29 Oct 05
Status: Offline
Points: 3524
Post Options Post Options   Thanks (0) Thanks(0)   Quote Ingo Quote  Post ReplyReply Direct Link To This Post Topic: Watermark...
    Posted: 29 Dec 05 at 4:42PM
Hi!

Here a complete routine which can stamp watermarks on pdf-files. A combined text with date, rotated if you want and with transparency. You can choose the corner on the page and the pages itself, too. One thing if you want to do it in a better way: Set a new layer for the watermark - so you can remove it later easier. The routine works together with a form i don't post here. On the form all settings can be activated and selected... and with the start button the routine below runs.

procedure TForm5.SpeedButton2Click(Sender: TObject);
var seite, ausr : String;
    atf, tl1, tl2 : LongInt;
    transp, drewin, sc1, sc2, xi : Integer;
    rf1, rf2, rfw, rfh, tl, lu, ts, lf, th, tw : Integer;
    verz : String;
    text : String;
    cf    : TextFile;
begin
   Save_Cursor   := Screen.Cursor;
   Screen.Cursor := crHourglass;    // Show hourglass cursor

   If Edit3.Text <> '' Then
      Begin
        ComboBox1.Text := Edit3.Text;
        ComboBox1.Items.Add(Edit3.Text);
      end;

   text := Trim(ComboBox1.Text);
   If CheckBox1.Checked = True Then //Watermark with date included
      text := text + ' ' + DateToStr(Date);
   If CheckBox2.Checked = True Then //Watermark with actual user included
      text := text + ' ' + GetCurrentUserName;

//I select the position data from combo boxes...
//You can add for example a combo box with colours...

   if cbseite.Text = 'Alle Seiten'           then seite := 'as'; //on all pages
   if cbseite.Text = 'Erste Seite'           then seite := 'es'; //on the first page
   if cbseite.Text = 'Letzte Seite'          then seite := 'ls'; //on the last page
   if cbseite.Text = 'Alle geraden Seiten'   then seite := 'gs'; //all straight pagenumbers
   if cbseite.Text = 'Alle ungeraden Seiten' then seite := 'us'; //all odd pagenumbers

   if cbausr.Text = 'Links oben'    then ausr := 'lo'; //top left
   if cbausr.Text = 'Links unten'   then ausr := 'lu'; //bottom left
   if cbausr.Text = 'Rechts oben'   then ausr := 'ro'; //top right
   if cbausr.Text = 'Rechts unten' then ausr := 'ru'; //bottom right

   transp := StrToInt(Edit5.Text); //The transparency as a percent value
   drewin := StrToInt(Edit4.Text); //Angle of rotation... try with values over and below zero... not more than -45 to 45

   If ( ausr = 'ro' ) or ( ausr = 'lu' ) Then
      drewin := 360 - StrToInt(Edit4.Text); //Invers angle of rotation

   if tl > 40 Then //The text should have max. 40 characters
      text := System.Copy(text,1,40);
   tl := Length(Trim(text));
   Begin
      QP := TiSEDQuickPDF.Create;
      try     
        QP.UnlockKey('MyLicenceKey');
        QP.LoadFromFile(Edit1.Text);
        QP.SetOrigin(1); //To top left
        QP.SetMeasurementUnits(0); //means pixel
        QP.Unencrypt;
        atf := QP.AddTrueTypeFont('Arial [Bold]', 0); // Font Arial Bold ... But not embedded !
        QP.SelectFont(atf); // Arial Bold
        for xi := 1 to QP.PageCount do
             begin
//here it begins to be complicated... You must try a bit i think...
               QP.SelectPage(xi);
               sc1 := xi div 2;
               sc2 := sc1 * 2;
               if   ( seite = 'as' )                            or
                   ( ( seite = 'es' ) and ( xi = 1 ) )            or
                   ( ( seite = 'ls' ) and ( xi = QP.PageCount ) ) or
                   ( ( seite = 'gs' ) and ( xi = sc2 ) )          or
                   ( ( seite = 'us' ) and ( xi > sc2 ) )          Then
                   begin //ts means text size
                      If ( QP.PageWidth < 250 ) Then
                         ts := 8;
                      If ( QP.PageWidth > 249 ) and
                         ( QP.PageWidth < 400 ) Then
                         ts := 12;
                      If ( QP.PageWidth > 399 ) and
                         ( QP.PageWidth < 650 ) Then
                         ts := 18;
                      If ( QP.PageWidth > 649 ) and
                         ( QP.PageWidth < 1500 ) Then
                         ts := 22;
                      If ( QP.PageWidth > 1499 ) and
                         ( QP.PageWidth < 2500 ) Then
                         ts := 30;
                      If ( QP.PageWidth > 2499 ) Then
                         ts := 38;
                      QP.SetTextSize(ts);
                      tw := tl * ts; //Textwidth is the sum from length * size...
                      tw := tw div 2;
                      tw := tw + StrToInt(Edit4.Text);
                      th := ( tw * StrToInt(Edit4.Text) ) div 45;

                      QP.SetTransparency(transp);
                      if ausr = 'lo' Then
                         QP.DrawRotatedText( ts, th, drewin, text); // left - top - width - height
                      if ausr = 'lu' Then
                         QP.DrawRotatedText( ts, QP.PageHeight - th, drewin, text ); // left - top - width - height
                      if ausr = 'ro' Then
                         QP.DrawRotatedText( QP.PageWidth - tw, ts, drewin, text ); // left - top - width - height
                      if ausr = 'ru' Then
                         QP.DrawRotatedText( QP.PageWidth - tw, QP.PageHeight - tl, drewin, text ); // left - top - width - height
                   end;
            end;
        QP.CompressContent;
      finally
        Edit3.Text := '';
        If Edit2.Text <> '' Then
            QP.SaveToFile(Edit2.Text);
        QP.Free;
     end;
     Screen.Cursor := Save_Cursor;
end;
If CheckBox3.Checked = True Then //Show the result immediately
     ShellExecute(hinstance,'open',PChar(Edit2.Text),nil,nil,SW_SHOWNORMAL);

If CheckBox4.Checked = True Then //Close after function ends
     Form5.Hide;

end;





Edited by Ingo
Cheers,
Ingo

Back to Top
nwebster View Drop Down
Beginner
Beginner


Joined: 26 Mar 09
Status: Offline
Points: 3
Post Options Post Options   Thanks (0) Thanks(0)   Quote nwebster Quote  Post ReplyReply Direct Link To This Post Posted: 26 Mar 09 at 3:53PM
Is there any possible way you could post the C# version of posting a watermark?
Back to Top
Ingo View Drop Down
Moderator Group
Moderator Group
Avatar

Joined: 29 Oct 05
Status: Offline
Points: 3524
Post Options Post Options   Thanks (0) Thanks(0)   Quote Ingo Quote  Post ReplyReply Direct Link To This Post Posted: 26 Mar 09 at 6:00PM
Hi Noah!

No ;-)    'cause i'm a delphi developer ;-)
You're doing the first steps with QuickPDF ... do it slow ... please read the documentation and have a look in the samples.
You can try using the search-function (above) with CSharp-syntax ... perhaps there#s something in the samples.

Cheers, Ingo

Back to Top
 Post Reply Post Reply
  Share Topic   

Forum Jump Forum Permissions View Drop Down

Forum Software by Web Wiz Forums® version 11.01
Copyright ©2001-2014 Web Wiz Ltd.

Copyright © 2017 Debenu. Debenu Quick PDF Library is a PDF SDK. All rights reserved. AboutContactBlogSupportOnline Store