Sophie

Sophie

distrib > Mandriva > 2007.0 > i586 > media > contrib-release > by-pkgid > 29e0da3ddcddab73ae8621fc62033227 > files > 87

itext-manual-1.4.5-1mdv2007.0.i586.rpm

/*
 * $Id: Vertical.java,v 1.3 2005/05/09 11:52:08 blowagie Exp $
 * $Name:  $
 *
 * This code is part of the 'iText Tutorial'.
 * You can find the complete tutorial at the following address:
 * http://itextdocs.lowagie.com/tutorial/
 *
 * This code is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
 *
 * itext-questions@lists.sourceforge.net
 */
package com.lowagie.examples.fonts.styles;

import java.awt.Color;
import java.io.FileOutputStream;

import com.lowagie.text.Chunk;
import com.lowagie.text.Document;
import com.lowagie.text.Element;
import com.lowagie.text.Font;
import com.lowagie.text.PageSize;
import com.lowagie.text.pdf.BaseFont;
import com.lowagie.text.pdf.PdfContentByte;
import com.lowagie.text.pdf.PdfWriter;
import com.lowagie.text.pdf.VerticalText;

/**
 * Writing Vertical Text.
 */
public class Vertical {
    
    static String texts[] = {
        "Some very long text to check if it wraps (or not).",
        " In blue.",
        "And now in orange another very long text.",
        "", "", ""};
        
    static String encs[] = {"UniJIS-UCS2-V", "Identity-V"};
    
    /**
     * @param text
     * @return converted text
     */
    public static String convertCid(String text) {
        char cid[] = text.toCharArray();
        for (int k = 0; k < cid.length; ++k) {
            char c = cid[k];
            if (c == '\n')
                cid[k] = '\uff00';
            else
                cid[k] = (char)(c - ' ' + 8720);
        }
        return new String(cid);
    }
    
    /**
     * Writing vertical text.
     * @param args no arguments needed
     */
    public static void main(String[] args) {
        Document document = new Document(PageSize.A4, 50, 50, 50, 50);
        try {
            texts[3] = convertCid(texts[0]);
            texts[4] = convertCid(texts[1]);
            texts[5] = convertCid(texts[2]);
            PdfWriter writer = PdfWriter.getInstance(document, new FileOutputStream("vertical.pdf"));
            int idx = 0;
            document.open();
            PdfContentByte cb = writer.getDirectContent();
            for (int j = 0; j < 2; ++j) {
                BaseFont bf = BaseFont.createFont("KozMinPro-Regular", encs[j], false);
                cb.setRGBColorStroke(255, 0, 0);
                cb.setLineWidth(0);
                float x = 400;
                float y = 700;
                float height = 400;
                float leading = 30;
                int maxLines = 6;
                for (int k = 0; k < maxLines; ++k) {
                    cb.moveTo(x - k * leading, y);
                    cb.lineTo(x - k * leading, y - height);
                }
                cb.rectangle(x, y, -leading * (maxLines - 1), -height);
                cb.stroke();
                int status;
                VerticalText vt = new VerticalText(cb);
                vt.setVerticalLayout(x, y, height, maxLines, leading);
                vt.addText(new Chunk(texts[idx++], new Font(bf, 20)));
                vt.addText(new Chunk(texts[idx++], new Font(bf, 20, 0, Color.blue)));
                status = vt.go();
                System.out.println(status);
                vt.setAlignment(Element.ALIGN_RIGHT);
                vt.addText(new Chunk(texts[idx++], new Font(bf, 20, 0, Color.orange)));
                status = vt.go();
                System.out.println(status);
                document.newPage();
            }
            document.close();
        }
        catch (Exception de) {
            de.printStackTrace();
        }
    }


}