B4A Library PDFWriter

Hello everyone,

Here is yet another library: PDFWriter.
Linked by user mwhetmore at this topic, you can now create your own PDF files and save them!
The library has 3 declarations:

I. PDFWriter
B4X:
Dim PDFWriter1 As PDFWriter
Declare this in globals so you can benifit from all main methods for writing your PDF File.


1.1 Initialize
B4X:
PDFWriter1.Initialize("PDFWriter1",PaperSize.A4_WIDTH, PaperSize.A4_HEIGHT)

This initializes your PDF writer and gives in an eventname for when the pdf has been created, and it creates a new document with the papersizes than you can choose. (A1, A2, A3, and a lot more!).

1.2 addLine
B4X:
PDFWriter1.addLine(int fromLeft, int fromBottom, int toLeft, int toBottom)

Adds a line to your PDF file. The parameters are self-explanatory.

1.3 addRawContent
B4X:
PDFWriter1.addRawContent(String rawContent)

Adds raw content to your pdf file.
For example: PDFWriter1.addRawContent("0 1 0 rg\n")

1.4 addRectangle
B4X:
PDFWriter1.addRectangle(int fromLeft, int fromBottom, int toLeft, int toBottom)

Adds a rectangle to your pdf file.

1.5 addText
B4X:
PDFWriter1.addText(int leftPosition, int topPositionFromBottom, int fontSize, String text)
PDFWriter1.addText2(int leftPosition, int topPositionFromBottom, int fontSize, String text, String transformation)

This will add text to your PDF file.
The difference between addText and addText2 is that you can add a transformation to your text, see chapter III. PDFStandardFonts.

1.6 ConverseDocument
B4X:
PDFWriter1.ConverseDocument
This wll create you a PDF file. Sub ConversionDone will be raised when the conversion has been done.

B4X:
Sub PDFWriter1_ConversionDone (Content As String)
   PDFContent = Content
   ProgressDialogHide
   ToastMessageShow("Conversion has been done.",False)
End Sub

1.7 CreateNewDocument
B4X:
PDFWriter1.CreateNewDocument(int Width, int Height)
This wll create a new PDF document with the given Width and Height in Papersizes, like in the initialize method.

1.8 newPage
B4X:
PDFWriter1.newPage
This wll create a new PDF page in the same document.

1.9 outputToFile
B4X:
PDFWriter1.outputToFile(String Directory, String FileName, String pdfContent, String encoding)
This will save your pdf content in the given Directory with the given filename with the given encoding.

B4X:
PDFWriter1.outputToFile(File.DirDefaultExternal,"myNewPDF.pdf",PDFContent,"ISO-8859-1")

