冰蓝科技
|
028-81705109
|
|
微信扫一扫
|

Spire.Cloud 纯前端文档控件

Spire.XLS 11.7.0已正式发布。该版本支持获取单元格是否设置了自适应行高/列宽、获取.xls格式文档中的几何形状等新功能;并修复了将Excel转为PDF、加载及保存文档时出现的问题。新功能及问题修复详情如下。

新功能:

问题修复:


下载Spire.XLS 11.7.0,请点击:

https://www.e-iceblue.cn/Downloads/Spire-XLS-NET.html

本文介绍如何使用Spire.PDF for Java来实现PDF表格跨页时重复显示表头行。

import com.spire.pdf.*;
import com.spire.pdf.graphics.*;
import com.spire.pdf.grid.PdfGrid;
import com.spire.pdf.grid.PdfGridRow;

import java.awt.*;

public class RepeatTableHeaderRow {
    public static void main(String[] args) {
        //新建一个PDF文档
        PdfDocument pdf = new PdfDocument();

        //添加一页
        PdfPageBase page = pdf.getPages().add();

        //创建PdfGrid类的对象
        PdfGrid grid = new PdfGrid();

        //设置单元格填充
        grid.getStyle().setCellPadding(new PdfPaddings(1,1,1,1));

        //添加表格列数
        grid.getColumns().add(3);

        //添加表头行及表格数据
        PdfGridRow[] pdfGridRows = grid.getHeaders().add(1);
        for (int i = 0; i < pdfGridRows.length; i++)
        {
            pdfGridRows[i].getStyle().setFont(new PdfTrueTypeFont(new Font("Arial", Font.PLAIN,12), true));//指定字体
            pdfGridRows[i].getCells().get(0).setValue("NAME");
            pdfGridRows[i].getCells().get(1).setValue("SUBJECT");
            pdfGridRows[i].getCells().get(2).setValue("SCORES");
            pdfGridRows[i].getStyle().setTextBrush(PdfBrushes.getRed());
        }

        //设置重复表头(表格跨页时)
        grid.setRepeatHeader(true);

        //添加数据到表格
        for (int i = 0; i < 60; i++)
        {
            PdfGridRow row = grid.getRows().add();
            for (int j = 0; j < grid.getColumns().getCount();j++)
            {
                row.getCells().get(j).setValue("(Row " + (i+1) + ", column " + (j+1) + ")");
            }
        }

        //在PDF页面绘制表格
        grid.draw(page,0,40);

        //保存文档
        pdf.saveToFile("Result.pdf");
        pdf.dispose();
    }
}

效果如图:

Java 设置 PDF 跨页表格重复显示表头行

Spire.Doc 9.7.3现已发布。 此次更新增强了转换Word到PDF及转换Html到Word 的功能,同时还修复了一些在加载、保存、打印Word文档时出现的问题。具体修复内容如下。

问题修复:


获取Spire.Doc 9.7.3,请点击:

https://www.e-iceblue.cn/Downloads/Spire-Doc-NET.html

Spire.Doc for Java 4.7已发布。该版本增强了转换Word/RTF到PDF,以及转换HTML到Word的功能。此外,本次更新还修复了加载和保存Word文档等时出现的问题。详情请阅读以下内容。

问题修复:


获取Spire.Doc for Java 4.7请点击:

https://www.e-iceblue.cn/Downloads/Spire-Doc-JAVA.html

本文介绍如何使用Spire.Presentation for Java设置形状中文字的对齐方式。

import com.spire.presentation.*;
import com.spire.presentation.drawing.FillFormatType;

import java.awt.*;
import java.awt.geom.Rectangle2D;

public class SetTextAlignment {
    public static void main(String[] args) throws Exception {

        //创建Presentation对象
        Presentation presentation = new Presentation();
        presentation.getSlideSize().setType(SlideSizeType.SCREEN_16_X_9);

        //添加形状
        IAutoShape textShape = presentation.getSlides().get(0).getShapes().appendShape(ShapeType.RECTANGLE, new Rectangle2D.Float(50, 50, 400, 200));
        textShape.getShapeStyle().getLineColor().setColor(Color.DARK_GRAY);
        textShape.getFill().setFillType(FillFormatType.NONE);

        //删除默认段落
        textShape.getTextFrame().getParagraphs().clear();

        //添加段落和文字
        textShape.getTextFrame().getParagraphs().append(new ParagraphEx());
        textShape.getTextFrame().getParagraphs().get(0).getTextRanges().append(new PortionEx("文字居右靠下"));
        textShape.getTextFrame().getParagraphs().get(0).getTextRanges().get(0).setFontHeight(20f);
        textShape.getTextFrame().getParagraphs().get(0).getTextRanges().get(0).setLatinFont(new TextFont("宋体"));
        textShape.getTextFrame().getParagraphs().get(0).getTextRanges().get(0).getFill().setFillType(FillFormatType.SOLID);
        textShape.getTextFrame().getParagraphs().get(0).getTextRanges().get(0).getFill().getSolidColor().setColor(Color.BLACK);

        //设置文字水平靠右
        textShape.getTextFrame().getParagraphs().get(0).setAlignment(TextAlignmentType.RIGHT);

        //设置文字垂直靠下
        textShape.getTextFrame().setAnchoringType(TextAnchorType.BOTTOM);

        //保存文档
        presentation.saveToFile("TextAlignment.pptx",FileFormat.PPTX_2013);
    }
}

