Print Page | Close Window

Watermark...

Printed From: Debenu Quick PDF Library - PDF SDK Community Forum
Category: For Users of the Library
Forum Name: Sample Code
Forum Description: Share Debenu Quick PDF Library sample code with other forum members
URL: http://www.quickpdf.org/forum/forum_posts.asp?TID=230
Printed Date: 22 Nov 24 at 7:15PM
Software Version: Web Wiz Forums 11.01 - http://www.webwizforums.com


Topic: Watermark...
Posted By: Ingo
Subject: Watermark...
Date 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;





-------------
Cheers,
Ingo




Replies:
Posted By: nwebster
Date Posted: 26 Mar 09 at 3:53PM
Is there any possible way you could post the C# version of posting a watermark?


Posted By: Ingo
Date 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




Print Page | Close Window

Forum Software by Web Wiz Forums® version 11.01 - http://www.webwizforums.com
Copyright ©2001-2014 Web Wiz Ltd. - http://www.webwiz.co.uk