2.0 outputToScreen
B4X:
PDFWriter1.outputToScreen
This will show your pdfcontent in a label. (note that it won't show the pdf itself but the content!)

B4X:
Label1.Text = PDFWriter1.outputToScreen

2.1 setFont
B4X:
PDFWriter1.setFont(String subType, String baseFont)
PDFWriter1.setFont2(String subType, String baseFont, String encoding)

This will set the font in your PDF file.
The difference between setFont and setFont2 is that you can add a encoding to your text in setFont2, see chapter III. PDFStandardFonts.




II. PDFPaperSizes
B4X:
Dim PaperSize As PDFPaperSizes

With PaperSize you can select, when you create a new document (or with initialize), what paper you would like to use to work with.
Here are all the options:

A0_WIDTH
A0_HEIGHT
A1_WIDTH
A1_HEIGHT
A2_WIDTH
A2_HEIGHT
A3_WIDTH
A3_HEIGHT
A4_WIDTH
A4_HEIGHT
A5_WIDTH
A5_HEIGHT
A6_WIDTH
A6_HEIGHT
A7_WIDTH
A7_HEIGHT
A8_WIDTH
A8_HEIGHT
A9_WIDTH
A9_HEIGHT
A10_WIDTH
A10_HEIGHT
B0_WIDTH
B0_HEIGHT
B1_WIDTH
B1_HEIGHT
B2_WIDTH
B2_HEIGHT
B3_WIDTH
B3_HEIGHT
B4_WIDTH
B4_HEIGHT
B5_WIDTH
B5_HEIGHT
B6_WIDTH
B6_HEIGHT
B7_WIDTH
B7_HEIGHT
B8_WIDTH;
B8_HEIGHT
B9_WIDTH
B9_HEIGHT
B10_WIDTH
B10_HEIGHT
LETTER_WIDTH
LETTER_HEIGHT
TABLOID_WIDTH
TABLOID_HEIGHT
LEDGER_WIDTH
LEDGER_HEIGHT
LEGAL_WIDTH
LEGAL_HEIGHT
STATEMENT_WIDTH
STATEMENT_HEIGHT
EXECUTIVE_WIDTH
EXECUTIVE_HEIGHT
FOLIO_WIDTH
FOLIO_HEIGHT
QUARTO_WIDTH
QUARTO_HEIGHT

III. PDFStandardFonts
B4X:
Dim Fonts As PDFStandardFonts

And to end, you can choose between a lot of available fonts.
I won't put them here, but it varies from Times New Roman, to Courier, and some more.

IV. License

The library is licensed under BSD!
So you just have to mention the author. (not me!)
Author: Javier Santho Domingo ([email protected])


In the attachments, you can find the library files and 2 text files:
A readme.txt and Sample.txt
The project was just to big to upload here at the forum.
So just copy the content of Sample.txt in a new Basic4Android Project and
check the PDFWriter at the right hand pane in the library tab of the IDE, and run the project.

Have fun.

Tomas
 

Attachments

  • PDFWriter1.0.zip
    18.7 KB · Views: 1,554
  • PDFWriter1.1.zip
    25.6 KB · Views: 2,685
Last edited:

Locutus

Member
Licensed User
Longtime User
PDFWriter1.addText2(100, 400, 35, "@COPYRIGHT 2012", Fonts.DEGREES_45_ROTATION)

This Doesn't work?
My apologies for the late reply. I had to add a line to the PDFWriter.xml for the Fonts.xxx_ROTATION to show as it was not visible. The changes follow:-

Under the line

B4X:
<name>com.rootsoft.pdfwriter.Transformation</name>

I had to add

B4X:
<shortname>PDFTransformation</shortname>

After that I could choose the font rotation and it then worked.
 

Wembly

Member
Licensed User
Longtime User
Hi,

Thank you for this library it is exactly what I needed!

I have a question regards text placement and alignment.

Is there any rawcontent strings to perform alignment on text?

If not is there a method of calculating the length of how the string will be rendered - I appreciate this is dependent upon font type/style.

Thanks.
 

Swissmade

Well-Known Member
Licensed User
Longtime User
Hi all,
I wondering, if this Libray is also working in B4J
Or how to create PDF in B4J.

Thanks f
 

warwound

Expert
Licensed User
Longtime User
I shall have a library that wraps PDFjet (Google for more info).
The library has both b4a and b4j versions.

PM me if you want a preview copy of the b4j version.

Martin.
 

Swissmade

Well-Known Member
Licensed User
Longtime User
Hi Martin,

I'm busy with a App and need PDF output on some Reports.
Can be nice if this is also working on B4J.

I don't know how to PM I don't see a link.

Thanks for help.
 

warwound

Expert
Licensed User
Longtime User
I don't know how to PM I don't see a link.

LOLs -i should have said 'start a conversation with me' and you might have worked out that if you visit my profile you can indeed start a conversation with me.
Anyway i'll start a conversation with you and let you have a copy of the library.

Martin.
 

Hubert Brandel

Active Member
Licensed User
Longtime User
My apologies for the late reply. I had to add a line to the PDFWriter.xml for the Fonts.xxx_ROTATION to show as it was not visible. The changes follow:-
Under the line
B4X:
<name>com.rootsoft.pdfwriter.Transformation</name>
I had to add
B4X:
<shortname>PDFTransformation</shortname>
After that I could choose the font rotation and it then worked.

I have tried this ... but did not work. Does your file looked like this ?
B4X:
<?xml version="1.0" encoding="UTF-8"?>
<root>
  <doclet-version-NOT-library-version>1.02</doclet-version-NOT-library-version>
  <class>
...
  <class>
  <name>com.rootsoft.pdfwriter.Transformation</name>
  <owner>process</owner>
  <field>
  <name>DEGRESS_225_ROTATION</name>
  <comment></comment>
  <returntype>java.lang.String</returntype>
  </field>
  <field>
  <name>DEGREES_135_ROTATION</name>
  <comment></comment>
  <returntype>java.lang.String</returntype>
  </field>
changed to ...
B4X:
<?xml version="1.0" encoding="UTF-8"?>
<root>
  <doclet-version-NOT-library-version>1.02</doclet-version-NOT-library-version>
  <class>
...
  <class>
  <name>com.rootsoft.pdfwriter.Transformation</name>
  <shortname>PDFTransformation</shortname>
  <owner>process</owner>
  <field>
  <name>DEGRESS_225_ROTATION</name>
  <comment></comment>
  <returntype>java.lang.String</returntype>
  </field>

I did save it, closed B4A and restarted, but no FONTS.DEG... in the list of the object.
 

Hubert Brandel

Active Member
Licensed User
Longtime User
A realy nice LIB and realy usefull !

PDFWriter1.addLine(int fromLeft, int fromBottom, int toLeft, int toBottom)
Adds a line to your PDF file. The parameters are self-explanatory.
self-explanatory ... I THINK, this ist NOT realy true ... the values are in POINTS (pt), how many peoble think in points ?

I think in mm or cm, some in inch ;-)