Java 设置 PPT 形状中文字的对齐方式

本文介绍如何使用Spire.Doc for Java来读取Word表格中的文本数据和图片。

用于测试的Word文档如下:

Java 读取 Word 表格中的文本和图片

import com.spire.doc.*;
import com.spire.doc.documents.Paragraph;
import com.spire.doc.fields.DocPicture;
import com.spire.doc.interfaces.ITable;

import javax.imageio.ImageIO;
import java.awt.image.RenderedImage;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

public class GetTable {
    public static void main(String[] args)throws IOException {
        //加载Word测试文档
        Document doc = new Document();
        doc.loadFromFile("inputfile.docx");

        //获取第一节
        Section section = doc.getSections().get(0);

        //获取第一个表格
        ITable table = section.getTables().get(0);

        //创建txt文件(用于写入表格中提取的文本)
        String output = "ReadTextFromTable.txt";
        File textfile = new File(output);
        if (textfile.exists())
        {
            textfile.delete();
        }
        textfile.createNewFile();
        FileWriter fw = new FileWriter(textfile, true);
        BufferedWriter bw = new BufferedWriter(fw);

        //创建List
        List images = new ArrayList();

        //遍历表格中的行
        for (int i = 0; i < table.getRows().getCount(); i++)
        {
            TableRow row = table.getRows().get(i);
            //遍历每行中的单元格
            for (int j = 0; j < row.getCells().getCount(); j++)
            {
                TableCell cell = row.getCells().get(j);
                //遍历单元格中的段落
                for (int k = 0; k < cell.getParagraphs().getCount(); k++)
                {
                    Paragraph paragraph = cell.getParagraphs().get(k);
                    bw.write(paragraph.getText() + "\t");//获取文本内容

                    //遍历段落中的所有子对象
                    for (int x = 0; x < paragraph.getChildObjects().getCount(); x++)
                    {
                        Object object = paragraph.getChildObjects().get(x);
                        //判定对象是否为图片
                        if (object instanceof DocPicture)
                        {
                            //获取图片
                            DocPicture picture = (DocPicture) object;
                            images.add(picture.getImage());
                        }
                    }
                }
            }
            bw.write("\r\n");//写入内容到txt文件
        }
        bw.flush();
        bw.close();
        fw.close();

        //将图片以PNG文件格式保存
        for (int z = 0; z < images.size(); z++)
        {
            File imagefile = new File(String.format("提取的表格图片-%d.png", z));
            ImageIO.write((RenderedImage) images.get(z), "PNG", imagefile);
        }
    }
}

文本数据读取结果:

Java 读取 Word 表格中的文本和图片

图片读取结果:

Java 读取 Word 表格中的文本和图片

在创建PDF portfolio时,Spire.PDF for Java支持添加文件或文件夹到portfolio。本文将介绍如何使用Spire.PDF for Java创建PDF portfolio,并添加文件/文件夹。

创建PDF portfolio并添加文件

import com.spire.pdf.FileFormat;
import com.spire.pdf.PdfDocument;

public class CreatePortfolioWithFiles {
    public static void main(String []args){

        String[] files = new String[] { "sample.pdf", "sample.docx", "sample.xlsx","sample.pptx","image.jpg" };

        //创建PdfDocument实例
        PdfDocument pdf = new PdfDocument();

        for (int i = 0; i < files.length; i++)
        {
            //创建PDF文件包并添加文件
            pdf.getCollection().addFile(files[i]);
        }
        
        //保存文档
        pdf.saveToFile("PortfolioWithFiles.pdf", FileFormat.PDF);
        pdf.dispose();
    }
}

结果文档:

Java 创建 PDF 文件包(Portfolio)

创建PDF portfolio并添加文件夹

import com.spire.pdf.FileFormat;
import com.spire.pdf.PdfDocument;
import com.spire.pdf.collections.PdfFolder;

