Note #1: Make sure that the font license allows embedding!
Note #2: Embedding of Chinese, Japanese and Korean fonts is not supported!
using System;
using System.IO;
using System.Collections;
using System.Collections.Generic;
using System.Text;
using PDFjet.NET;
/**
* Example_07.cs
*
*/
public class Example_07 {
public Example_07() {
FileStream fos = new FileStream("Example_07.pdf", FileMode.Create);
BufferedStream bos = new BufferedStream(fos);
PDF pdf = new PDF(bos, Compliance.PDF_A_1B);
// Before you enable this flag please read PDFJET.ZLIB.TXT
// in the "optional" directory.
// pdf.setCompressor(Compressor.ORIGINAL_ZLIB);
FileStream fis = new FileStream(
"fonts/DroidFonts/DroidSerif-Regular.otf", FileMode.Open);
Font f1 = new Font(pdf, fis, CodePage.UNICODE, Embed.YES);
fis = new FileStream(
"fonts/DroidFonts/DroidSerif-Italic.otf", FileMode.Open);
Font f2 = new Font(pdf, fis, CodePage.UNICODE, Embed.YES);
Page page = new Page(pdf, Letter.PORTRAIT);
f1.SetSize(15);
f2.SetSize(15);
int x_pos = 70;
int y_pos = 70;
TextLine text = new TextLine(f1);
text.SetPosition(x_pos, y_pos);
StringBuilder buf = new StringBuilder();
for (int i = 0x20; i < 0x7F; i++) {
if (i % 16 == 0) {
text.SetText(buf.ToString());
text.SetPosition(x_pos, y_pos += 24);
text.DrawOn(page);
buf = new StringBuilder();
}
buf.Append((char) i);
}
y_pos += 24;
buf = new StringBuilder();
for (int i = 0x390; i < 0x3EF; i++) {
if (i % 16 == 0) {
text.SetText(buf.ToString());
text.SetPosition(x_pos, y_pos += 24);
text.DrawOn(page);
buf = new StringBuilder();
}
if (i == 0x3A2
|| i == 0x3CF
|| i == 0x3D0
|| i == 0x3D3
|| i == 0x3D4
|| i == 0x3D5
|| i == 0x3D7
|| i == 0x3D8
|| i == 0x3D9
|| i == 0x3DA
|| i == 0x3DB
|| i == 0x3DC
|| i == 0x3DD
|| i == 0x3DE
|| i == 0x3DF
|| i == 0x3E0
|| i == 0x3EA
|| i == 0x3EB
|| i == 0x3EC
|| i == 0x3ED
|| i == 0x3EF) {
// Replace .notdef with space to generate PDF/A compliant PDF
buf.Append((char) 0x0020);
}
else {
buf.Append((char) i);
}
}
y_pos += 24;
buf = new StringBuilder();
for (int i = 0x410; i < 0x46F; i++) {
if (i % 16 == 0) {
text.SetText(buf.ToString());
text.SetPosition(x_pos, y_pos += 24);
text.DrawOn(page);
buf = new StringBuilder();
}
buf.Append((char) i);
}
x_pos = 370;
y_pos = 70;
text = new TextLine(f2);
text.SetPosition(x_pos, y_pos);
buf = new StringBuilder();
for (int i = 0x20; i < 0x7F; i++) {
if (i % 16 == 0) {
text.SetText(buf.ToString());
text.SetPosition(x_pos, y_pos += 24);
text.DrawOn(page);
buf = new StringBuilder();
}
buf.Append((char) i);
}
y_pos += 24;
buf = new StringBuilder();
for (int i = 0x390; i < 0x3EF; i++) {
if (i % 16 == 0) {
text.SetText(buf.ToString());
text.SetPosition(x_pos, y_pos += 24);
text.DrawOn(page);
buf = new StringBuilder();
}
if (i == 0x3A2
|| i == 0x3CF
|| i == 0x3D0
|| i == 0x3D3
|| i == 0x3D4
|| i == 0x3D5
|| i == 0x3D7
|| i == 0x3D8
|| i == 0x3D9
|| i == 0x3DA
|| i == 0x3DB
|| i == 0x3DC
|| i == 0x3DD
|| i == 0x3DE
|| i == 0x3DF
|| i == 0x3E0
|| i == 0x3EA
|| i == 0x3EB
|| i == 0x3EC
|| i == 0x3ED
|| i == 0x3EF) {
// Replace .notdef with space to generate PDF/A compliant PDF
buf.Append((char) 0x0020);
}
else {
buf.Append((char) i);
}
}
y_pos += 24;
buf = new StringBuilder();
for (int i = 0x410; i < 0x46F; i++) {
if (i % 16 == 0) {
text.SetText(buf.ToString());
text.SetPosition(x_pos, y_pos += 24);
text.DrawOn(page);
buf = new StringBuilder();
}
buf.Append((char) i);
}
pdf.Flush();
bos.Close();
}
public static void Main(String[] args) {
new Example_07();
}
} // End of Example_07.cs
© 2011 Innovatics Inc.