What is a point ? => http://en.wikipedia.org/wiki/Point_(typography)

Here are some functions to make it easier to use ... first 72pt = 1 inch = 25.4 mm
B4X:
Sub Points2mm(nPoints As Int) As Int
  Dim nD As Double
   Dim nL As Long
   nD = nPoints / 72 * 25.4 ' 25.4 mm = 1 Inch = 72 Point
   nL = Round(nD)
   Return nL
End Sub

Sub mm2Points(nMM As Double) As Int
  Dim nD As Double
   Dim nL As Long
   nD = nMM * 72 / 25.4
   nL = Round(nD)
   Return nL
End Sub

if you need inches, just cut out the / or * 25.4 parameters.

And of course every body think from top left of a page not bottom left ...
These functions mean mmVL (mm from left in german ... (so you can rename to mmFL if you want etc.)
B4X:
Sub mmVL(nMM As Double) As Int ' from the left paper side = 1. parameter
  Return mm2Points(nMM)
End Sub   

Sub mmVR(nMM As Double) As Int ' from the right paper side = 1. parameter
  Return PaperSize.A4_WIDTH - mm2Points(nMM-1) ' sonst stimmt es nicht
End Sub   

Sub mmVO(nMM As Double) As Int ' from the top paper side = 2.parameter at the BASELINE '_' in this text _Big_small_j_ 
  Return PaperSize.A4_HEIGHT - mm2Points(nMM)
End Sub   

Sub mmVU(nMM As Double) As Int ' from the bottom paper side = 2.parameter at the BASELINE '_' in this text _Big_small_j_ 
  Return mm2Points(nMM)
End Sub
If you want to know how big the paper ist, just call Points2mm() with PaperSize.A4_HEIGHT or PaperSize.A4_WIDTH or what you need.

So how to use it:

I use vars to make it easier to handle ... nLine, nLR (left Margin => nLM), nTab1, nTab2

B4X:
nFirstLine = mmVO(20)  ' Baseline of the first line from top
nLineCR  = mm2Points(5)  ' 5 mm for a 10pt font, a little to big, you can ask MS Word how much the use (4.5 or 4.6 mm) ;)
nLM  = mmVL(25)      ' left margin on 25 mm from left
nTab1 = nLM + mmVL(30) ' 30 mm from the left margin ... or
nTab2 = mmVL(100) ' fixed on 100 mm from the left side
nLine = nFirstLine ' on all pages if you need.

PDFWriter1.setFont2(Fonts.SUBTYPE,Fonts.HELVETICA_BOLD, Fonts.WIN_ANSI_ENCODING) ' ARIAL mit Ansi coding !
PDFWriter1.addText( nLR, nLine , 12, "Text 1") ' 12pt Font
nLine = nLine - mm2Points(6) ' 6 mm because of 12pt font, - because the LIB use 0 at the bottom !
PDFWriter1.addText( nLR, nLine , 12, "Text 2")
nLine = nLine - mm2Points(10) ' 10 mm to get a head line ...
PDFWriter1.addText( nLR, nLine , 12, "Headline")
nLine = nLine - mm2Points(10) 
PDFWriter1.setFont2(Fonts.SUBTYPE,Fonts.HELVETICA, Fonts.WIN_ANSI_ENCODING) ' ARIAL mit Ansi coding !   

For x = 1 To 6
     PDFWriter1.addText( nLR, nLine , 10, "Line " & x)
     nLine = nLine - nLineCR
Next

nLine = nLine - nLineCR * 2 ' one free line ...

PDFWriter1.addLine(mmVL(20), mmVU(20), mmVR(20), mmVU(20) ) ' this adds a line 20mm from bottom, starting 20mm from left to 20mm from right.

This is for dynamic layout, if you need fixed text, just use mm2Points(nMM) direct.

Do you need "german umlauts" or other special chars ?

With this INIT and SAVE code I have had no problems with @ € ÄÖÜ äöü ß etc.
B4X:
INIT:
PDFWriter1.setFont2(Fonts.SUBTYPE,Fonts.HELVETICA_BOLD, Fonts.WIN_ANSI_ENCODING) ' ARIAL mit Ansi coding !
Sub PDFWriter1_ConversionDone (Content As String)
   PDFContent = Content
   ProgressDialogHide
   ToastMessageShow("Conversion has been done.",False)
   Log("PDF Saved at " & sDir )
   PDFWriter1.outputToFile(sDir,sFile,PDFContent,"Windows-1252")   

   If File.Exists(sDir,sFile) Then
     ToastMessageShow("PDF Saved and file exists",False)
   Else
    ToastMessageShow("PDF Saved, but no file",False)
   End If
End Sub
Maybe some of you need a different ANSI codepage, just try :)
 