public class CreatePortfolioWithFolders {
    public static void main(String []args){

        String[] files = new String[] { "sample.pdf", "sample.docx", "sample.xlsx","sample.pptx","image.jpg" };

        //创建PdfDocument实例
        PdfDocument pdf = new PdfDocument();

        for (int i = 0; i < files.length; i++)
        {
            //创建PDF文件包并添加文件夹
            PdfFolder folder = pdf.getCollection().getFolders().createSubfolder("folder" + i);
            folder.addFile(files[i]);
        }

        //保存文档
        pdf.saveToFile("PortfolioWithFolders.pdf", FileFormat.PDF);
        pdf.dispose();
    }
}

结果文档:

Java 创建 PDF 文件包(Portfolio)

本文将通过使用Spire.Barcode for Java展示如何在创建一维条码及二维条码时,设置条码数据不可见,即创建后的条码效果图中不展示条码包含的数据文本信息。只需通过设置settings.setShowText(false);即可。

1、创建一维条码时,设置文本数据不可见

import com.spire.barcode.BarCodeGenerator;
import com.spire.barcode.BarCodeType;
import com.spire.barcode.BarcodeSettings;

import javax.imageio.ImageIO;
import java.awt.*;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;

public class CreateBarcode {
    public static void main(String[] args) throws IOException {
        BarcodeSettings settings = new BarcodeSettings();//创建BarcodeSettings实例
        settings.setType(BarCodeType.Codabar);//指定条码类型
        settings.setData("123456789");//设置条码数据
        settings.setData2D("123456789");//设置条码显示数据
        settings.setShowText(false);//设置条码数据不显示
        /*settings.setShowText(true);//显示数据文本
        settings.setShowTextOnBottom(true);//设置数据文本显示在条码底部*/
        settings.setX(0.8f);//设置黑白条宽度
        settings.setImageHeight(50);//设置生成的条码图片高度
        settings.setImageWidth(70);//设置生成的条码图片宽度
        settings.hasBorder(true);//设置边框可见
        settings.setBorderColor(new Color(135,206,250));//设置条码边框颜色
        settings.setBorderWidth(1);//设置条码边框宽度
        settings.setBackColor(new Color(240,255,255));//设置条码背景色

        BarCodeGenerator barCodeGenerator = new BarCodeGenerator(settings);//创建BarCodeGenerator实例
        BufferedImage bufferedImage = barCodeGenerator.generateImage();//根据settings生成图像数据,保存至BufferedImage实例
        ImageIO.write(bufferedImage, "png", new File("Codabar.png"));//保存条码为PNG图片
    }
}

条码效果:

Java 创建一维、二维条码时设置数据文本不可见

2、创建二维码时,设置文本数据不可见

import com.spire.barcode.*;

import javax.imageio.ImageIO;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;

public class CreateQR {
    public static void main(String[] args) throws IOException {

        BarcodeSettings settings = new BarcodeSettings();//创建BarcodeSettings实例
        settings.setType(BarCodeType.QR_Code);//设置条码类型为QR二维码
        settings.setData("Hello 123456789");//设置二维码数据
        settings.setData2D("Hello 123456789");//设置二维码显示数据
        settings.setShowText(false);//设置条码数据不显示
        /*settings.setShowText(true);//显示数据文本
        settings.setShowTextOnBottom(true);//设置数据文本显示在条码底部*/
        settings.setQRCodeDataMode(QRCodeDataMode.Alpha_Number);//设置数据类型
        settings.setImageWidth(50);//设置生成的二维码图片宽度
        settings.setImageHeight(50);//设置生成的二维码图片高度
        settings.setX(3.0f);//设置二维码模型宽度
        settings.setQRCodeECL(QRCodeECL.H);//设置二维码纠错级别
        settings.hasBorder(false);//设置二维码边框不可见

        BarCodeGenerator barCodeGenerator = new BarCodeGenerator(settings);//创建BarCodeGenerator实例
        BufferedImage bufferedImage = barCodeGenerator.generateImage();//根据settings生成图像数据,保存至BufferedImage实例
        ImageIO.write(bufferedImage, "png", new File("QRCode.png"));//保存二维码图片为PNG格式
    }
}

二维码效果:

Java 创建一维、二维条码时设置数据文本不可见

Spire.XLS for Java 4.6.5已发布。本次更新增强了转换Excel到PDF的功能,同时还修复了加载和拷贝Excel文档时出现的问题。详情请阅读以下内容。

问题修复:


下载Spire.XLS for Java 4.6.5请点击:

https://www.e-iceblue.cn/Downloads/Spire-XLS-JAVA.html

Spire.Presentation 6.6.6已发布。该版本修复了ole对象相关的问题,同时还修复了加载PPT文件等时出现的问题。详情请阅读以下内容。

问题修复:


获取Spire.Presentation 6.6.6请点击:

https://www.e-iceblue.cn/Downloads/Spire-Presentation-NET.html