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!
![]() |
INFO |
Post Reply
|
| Author | |
Dario
Beginner
Joined: 26 Jul 09 Location: Italy Status: Offline Points: 19 |
Post Options
Thanks(0)
Quote Reply
Topic: INFOPosted: 04 Aug 09 at 11:21PM |
|
HI, How can I setting the FONT style when using the function DrawText?
Thanks and Best Regards
|
|
![]() |
|
Dario
Beginner
Joined: 26 Jul 09 Location: Italy Status: Offline Points: 19 |
Post Options
Thanks(0)
Quote Reply
Posted: 17 Aug 09 at 11:00PM |
|
I try to do a question in different way.....
Is it possible to change the FONT STYLE with the function DrawText?
Thanks
|
|
![]() |
|
Michel_K17
Newbie
www.exp-systems.com Joined: 25 Jan 03 Status: Offline Points: 297 |
Post Options
Thanks(0)
Quote Reply
Posted: 18 Aug 09 at 12:54AM |
|
Sure. See my sample VB6 code here which shows you how I Bold/Italicize (basically, I use the appropriate font). Cheers!
Private Function PDF_Apply_Text(Pages As String, Location As String, Layer As String, WebLink As String, JavaScript As String, Text As String, StdFontID As String, TextStyle As String) As Boolean ' StdFontID, as follows, ' 0 = Courier ' 1 = CourierBold ' 2 = CourierBoldOblique ' 3 = CourierOblique ' 4 = Helvetica ' 5 = HelveticaBold ' 6 = HelveticaBoldOblique ' 7 = HelveticaOblique ' 8 = TimesRoman ' 9 = TimesBold ' 10 = TimesItalic ' 11 = TimesBoldItalic ' 12 = Symbol << I am not supporting this for now ' 13 = ZapfDingbats << I am not supporting this for now ' Text Style, as follows, ' - Underline ' [T=255,255,255] - Text Color + RGB ' [B=255,255,255] - Highlight (Back) Color + RGB (in Hex) ' Pages ' Case "0" - 1st Page Only ' Case "1" - All Pages ' Case "2" - Last Page Only ' Case "3" - New Page in Front ' Case "4" - New Page out back ' Case "5" - From 2nd Page up to Last Page ' Case "6" - From 1st Page up to Second-to-Last Page ' Location ' 0 = Upper LH ' 1 = Upper Center ' 2 = Upper RH ' 3 = Center ' 4 = Center (stretched) - already calculated above ' 5 = Lower LH ' 6 = Lower Center ' 7 = Lower RH ' 8 = Lower Center + Left Offset (for Navigation Buttons) ' 9 = Lower Center + Right Offset (for Navigation Buttons) ' Layer As String ' WebLink As String ' JavaScript As String Dim Newlayer As Long Dim x As Long, y As Long ' Dim colors(2) As Double Dim PageWidth As Double, PageHeight As Double ' Trap Errors On Error GoTo Error_Handler ' Find the number of fonts in the document k = oPDF.FindFonts If k > 0 Then ' Get the Font Name ' WARNING: Font names are different than in the reference manual! ' Added "-" (hyphen) separator to match what is in document If StdFontID = 0 Then Temp = "Courier" If StdFontID = 1 Then Temp = "Courier-Bold" If StdFontID = 2 Then Temp = "Courier-BoldOblique" If StdFontID = 3 Then Temp = "Courier-Oblique" If StdFontID = 4 Then Temp = "Helvetica" If StdFontID = 5 Then Temp = "Helvetica-Bold" If StdFontID = 6 Then Temp = "Helvetica-BoldOblique" If StdFontID = 7 Then Temp = "Helvetica-Oblique" If StdFontID = 8 Then Temp = "Times-Roman" If StdFontID = 9 Then Temp = "Times-Bold" If StdFontID = 10 Then Temp = "Times-Italic" If StdFontID = 11 Then Temp = "Times-BoldItalic" ' If StdFontID = 12 Then Temp = "Symbol << I am not supporting this for now" ' If StdFontID = 13 Then Temp = "ZapfDingbats << I am not supporting this for now if stdfontid =" ' Check to see if any of the fonts match the font planned For i = 1 To k ' Get the next font rtn = oPDF.FontID(i) rtn = oPDF.SelectFont(rtn) ' See if we have a match If Temp = oPDF.FontName Then GoTo FontSelectionCompleted Next i End If NoFontsFound: ' Add the appropriate standard font to the document oPDF.SelectFont oPDF.AddStandardFont(Val(StdFontID)) FontSelectionCompleted: ' Add a space in from & behind of text so that it is not scruntched against edge Text = " " & Text & " " ' Text Alignment ' Alignment is automatic based on which corner is selected ' 0 = Upper LH << LH Aligned ' 1 = Upper Center << Center Aligned ' 2 = Upper RH << RH Aligned ' 3 = Center << Center Aligned ' 4 = Center (stretched) - already calculated above << Center Aligned ' 5 = Lower LH << LH Aligned ' 6 = Lower Center << Center Aligned ' 7 = Lower RH << RH Aligned ' 8 = Lower Center + Left Offset (for Navigation Buttons) << Not Applicable ' 9 = Lower Center + Right Offset (for Navigation Buttons) << Not Applicable Select Case Location Case "0", "5" ' Left align if appropriate oPDF.SetTextAlign 0 Case "2", "7" ' Right align if appropriate oPDF.SetTextAlign 2 Case Else ' Center aligned oPDF.SetTextAlign 1 End Select If Location <> "4" Then ' Set the Text Size (default is 12) If InStr(1, TextStyle, "[S=") <> 0 Then oPDF.SetTextSize Int(Mid$(TextStyle, InStr(1, TextStyle, "[S=") + 3, 3)) ' Set Text Underline ' 0 = None, 1 = Single, 2 = Double, 3 = Strikeout, 4 = Over oPDF.SetTextUnderline 0 If InStr(1, TextStyle, "") <> 0 Then oPDF.SetTextUnderline 1 ' Setup Text Background ' 0 = None, 1 = Square, 2 = Rounded oPDF.SetTextHighlight 1 ' Setup Text Highlight (Background) Color (RGB from 0.0 (none) to 1.0 (max)) i = InStr(1, TextStyle, "[B=") + 3 oPDF.SetTextHighlightColor CDbl(Mid$(TextStyle, i, 3)) / 255, CDbl(Mid$(TextStyle, i + 4, 3)) / 255, CDbl(Mid$(TextStyle, i + 8, 3)) / 255 ' Text Color i = InStr(1, TextStyle, "[T=") + 3 oPDF.SetTextColor CDbl(Mid$(TextStyle, i, 3)) / 255, CDbl(Mid$(TextStyle, i + 4, 3)) / 255, CDbl(Mid$(TextStyle, i + 8, 3)) / 255 ' Setup the Text Style ' 0 = Filled text (default), 1 = Outline text oPDF.SetTextMode 0 Else ' Center+ Stretched = 60 pts text size, No underline, No background + Outline Text + 50% Transparent oPDF.SetTextSize 60 oPDF.SetTextUnderline 0 oPDF.SetTextHighlight 0 oPDF.SetTextMode 1 End If ' Save the Text Style for future use, because the style is lost ' everytime the page is changed oPDF.SaveStyle "MyStyle" ' Check to see if this is a business card. - IN FRONT If Pages = "3" Then olog.WriteLog "Apply Text on own page in front" rtn = oPDF.SelectPage(1) rtn = oPDF.InsertPages(1, 1) End If ' Check to see if this is a business card - AT BACK If Pages = "4" Then olog.WriteLog "Apply Text on own page at back" rtn = oPDF.SelectPage(oPDF.PageCount) i = oPDF.PageRotation rtn = oPDF.NewPage If i <> 0 Then oPDF.RotatePage (90) End If ' Get ready to apply the stamp to the document ' Capture the Stamp (Crop Box) - This will remove it. ' oLog.WriteLog "Capture the Stamp" ' hCaptStamp = oPDF.CapturePageEx(oPDF.PageCount, 1) ' Calculate Start & End Pages ' Default pages setup so that we do not run i = 1: j = 0 Select Case Pages Case "0", "3" ' 1st Page Only i = 1: j = 1 Case "1" ' All Pages i = 1: j = oPDF.PageCount Case "2", "4" ' Last Page Only i = oPDF.PageCount: j = oPDF.PageCount Case "5" ' From 2nd Page up to Last Page If oPDF.PageCount > 1 Then i = 2: j = oPDF.PageCount Case "6" ' From 1st Page up to Second-to-Last Page If oPDF.PageCount > 1 Then i = 1: j = oPDF.PageCount - 1 End Select ' Apply Text to each page selected For k = i To j olog.WriteLog "Apply Text to Page" & Str$(k) ' Get info about the next page (using cropbox size (2)) rtn = oPDF.SelectPage(k) olog.WriteLog "PDF.SelectPage(k) - Apply Text to Page" & Str$(k) ' Substitute Page Number if needed Temp = Replace(Text, "<#>", Trim$(Str$(k))) ' pagewidth = oPDF.GetPageBox(2, 2) ' pageheight = oPDF.GetPageBox(2, 3) ' Re-apply the text style (gets lost everytime the next page is selected) oPDF.ApplyStyle ("MyStyle") ' Apply No Transparency. ' Cannot save this as part of Text Style, so it must be applied here. rtn = oPDF.SetTransparency(0) ' Create a new layer if stamp goes underneath If Layer = "#FALSE#" Then Newlayer = oPDF.Newlayer rtn = oPDF.SelectLayer(Newlayer) End If ' Transfer the Stamp onto that page ' Position as follows: ' 0 = Upper LH ' 1 = Upper Center ' 2 = Upper RH ' 3 = Center ' 4 = Center (stretched) - already calculated above ' 5 = Lower LH ' 6 = Lower Center ' 7 = Lower RH ' 8 = Lower Center + Left Offset (for Navigation Buttons) ' 9 = Lower Center + Right Offset (for Navigation Buttons) ' Check for page rotation. If oPDF.PageRotation = 0 Then ' Set origin to Upper LH rtn = oPDF.SetOrigin(1) PageHeight = oPDF.PageHeight PageWidth = oPDF.PageWidth Else ' Set origin to Lower LH (before page is rotated for viewing) rtn = oPDF.SetOrigin(0) ' In this rotation, X&Y are reversed, Height is Width & Vice versa PageHeight = oPDF.PageWidth PageWidth = oPDF.PageHeight End If Select Case Location Case "0" ' Upper LH x = 0 y = 0 + oPDF.GetTextBound(2) Case "1" ' Upper Center x = PageWidth / 2 y = 0 + oPDF.GetTextBound(2) Case "2" ' Upper RH x = PageWidth y = 0 + oPDF.GetTextBound(2) Case "3" ' Center x = PageWidth / 2 y = (PageHeight + oPDF.GetTextAscent) / 2 Case "4" ' Center ' Stretch the Text to smallest of PageWidth or PageHeight If PageWidth > PageHeight Then '(PageWidth > PageHeight And oPDF.PageRotation = 0) Or (PageWidth < PageHeight And oPDF.PageRotation <> 0) Then oPDF.SetTextSize (PageHeight / oPDF.GetTextWidth(Temp)) * oPDF.GetTextSize * 1.2 Else oPDF.SetTextSize (PageWidth / oPDF.GetTextWidth(Temp)) * oPDF.GetTextSize * 1.3 End If ' Calculate X/Y position before rotation x = PageWidth / 2 y = (PageHeight + oPDF.GetTextAscent) / 2 ' Apply trigonometry because ctr of Rotation is located at Baseline ' instead of center of character. Displace Ctr of rotation ' accordingly, so that text is centered on page ' X = X + dX where dX = H.cos45 and H = GetTextAscent/2 ' Y = Y - dY where dY = H - dX x = x + 0.354 * oPDF.GetTextAscent y = y - 0.146 * oPDF.GetTextAscent ' Apply Transparency (because the Text Colour is ignored so grey is black) ' Cannot save this as part of Text Style, so it must be applied here. rtn = oPDF.SetTransparency(50) Case "5" ' Lower LH x = 0 y = PageHeight + oPDF.GetTextBound(4) Case "6" ' Lower Center x = PageWidth / 2 y = PageHeight + oPDF.GetTextBound(4) Case "7" ' Lower RH x = PageWidth y = PageHeight + oPDF.GetTextBound(4) ' Case "8" ' Lower & Center + Left Offset ' X = ((PageWidth - oPDF.GetTextWidth(Text)) / 2) - oPDF.GetTextWidth(Text) / 1.5 ' Y = PageHeight - oPDF.GetTextHeight ' Case "9" ' Lower & Center + Right Offset ' X = ((PageWidth - oPDF.GetTextWidth(Text)) / 2) + oPDF.GetTextWidth(Text) / 1.5 ' Y = PageHeight - oPDF.GetTextHeight End Select ' Set text rotation to 45 degrees if central/stretched i = 0 If Location = "4" Then i = 45 ' Apply the text to the page If oPDF.PageRotation = 0 Then rtn = oPDF.DrawRotatedText(x, y, i, Temp) Else rtn = oPDF.DrawRotatedText(y, x, 90 + i, Temp) End If ' Apply the web link (if not empty) If WebLink <> "" Or JavaScript <> "" Then ' Calculate Hot spot box Select Case Location Case "0", "5" ' Left align: no change to X Case "2", "7" ' Right align. X moves to the left x = x - oPDF.GetTextWidth(Temp) Case Else ' Center aligned. X moves 1/2 way of width x = x - oPDF.GetTextWidth(Temp) / 2 End Select ' Y position moves to top of text box y = y - oPDF.GetTextBound(2) If WebLink <> "" Then If oPDF.PageRotation = 0 Then rtn = oPDF.AddLinkToWeb(x, y, oPDF.GetTextWidth(Temp), oPDF.GetTextHeight, WebLink, 0) Else ' rtn = oPDF.AddLinkToWeb(Y, X, oPDF.GetTextHeight, oPDF.GetTextWidth(Temp), WebLink, 0) rtn = oPDF.AddLinkToWeb(y, x + oPDF.GetTextWidth(Temp), oPDF.GetTextHeight, oPDF.GetTextWidth(Temp), WebLink, 0) End If End If ' Apply JavaScript link (if requested) If JavaScript <> "" Then If oPDF.PageRotation = 0 Then rtn = oPDF.AddLinkToJavaScript(x, y, oPDF.GetTextWidth(Temp), oPDF.GetTextHeight, JavaScript, 0) Else ' rtn = oPDF.AddLinkToJavaScript(Y, X, oPDF.GetTextHeight, oPDF.GetTextWidth(Temp), JavaScript, 0) rtn = oPDF.AddLinkToJavaScript(y, x + oPDF.GetTextWidth(Temp), oPDF.GetTextHeight, oPDF.GetTextWidth(Temp), JavaScript, 0) End If End If End If Next k Save_Stamped_PDF: ' Close Access to stamp file - NO: It was deleted automatically when merged ' Success PDF_Apply_Text = True Exit Function Error_Handler: ' An unexpected error occured. Log it. (MUST have this line first, or the Err object gets reset). ' olog.LogError False, Err.Number, Err.Description, Err.LastDllError, "Apply Stamp" Resume Next End Function |
|
|
Michel
|
|
![]() |
|
Dario
Beginner
Joined: 26 Jul 09 Location: Italy Status: Offline Points: 19 |
Post Options
Thanks(0)
Quote Reply
Posted: 21 Aug 09 at 11:03AM |
|
Thanks MICHEL for your replay, but you haven't answer my question...
If I want to draw my custom font or others fonts, it is impossible to do with different style?
|
|
![]() |
|
Ingo
Moderator Group
Joined: 29 Oct 05 Status: Offline Points: 3530 |
Post Options
Thanks(0)
Quote Reply
Posted: 21 Aug 09 at 11:40AM |
|
Hi Dario!
Did you test it? What are the results? If you want to use your own fonts you can add them as file with truetype- or type1-font-format, then select them, then use them. Please have a look at the relevant functions in the font-section of the online-reference at: http://www.quickpdflibrary.com/help/quickpdf/Fonts.php Cheers, Ingo Edited by Ingo - 21 Aug 09 at 11:40AM |
|
![]() |
|
Dario
Beginner
Joined: 26 Jul 09 Location: Italy Status: Offline Points: 19 |
Post Options
Thanks(0)
Quote Reply
Posted: 21 Aug 09 at 8:59PM |
|
OK, I resolved in different way.
I thought that as there is a command or FontSize or FontType or FONTNAME or SetTextColorCMYK there was also FontStyle ...
Thanks
|
|
![]() |
|
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