deantangNYP

Active Member
Licensed User
Longtime User
HI.. Can i use PDFWriter library to merge multiple existing PDF files (page1.pdf, page2.pdf, etc...) on my device?
Thanks?
 

Harris

Expert
Licensed User
Longtime User
Don't think it is designed for that. It is used to create a simple PDF, with very limited graphics ability into one or more pages of a single PDF doc. Works for me...

Other PDF libs exist here in B4A. I think Warwound wrapped one recently that has greater functionality.
 

Mikonios

Active Member
Licensed User
Longtime User
B4X:
PDFWriter1.addText2(100, 400, 35, "@COPYRIGHT 2012", Fonts.DEGREES_45_ROTATION)

Word: degrees_45_rotation

After compile this is my error. Please, can you help me ????
 

cougar

Member
Licensed User
Longtime User
Just curious if anyone ever figured out the rotation issue. I love the library. It works great...especially after I played with it a bit to find out what was causing most of the errors (for example...use rg rather than rg/n in the rawcontent portion of the code). However, I can't figure out the rotation issue. I did open the .xml file and I placed the code like Locutus (above) in what I think is the right location but I still do not have Fonts.Degrees as an option. I did close out and reopen B4a but it doesn't seem to change. I know nothing about .xml so is it possible that I needed to place the added line in a particular manner? This may sound like a stupid question but...I placed it where the cursor was when I hit return. Do I need to <tab> over or something? Anyway...if anyone has figured this out, I would appreciate it. I downloaded the library in the first post. Is it possible that the .xml modification was performed on a different version of the library? Maybe I need to get a newer version of the library and then perform the line insertion. Not sure.
I hope to add a "PDFWriter for Dummies" tutorial on here when I can figure this out. I have been able to use it to create various reports from a SQLite Database and I see very few limits to creating fairly robust reports. The only real exception that I would like to see is the ability to add background colors to rectangles (maybe someone has figured that one out). The only way I can do it now is to insert a series of lines (with my chosen color), one on top of the other, to the desired height/width of the rectangle. Basically, I stack lines up until they fill the rectangle. This is a bit odd but it does work. The lines are sometimes visible when zoomed in on my device but not when viewed on the Desktop. Anyway, any input would be appreciated. The Rotation part is a game-breaker for my current project. If I can't figure that part out I will have to punt and use some other tool for this particular app. Really trying to complete it this weekend if possible. Thanks!
 

gmilias

