亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? columntext.java

?? iText可以制作中文PDF文件的JAVA源程序最新版下載
?? JAVA
?? 第 1 頁 / 共 2 頁
字號:
/* * $Id: ColumnText.java,v 1.28 2002/11/19 08:33:35 blowagie Exp $ * $Name:  $ * * Copyright 2001, 2002 by Paulo Soares. * * The contents of this file are subject to the Mozilla Public License Version 1.1 * (the "License"); you may not use this file except in compliance with the License. * You may obtain a copy of the License at http://www.mozilla.org/MPL/ * * Software distributed under the License is distributed on an "AS IS" basis, * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License * for the specific language governing rights and limitations under the License. * * The Original Code is 'iText, a free JAVA-PDF library'. * * The Initial Developer of the Original Code is Bruno Lowagie. Portions created by * the Initial Developer are Copyright (C) 1999, 2000, 2001, 2002 by Bruno Lowagie. * All Rights Reserved. * Co-Developer of the code is Paulo Soares. Portions created by the Co-Developer * are Copyright (C) 2000, 2001, 2002 by Paulo Soares. All Rights Reserved. * * Contributor(s): all the names of the contributors are added in the source code * where applicable. * * Alternatively, the contents of this file may be used under the terms of the * LGPL license (the "GNU LIBRARY GENERAL PUBLIC LICENSE"), in which case the * provisions of LGPL are applicable instead of those above.  If you wish to * allow use of your version of this file only under the terms of the LGPL * License and not to allow others to use your version of this file under * the MPL, indicate your decision by deleting the provisions above and * replace them with the notice and other provisions required by the LGPL. * If you do not delete the provisions above, a recipient may use your version * of this file under either the MPL or the GNU LIBRARY GENERAL PUBLIC LICENSE. * * This library is free software; you can redistribute it and/or modify it * under the terms of the MPL as stated above or under the terms of the GNU * Library General Public License as published by the Free Software Foundation; * either version 2 of the License, or any later version. * * This library 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. See the GNU Library general Public License for more * details. * * If you didn't download this code from the following link, you should check if * you aren't using an obsolete version: * http://www.lowagie.com/iText/ */package com.lowagie.text.pdf;import java.util.ArrayList;import java.util.Iterator;import com.lowagie.text.Phrase;import com.lowagie.text.Chunk;import com.lowagie.text.Element;import com.lowagie.text.DocumentException;/** * Formats text in a columnwise form. The text is bound * on the left and on the right by a sequence of lines. This allows the column * to have any shape, not only rectangular. * <P> * Several parameters can be set like the first paragraph line indent and * extra space between paragraphs. * <P> * A call to the method <CODE>go</CODE> will return one of the following * situations: the column ended or the text ended. * <P> * I the column ended, a new column definition can be loaded with the method * <CODE>setColumns</CODE> and the method <CODE>go</CODE> can be called again. * <P> * If the text ended, more text can be loaded with <CODE>addText</CODE> * and the method <CODE>go</CODE> can be called again.<BR> * The only limitation is that one or more complete paragraphs must be loaded * each time. * <P> * Full bidirectional reordering is supported. If the run direction is * <CODE>PdfWriter.RUN_DIRECTION_RTL</CODE> the meaning of the horizontal * alignments and margins is mirrored. * @author Paulo Soares (psoares@consiste.pt) */public class ColumnText {        protected int runDirection = PdfWriter.RUN_DIRECTION_DEFAULT;    public static final float GLOBAL_SPACE_CHAR_RATIO = 0;        /** Signals that there is no more text available. */    public static final int NO_MORE_TEXT = 1;        /** Signals that there is no more column. */    public static final int NO_MORE_COLUMN = 2;        /** The column is valid. */    protected static final int LINE_STATUS_OK = 0;        /** The line is out the column limits. */    protected static final int LINE_STATUS_OFFLIMITS = 1;        /** The line cannot fit this column position. */    protected static final int LINE_STATUS_NOLINE = 2;        /** Upper bound of the column. */    protected float maxY;        /** Lower bound of the column. */    protected float minY;        /** The column alignment. Default is left alignment. */    protected int alignment = Element.ALIGN_LEFT;        /** The left column bound. */    protected ArrayList leftWall;        /** The right column bound. */    protected ArrayList rightWall;        /** The chunks that form the text. *///    protected ArrayList chunks = new ArrayList();    protected BidiLine bidiLine = new BidiLine();        /** The current y line location. Text will be written at this line minus the leading. */    protected float yLine;        /** The leading for the current line. */    protected float currentLeading = 16;        /** The fixed text leading. */    protected float fixedLeading = 16;        /** The text leading that is multiplied by the biggest font size in the line. */    protected float multipliedLeading = 0;        /** The <CODE>PdfContent</CODE> where the text will be written to. */    protected PdfContentByte canvas;        /** The line status when trying to fit a line to a column. */    protected int lineStatus;        /** The first paragraph line indent. */    protected float indent = 0;        /** The following paragraph lines indent. */    protected float followingIndent = 0;        /** The right paragraph lines indent. */    protected float rightIndent = 0;        /** The extra space between paragraphs. */    protected float extraParagraphSpace = 0;        /** Marks the chunks to be eliminated when the line is written. */    protected int currentChunkMarker = -1;        /** The chunk created by the splitting. */    protected PdfChunk currentStandbyChunk;        /** The chunk created by the splitting. */    protected String splittedChunkText;        /** The width of the line when the column is defined as a simple rectangle. */    protected float rectangularWidth = -1;        /** Holds value of property spaceCharRatio. */    private float spaceCharRatio = GLOBAL_SPACE_CHAR_RATIO;    private boolean lastWasNewline = true;    /**     * Creates a <CODE>ColumnText</CODE>.     * @param canvas the place where the text will be written to. Can     * be a template.     */    public ColumnText(PdfContentByte canvas) {        this.canvas = canvas;    }        /**     * Adds a <CODE>Phrase</CODE> to the current text array.     * @param phrase the text     */    public void addText(Phrase phrase) {        for (Iterator j = phrase.getChunks().iterator(); j.hasNext();) {            bidiLine.addChunk(new PdfChunk((Chunk)j.next(), null));        }    }        /**     * Adds a <CODE>Chunk</CODE> to the current text array.     * @param chunk the text     */    public void addText(Chunk chunk) {        bidiLine.addChunk(new PdfChunk(chunk, null));    }        /**     * Converts a sequence of lines representing one of the column bounds into     * an internal format.     * <p>     * Each array element will contain a <CODE>float[4]</CODE> representing     * the line x = ax + b.     * @param cLine the column array     * @return the converted array     */    protected ArrayList convertColumn(float cLine[]) {        if (cLine.length < 4)            throw new RuntimeException("No valid column line found.");        ArrayList cc = new ArrayList();        for (int k = 0; k < cLine.length - 2; k += 2) {            float x1 = cLine[k];            float y1 = cLine[k + 1];            float x2 = cLine[k + 2];            float y2 = cLine[k + 3];            if (y1 == y2)                continue;            // x = ay + b            float a = (x1 - x2) / (y1 - y2);            float b = x1 - a * y1;            float r[] = new float[4];            r[0] = Math.min(y1, y2);            r[1] = Math.max(y1, y2);            r[2] = a;            r[3] = b;            cc.add(r);            maxY = Math.max(maxY, r[1]);            minY = Math.min(minY, r[0]);        }        if (cc.size() == 0)            throw new RuntimeException("No valid column line found.");        return cc;    }        /**     * Finds the intersection between the <CODE>yLine</CODE> and the column. It will     * set the <CODE>lineStatus</CODE> apropriatly.     * @param wall the column to intersect     * @return the x coordinate of the intersection     */    protected float findLimitsPoint(ArrayList wall) {        lineStatus = LINE_STATUS_OK;        if (yLine < minY || yLine > maxY) {            lineStatus = LINE_STATUS_OFFLIMITS;            return 0;        }        for (int k = 0; k < wall.size(); ++k) {            float r[] = (float[])wall.get(k);            if (yLine < r[0] || yLine > r[1])                continue;            return r[2] * yLine + r[3];        }        lineStatus = LINE_STATUS_NOLINE;        return 0;    }        /**     * Finds the intersection between the <CODE>yLine</CODE> and the two     * column bounds. It will set the <CODE>lineStatus</CODE> apropriatly.     * @return a <CODE>float[2]</CODE>with the x coordinates of the intersection     */    protected float[] findLimitsOneLine() {        for (;;) {            float x1 = findLimitsPoint(leftWall);            if (lineStatus == LINE_STATUS_OFFLIMITS || lineStatus == LINE_STATUS_NOLINE)                return null;            float x2 = findLimitsPoint(rightWall);            if (lineStatus == LINE_STATUS_NOLINE)                return null;            return new float[]{x1, x2};        }    }        /**     * Finds the intersection between the <CODE>yLine</CODE>,     * the <CODE>yLine-leading</CODE>and the two     * column bounds. It will set the <CODE>lineStatus</CODE> apropriatly.     * @return a <CODE>float[4]</CODE>with the x coordinates of the intersection     */    protected float[] findLimitsTwoLines() {        for (;;) {            float x1[] = findLimitsOneLine();            if (lineStatus == LINE_STATUS_OFFLIMITS)                return null;            yLine -= currentLeading;            if (lineStatus == LINE_STATUS_NOLINE) {                continue;            }            float x2[] = findLimitsOneLine();            if (lineStatus == LINE_STATUS_OFFLIMITS)                return null;            if (lineStatus == LINE_STATUS_NOLINE) {                yLine -= currentLeading;                continue;            }            if (x1[0] >= x2[1] || x2[0] >= x1[1])                continue;            return new float[]{x1[0], x1[1], x2[0], x2[1]};        }    }        /**     * Sets the columns bounds. Each column bound is described by a     * <CODE>float[]</CODE> with the line points [x1,y1,x2,y2,...].     * The array must have at least 4 elements.     * @param leftLine the left column bound     * @param rightLine the right column bound     */    public void setColumns(float leftLine[], float rightLine[]) {        rightWall = convertColumn(rightLine);        leftWall = convertColumn(leftLine);        rectangularWidth = -1;    }        /**     * Simplified method for rectangular columns.     * @param phrase a <CODE>Phrase</CODE>     * @param llx the lower left x corner     * @param lly the lower left y corner     * @param urx the upper right x corner     * @param ury the upper right y corner     * @param leading the leading     * @param alignment the column alignment     */    public void setSimpleColumn(Phrase phrase, float llx, float lly, float urx, float ury, float leading, int alignment) {        addText(phrase);        setSimpleColumn(llx, lly, urx, ury, leading, alignment);    }        /**     * Simplified method for rectangular columns.     * @param llx the lower left x corner     * @param lly the lower left y corner     * @param urx the upper right x corner     * @param ury the upper right y corner     * @param leading the leading     * @param alignment the column alignment     */

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
激情伊人五月天久久综合| 国产成人综合网站| 亚洲精品va在线观看| 一区二区在线观看免费| 91在线视频在线| 国产成人福利片| 国产一区二区视频在线| 精品一区二区三区在线播放 | 日韩成人精品在线观看| 亚洲一区二区美女| 日韩精品乱码免费| 黄色日韩三级电影| 成人国产精品免费观看视频| 日本乱人伦aⅴ精品| 精品视频色一区| 另类小说视频一区二区| 国产不卡视频一区| 成人精品电影在线观看| 色综合久久九月婷婷色综合| 欧美精品一级二级| 精品福利一二区| 亚洲三级电影全部在线观看高清| 一区二区激情视频| 精品一区二区三区不卡| 99久久精品国产观看| 精品视频1区2区| 欧美mv日韩mv亚洲| 亚洲欧洲综合另类| 美国三级日本三级久久99| 国产福利精品一区二区| 日本韩国欧美在线| 精品国产乱码久久久久久影片| 中文字幕欧美激情| 日韩电影在线一区| 91麻豆国产自产在线观看| 这里只有精品电影| 中文字幕制服丝袜一区二区三区| 亚洲1区2区3区4区| av电影在线观看一区| 一区二区三区影院| 三级久久三级久久| 成人免费高清在线| 精品国产欧美一区二区| 一区二区三区资源| 欧美日韩中文精品| 国产亚洲成年网址在线观看| 一个色综合av| eeuss国产一区二区三区| 26uuu欧美日本| 午夜亚洲福利老司机| a美女胸又www黄视频久久| 日韩亚洲国产中文字幕欧美| 亚洲九九爱视频| www.日本不卡| 国产亚洲一二三区| 久久精品999| 7777精品伊人久久久大香线蕉的| 国产精品国产三级国产三级人妇| 美女久久久精品| 欧美精品电影在线播放| 亚洲一区二区美女| 91官网在线观看| 亚洲色图欧美激情| 成人av免费在线观看| 中文字幕av一区二区三区免费看 | 日韩和欧美一区二区三区| 91极品视觉盛宴| 一区二区三区中文字幕精品精品| 丁香天五香天堂综合| 久久精品日产第一区二区三区高清版| 青娱乐精品在线视频| 日韩视频在线一区二区| 日韩精品91亚洲二区在线观看| 欧美日韩精品福利| 午夜精品福利一区二区蜜股av| 欧美午夜不卡视频| 视频一区二区欧美| 日韩一区二区中文字幕| 久久99国产精品久久99| 26uuu亚洲综合色欧美| 国产高清精品久久久久| 国产精品热久久久久夜色精品三区| 国产激情一区二区三区| 中文字幕av一区二区三区免费看 | 亚洲一区二区欧美激情| 欧美日韩国产在线播放网站| 婷婷综合另类小说色区| 日韩精品一区二区三区视频| 精品国产一区二区在线观看| 欧美最猛性xxxxx直播| 亚洲乱码国产乱码精品精98午夜| aaa欧美大片| 亚洲永久免费视频| 日韩三级电影网址| 成人动漫av在线| 亚洲影视在线播放| 日韩午夜电影av| 国产精品一区二区x88av| 中文字幕日韩av资源站| 欧美日本一区二区三区| 国产最新精品免费| 国产精品电影院| 欧美视频日韩视频在线观看| 美女一区二区三区在线观看| 国产精品剧情在线亚洲| 欧美日韩国产精选| 高清成人在线观看| 亚洲福利一区二区| 中文字幕高清一区| 欧美人动与zoxxxx乱| 国产成人精品亚洲日本在线桃色| 一区二区三区在线观看网站| 精品久久久久久久人人人人传媒 | 一区二区三区日韩精品视频| 欧美一区二区私人影院日本| 成人国产在线观看| 美女看a上一区| 一区二区三区四区高清精品免费观看 | 久久久久久亚洲综合影院红桃| 91视频www| 韩国v欧美v日本v亚洲v| 一区二区三区小说| 国产精品区一区二区三区 | 国产乱码精品一区二区三区av| 亚洲六月丁香色婷婷综合久久| 2023国产精华国产精品| 欧美三级中文字| 色综合色综合色综合色综合色综合| 美脚の诱脚舐め脚责91| 亚洲在线视频免费观看| 国产精品久久三区| 久久夜色精品国产欧美乱极品| 4438亚洲最大| 欧美性猛交一区二区三区精品| 成人av电影免费在线播放| 国产一区二区三区免费看| 免费看日韩精品| 日日骚欧美日韩| 爽爽淫人综合网网站| 亚洲综合久久久久| 亚洲一区在线播放| 夜色激情一区二区| 一区二区成人在线视频 | 精品久久久久av影院| 欧美丰满少妇xxxbbb| 欧美日高清视频| 欧美日韩国产一级片| 欧美日韩高清在线| 5月丁香婷婷综合| 欧美一区二区三区的| 4hu四虎永久在线影院成人| 欧美肥妇bbw| 欧美电影精品一区二区| 精品成人私密视频| 久久精品男人的天堂| 国产精品护士白丝一区av| 最新国产成人在线观看| 中文字幕日本不卡| 一区二区三区色| 亚洲二区在线观看| 天天综合天天综合色| 久久国产精品99久久久久久老狼| 美女视频网站久久| 国产成人在线视频播放| 成人aaaa免费全部观看| 日本乱人伦一区| 日韩欧美精品在线| 久久久久久久一区| 亚洲另类春色校园小说| 日韩国产高清在线| 激情六月婷婷综合| 北条麻妃一区二区三区| 在线精品视频一区二区三四 | 久久黄色级2电影| 高清av一区二区| 在线观看视频91| 欧美不卡一二三| 自拍av一区二区三区| 天天综合天天综合色| 国产成人av在线影院| 欧美在线观看禁18| 日韩一区二区三区视频在线 | 久久精品免费在线观看| 亚洲欧美日韩国产综合| 日本成人中文字幕| 国产91对白在线观看九色| 欧美日韩日日夜夜| 国产日韩欧美a| 亚洲小少妇裸体bbw| 国产精品99久久久久久似苏梦涵| 色婷婷久久久亚洲一区二区三区| 日韩一区国产二区欧美三区| 综合中文字幕亚洲| 另类小说图片综合网| 在线视频欧美精品| 国产亚洲午夜高清国产拍精品| 亚洲国产精品麻豆| 99精品国产视频| 久久亚洲私人国产精品va媚药| 亚洲五码中文字幕|