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!
Watermark... |
Post Reply |
Author | |
Ingo
Moderator Group Joined: 29 Oct 05 Status: Offline Points: 3524 |
Post Options
Thanks(0)
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 |
|
nwebster
Beginner Joined: 26 Mar 09 Status: Offline Points: 3 |
Post Options
Thanks(0)
|
Is there any possible way you could post the C# version of posting a watermark?
|
|
Ingo
Moderator Group Joined: 29 Oct 05 Status: Offline Points: 3524 |
Post Options
Thanks(0)
|
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 |
|
Post Reply | |
Tweet
|
Forum Jump | Forum Permissions You cannot post new topics in this forum You cannot reply to topics in this forum You cannot delete your posts in this forum You cannot edit your posts in this forum You cannot create polls in this forum You cannot vote in polls in this forum |
Copyright © 2017 Debenu. Debenu Quick PDF Library is a PDF SDK. All rights reserved. About — Contact — Blog — Support — Online Store