Member
Licensed User
Longtime User
Just curious if anyone ever figured out the rotation issue. I love the library. It works great...especially after I played with it a bit to find out what was causing most of the errors (for example...use rg rather than rg/n in the rawcontent portion of the code). However, I can't figure out the rotation issue. I did open the .xml file and I placed the code like Locutus (above) in what I think is the right location but I still do not have Fonts.Degrees as an option. I did close out and reopen B4a but it doesn't seem to change. I know nothing about .xml so is it possible that I needed to place the added line in a particular manner? This may sound like a stupid question but...I placed it where the cursor was when I hit return. Do I need to <tab> over or something? Anyway...if anyone has figured this out, I would appreciate it. I downloaded the library in the first post. Is it possible that the .xml modification was performed on a different version of the library? Maybe I need to get a newer version of the library and then perform the line insertion. Not sure.
I hope to add a "PDFWriter for Dummies" tutorial on here when I can figure this out. I have been able to use it to create various reports from a SQLite Database and I see very few limits to creating fairly robust reports. The only real exception that I would like to see is the ability to add background colors to rectangles (maybe someone has figured that one out). The only way I can do it now is to insert a series of lines (with my chosen color), one on top of the other, to the desired height/width of the rectangle. Basically, I stack lines up until they fill the rectangle. This is a bit odd but it does work. The lines are sometimes visible when zoomed in on my device but not when viewed on the Desktop. Anyway, any input would be appreciated. The Rotation part is a game-breaker for my current project. If I can't figure that part out I will have to punt and use some other tool for this particular app. Really trying to complete it this weekend if possible. Thanks!

As I was testing pdfwriter lib, I also had problem with text rotation when I used lib's version 1.1. But fortunately, I found in the web the relevant transformation.java file which gave me the idea to test a syntax like this:

PDFWriter1.addText2(30, 90, 10, "© CRL", "1 -1 1 1")

where the string "1 -1 1 1" means DEGREES_45_ROTATION

and the problem solved!

From the same source I provide the following strings
Dim DEGREES_0_ROTATION As String = "1 0 0 1"
Dim DEGREES_45_ROTATION As String = "1 -1 1 1"
Dim DEGREES_90_ROTATION As String = "0 -1 1 0"
Dim DEGREES_135_ROTATION As String = "-1 -1 1 -1"
Dim DEGREES_180_ROTATION As String = "-1 0 0 -1"
Dim DEGRESS_225_ROTATION As String = "-1 1 -1 -1"
Dim DEGREES_270_ROTATION As String = "0 1 -1 0"
Dim DEGREES_315_ROTATION As String = "1 1 -1 1"

I believe that this will help you too.
 

peacemaker

