I tried concatenating a simple text piece to the UTF-8 string to see if at
least the concatenated part would show, but still none of the text is visible
in the PDF:
protected void drawText(PdfContentByte pcb)
throws IOException, DocumentException {
FontFactory.register("c:/windows/fonts/sanskrit2003.ttf",
"sanskrit");
sans = FontFactory.getFont("sanskrit", "Identity-H", true);
readfile();
pcb.saveState();
for (int i=0;i<10;i++){
ColumnText ct = new ColumnText(pcb);
--> String test = front.get(i);
--> test.concat("read this");
--> Phrase myText = new Phrase(test);
//Phrase myText = new Phrase(front.get(i));
--> myText = new Phrase(test);
myText.setFont(sans);
ct.setSimpleColumn(myText,
VRT_2BY5_BCARDS[i][0],
VRT_2BY5_BCARDS[i][1],
VRT_2BY5_BCARDS[i][2],
VRT_2BY5_BCARDS[i][3],
16,
Element.ALIGN_CENTER);
ct.go();
}
pcb.restoreState();
}
----- Original Message -----
From: "John Kilbourne" <[email protected]>
To: "Post all your questions about iText here"
<[email protected]>
Sent: Tuesday, March 29, 2011 6:33:51 PM GMT -05:00 US/Canada Eastern
Subject: Re: [iText-questions] writing text with a specific UTF-8 font
Thank you, but that did not do the trick; I still get only blank cards printed.
Do I need to embed the font if my system already has the font?
John
----- Original Message -----
From: "Paulo Soares" <[email protected]>
To: "Post all your questions about iText here"
<[email protected]>
Sent: Tuesday, March 29, 2011 5:33:54 PM GMT -05:00 US/Canada Eastern
Subject: Re: [iText-questions] writing text with a specific UTF-8 font
There's no UTF-8 encoding for fonts in PDFs. Try:
sans = FontFactory.getFont("sanskrit", "Identity-H", true);
Paulo
----- Original Message -----
From: John Kilbourne
To: .
Sent: Tuesday, March 29, 2011 10:08 PM
Subject: [iText-questions] writing text with a specific UTF-8 font
I am having difficulty reading UTF-8 encoded text (Sanskrit) from a text file
and writing it onto a PDF page. No text is printed at all when I read from the
file. However, when I simply generate text in the program, it prints as I would
expect. The non-text portions of the page (the lines for the flashcards) print
fine. Also, I am able to do a round trip of reading from the file and writing
to another (text) file in UTF-8 such that I can read it as I expect; I
commented that part out.
I wonder if I am using the correct the correct Font invocations on in my
drawText() method. There seem to be a number of ways to get a font
(FontFactory, Font, BaseFont..) and I am not compeletely positive that i am
doing it the correct way. Any help is appreciated.
import java.io.*;
import java.io.FileInputStream;
import java.io.IOException;
import java.util.Scanner;
import java.util.List;
import java.util.ArrayList;
import com.itextpdf.text.Document;
import com.itextpdf.text.DocumentException;
import com.itextpdf.text.Element;
import com.itextpdf.text.Phrase;
import com.itextpdf.text.Font;
import com.itextpdf.text.FontFactory;
import com.itextpdf.text.PageSize;
import com.itextpdf.text.pdf.ColumnText;
import com.itextpdf.text.pdf.PdfContentByte;
import com.itextpdf.text.pdf.PdfWriter;
public class BusCard {
float LTMARG= 0.5f*72;
float BOTMARG= 0.25f*72;
float CARDWIDTH= 3.5f*72;
float CARDHT= 2*72f;
float PAD=15;
float [][] VRT_2BY5_BCARDS = new float[][]{
{LTMARG+PAD, BOTMARG+(5*CARDHT)-PAD, CARDWIDTH-PAD/2, CARDHT-PAD/2},
{LTMARG+2*CARDWIDTH+PAD, BOTMARG+(5*CARDHT)-PAD, CARDWIDTH-PAD/2,
CARDHT-PAD/2},
{LTMARG+PAD, BOTMARG+(4*CARDHT)-PAD, CARDWIDTH-PAD/2, CARDHT-PAD/2},
{LTMARG+2*CARDWIDTH+PAD, BOTMARG+(4*CARDHT)-PAD, CARDWIDTH-PAD/2,
CARDHT-PAD/2},
{LTMARG+PAD, BOTMARG+(3*CARDHT)-PAD, CARDWIDTH-PAD/2, CARDHT-PAD/2},
{LTMARG+2*CARDWIDTH+PAD, BOTMARG+(3*CARDHT)-PAD, CARDWIDTH-PAD/2,
CARDHT-PAD/2},
{LTMARG+PAD, BOTMARG+(2*CARDHT)-PAD, CARDWIDTH-PAD/2, CARDHT-PAD/2},
{LTMARG+2*CARDWIDTH+PAD, BOTMARG+(2*CARDHT)-PAD, CARDWIDTH-PAD/2,
CARDHT-PAD/2},
{LTMARG+PAD, BOTMARG-PAD, CARDWIDTH-PAD/2, CARDHT-PAD/2},
{LTMARG+2*CARDWIDTH+PAD, BOTMARG-PAD, CARDWIDTH-PAD/2, CARDHT-PAD/2},
};
public static final String RESULT = "C:/all/_sanskrit/flashcards/buscards.pdf";
protected static final String
cardfile="C:/all/_sanskrit/flashcards/SEL-first10.txt";
List <String>front;
List <String>back;
Font sans;
public void createPdf(String filename)
throws DocumentException, IOException {
// step 1
Document document = new Document(PageSize.LETTER);
// step 2
PdfWriter writer
= PdfWriter.getInstance(document, new FileOutputStream(filename));
// step 3
document.open();
// step 4
drawCards(writer.getDirectContentUnder());
drawText(writer.getDirectContentUnder());
// step 5
document.close();
}
void readfile()throws IOException{
Scanner scanner = new Scanner(new FileInputStream(cardfile), "UTF-8");
front = new ArrayList<String>();
back = new ArrayList<String>();
try {
while (scanner.hasNextLine()) {
String line = scanner.nextLine();
String[] fields = line.split(" \\t ");
front.add(fields[0]);
if (fields.length>1){back.add(fields[1]);}
}
} finally {
scanner.close();
}
}
protected void drawCards(PdfContentByte pcb)
throws DocumentException {
int i;
pcb.saveState();
for (i=0;i<=4; i++){
pcb.rectangle(LTMARG , BOTMARG + i*CARDHT, CARDWIDTH, CARDHT);
pcb.stroke();
}
for (i=0;i<=4; i++){
pcb.rectangle(LTMARG + CARDWIDTH, BOTMARG + i*CARDHT, CARDWIDTH, CARDHT);
pcb.stroke();
}
pcb.restoreState();
}
protected void drawText(PdfContentByte pcb)
throws IOException, DocumentException {
FontFactory.register("c:/windows/fonts/sanskrit2003.ttf", "sanskrit");
sans = FontFactory.getFont("sanskrit", "UTF-8", true);
readfile();
pcb.saveState();
for (int i=0;i<10;i++){
ColumnText ct = new ColumnText(pcb);
//Phrase myText = new Phrase(front.get(i));
Phrase myText = new Phrase(i+ " read this");
myText.setFont(sans);
//out.write(front.get(i));
ct.setSimpleColumn(myText,
VRT_2BY5_BCARDS[i][0],
VRT_2BY5_BCARDS[i][1],
VRT_2BY5_BCARDS[i][2],
VRT_2BY5_BCARDS[i][3],
16,
Element.ALIGN_CENTER);
ct.go();
}
pcb.restoreState();
}
public static void main(String[] args) throws DocumentException, IOException {
new BusCard().createPdf(RESULT);
System.out.println("done");
}
}
------------------------------------------------------------------------------
Enable your software for Intel(R) Active Management Technology to meet the
growing manageability and security demands of your customers. Businesses
are taking advantage of Intel(R) vPro (TM) technology - will your software
be a part of the solution? Download the Intel(R) Manageability Checker
today! http://p.sf.net/sfu/intel-dev2devmar
_______________________________________________
iText-questions mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/itext-questions
iText(R) is a registered trademark of 1T3XT BVBA.
Many questions posted to this list can (and will) be answered with a reference
to the iText book: http://www.itextpdf.com/book/
Please check the keywords list before you ask for examples:
http://itextpdf.com/themes/keywords.php
------------------------------------------------------------------------------
Enable your software for Intel(R) Active Management Technology to meet the
growing manageability and security demands of your customers. Businesses
are taking advantage of Intel(R) vPro (TM) technology - will your software
be a part of the solution? Download the Intel(R) Manageability Checker
today! http://p.sf.net/sfu/intel-dev2devmar
_______________________________________________
iText-questions mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/itext-questions
iText(R) is a registered trademark of 1T3XT BVBA.
Many questions posted to this list can (and will) be answered with a reference
to the iText book: http://www.itextpdf.com/book/
Please check the keywords list before you ask for examples:
http://itextpdf.com/themes/keywords.php
------------------------------------------------------------------------------
Enable your software for Intel(R) Active Management Technology to meet the
growing manageability and security demands of your customers. Businesses
are taking advantage of Intel(R) vPro (TM) technology - will your software
be a part of the solution? Download the Intel(R) Manageability Checker
today! http://p.sf.net/sfu/intel-dev2devmar
_______________________________________________
iText-questions mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/itext-questions
iText(R) is a registered trademark of 1T3XT BVBA.
Many questions posted to this list can (and will) be answered with a reference
to the iText book: http://www.itextpdf.com/book/
Please check the keywords list before you ask for examples:
http://itextpdf.com/themes/keywords.php
------------------------------------------------------------------------------
Enable your software for Intel(R) Active Management Technology to meet the
growing manageability and security demands of your customers. Businesses
are taking advantage of Intel(R) vPro (TM) technology - will your software
be a part of the solution? Download the Intel(R) Manageability Checker
today! http://p.sf.net/sfu/intel-dev2devmar
_______________________________________________
iText-questions mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/itext-questions
iText(R) is a registered trademark of 1T3XT BVBA.
Many questions posted to this list can (and will) be answered with a reference
to the iText book: http://www.itextpdf.com/book/
Please check the keywords list before you ask for examples:
http://itextpdf.com/themes/keywords.php