Expert
Licensed User
Longtime User
I cannot understand why RU words are not visible well :-(, if to save in UTF-8 encoding.
In the log words are visible well, but in PDF they are wrongly encoded.
Wrong characters are different, if to change the encoding at PDFWriter1.outputToFile and PDFWriter1.setFont2. But all variants are wrongly visible in PDF-viewers :-(
 
Last edited:

Michal Sevcik

New Member
Licensed User
Longtime User
A realy nice LIB and realy usefull !


self-explanatory ... I THINK, this ist NOT realy true ... the values are in POINTS (pt), how many peoble think in points ?

I think in mm or cm, some in inch ;-)

What is a point ? => http://en.wikipedia.org/wiki/Point_(typography)

Here are some functions to make it easier to use ... first 72pt = 1 inch = 25.4 mm
B4X:
Sub Points2mm(nPoints As Int) As Int
  Dim nD As Double
   Dim nL As Long
   nD = nPoints / 72 * 25.4 ' 25.4 mm = 1 Inch = 72 Point
   nL = Round(nD)
   Return nL
End Sub

Sub mm2Points(nMM As Double) As Int
  Dim nD As Double
   Dim nL As Long
   nD = nMM * 72 / 25.4
   nL = Round(nD)
   Return nL
End Sub

if you need inches, just cut out the / or * 25.4 parameters.

And of course every body think from top left of a page not bottom left ...
These functions mean mmVL (mm from left in german ... (so you can rename to mmFL if you want etc.)
B4X:
Sub mmVL(nMM As Double) As Int ' from the left paper side = 1. parameter
  Return mm2Points(nMM)
End Sub 

Sub mmVR(nMM As Double) As Int ' from the right paper side = 1. parameter
  Return PaperSize.A4_WIDTH - mm2Points(nMM-1) ' sonst stimmt es nicht
End Sub 

Sub mmVO(nMM As Double) As Int ' from the top paper side = 2.parameter at the BASELINE '_' in this text _Big_small_j_
  Return PaperSize.A4_HEIGHT - mm2Points(nMM)
End Sub 

Sub mmVU(nMM As Double) As Int ' from the bottom paper side = 2.parameter at the BASELINE '_' in this text _Big_small_j_
  Return mm2Points(nMM)
End Sub
If you want to know how big the paper ist, just call Points2mm() with PaperSize.A4_HEIGHT or PaperSize.A4_WIDTH or what you need.

So how to use it:

I use vars to make it easier to handle ... nLine, nLR (left Margin => nLM), nTab1, nTab2

B4X:
nFirstLine = mmVO(20)  ' Baseline of the first line from top
nLineCR  = mm2Points(5)  ' 5 mm for a 10pt font, a little to big, you can ask MS Word how much the use (4.5 or 4.6 mm) ;)
nLM  = mmVL(25)      ' left margin on 25 mm from left
nTab1 = nLM + mmVL(30) ' 30 mm from the left margin ... or
nTab2 = mmVL(100) ' fixed on 100 mm from the left side
nLine = nFirstLine ' on all pages if you need.

PDFWriter1.setFont2(Fonts.SUBTYPE,Fonts.HELVETICA_BOLD, Fonts.WIN_ANSI_ENCODING) ' ARIAL mit Ansi coding !
PDFWriter1.addText( nLR, nLine , 12, "Text 1") ' 12pt Font
nLine = nLine - mm2Points(6) ' 6 mm because of 12pt font, - because the LIB use 0 at the bottom !
PDFWriter1.addText( nLR, nLine , 12, "Text 2")
nLine = nLine - mm2Points(10) ' 10 mm to get a head line ...
PDFWriter1.addText( nLR, nLine , 12, "Headline")
nLine = nLine - mm2Points(10)
PDFWriter1.setFont2(Fonts.SUBTYPE,Fonts.HELVETICA, Fonts.WIN_ANSI_ENCODING) ' ARIAL mit Ansi coding ! 

For x = 1 To 6
     PDFWriter1.addText( nLR, nLine , 10, "Line " & x)
     nLine = nLine - nLineCR
Next

nLine = nLine - nLineCR * 2 ' one free line ...

PDFWriter1.addLine(mmVL(20), mmVU(20), mmVR(20), mmVU(20) ) ' this adds a line 20mm from bottom, starting 20mm from left to 20mm from right.

This is for dynamic layout, if you need fixed text, just use mm2Points(nMM) direct.

Do you need "german umlauts" or other special chars ?

With this INIT and SAVE code I have had no problems with @ € ÄÖÜ äöü ß etc.
B4X:
INIT:
PDFWriter1.setFont2(Fonts.SUBTYPE,Fonts.HELVETICA_BOLD, Fonts.WIN_ANSI_ENCODING) ' ARIAL mit Ansi coding !
Sub PDFWriter1_ConversionDone (Content As String)
   PDFContent = Content
   ProgressDialogHide
   ToastMessageShow("Conversion has been done.",False)
   Log("PDF Saved at " & sDir )
   PDFWriter1.outputToFile(sDir,sFile,PDFContent,"Windows-1252") 

   If File.Exists(sDir,sFile) Then
     ToastMessageShow("PDF Saved and file exists",False)
   Else
    ToastMessageShow("PDF Saved, but no file",False)
   End If
End Sub
Maybe some of you need a different ANSI codepage, just try :)

It's a pity, but Hubert's solution does not work for some of the letters in the Czech alphabet. I have tried encoding "ISO-8859-2", "Windows-1252", "Windows-1250", "UTF-8". :-(
 

Hubert Brandel

Active Member
Licensed User
Longtime User
"Windows-1252" is for western language, you should have a look what codepage is for your country ...
but that have nothing to do with the size in POINTS ;-)
 

Michal Sevcik

New Member
Licensed User
Longtime User
"Windows-1252" is for western language, you should have a look what codepage is for your country ...
but that have nothing to do with the size in POINTS ;-)

Hello,

all codapages "ISO-8859-2", "Windows-1250" and "UTF-8" include Czech characters, but none of them work with PDFWriter correctly. Regardless PDFWriter is a great tool.
 

cougar

Member
Licensed User
Longtime User
Just returned to PDFWriter after a 6 month break. Thanks to gmilias for the response to one of my old questions. I too figured out the rotate issue at some point but your post reminded me of it. If only I could figure out how to add a custom font. I really need to be able to use a script font to add a "fake" electronic signature block to the bottom of the report. I don't need an actual signature...just a cursive/script style to be used in a report. If anyone knows how to do that, it would be appreciated. My other option has been to use a custom font in a label and then capture/save that as an image. I then print that image to the pdf in the signature block. Unfortunately, it's a bit blurry and the corners of the canvas show up. So, that's not really a great option...ha...Being able to print the actual text with a script font would be far better. Thanks!
 
Top