为有中文需求的客户提供多渠道中文技术支持.

Tue Feb 20, 2024 7:01 am

版本:9.12.3

pdf文件插入图片时,图片能否设置成word格式文字环绕的衬于文字下方样式;

PaulPierce
 
Posts: 6
Joined: Tue Feb 20, 2024 6:23 am

Wed Feb 21, 2024 6:57 am

您好,

感谢您的咨询。
我们的PDF产品目前不支持直接将图片置于底层。但是您可以通过先把图片绘制到新的PDF文档中,再将原文档绘制到这个新文档中即可实现您想要的效果
Code: Select all
        // 创建一个PdfDocument并加载一个文档
        PdfDocument pdf = new PdfDocument();
        pdf.loadFromFile("document.pdf");

        // 创建一个新的PdfDocument用于绘制图片和内容
        PdfDocument pdf1 = new PdfDocument();

        // 加载一张图片
        PdfImage image = PdfImage.fromFile("test.jpg");

        // 设置图片的宽高
        double width = image.getWidth() * 0.2;
        double height = image.getHeight() * 0.2;

        // 新文档添加一页 页的大小参照原始文档,
        PdfPageBase page = pdf1.getPages().add(pdf.getPages().get(0).getSize(), new PdfMargins(0));

        // 绘制图片
        page.getCanvas().drawImage(image,200,500,width,height);

        // 将源文档的第一页模板绘制到新的文档中
        page.getCanvas().drawTemplate(pdf.getPages().get(0).createTemplate(), new Point2D.Float(0,0));

        pdf1.saveToFile("result.pdf");

如果您还有其他问题,欢迎您随时咨询。

Best regards,
Triste
E-iceblue support team
User avatar

Triste.Dai
 
Posts: 1000
Joined: Tue Nov 15, 2022 3:59 am

Fri Mar 08, 2024 3:26 am

感谢解答,目前在使用过程中我还遇到些其它的问题
1、在pdf插入表格时,使用的grid.setDataSource()方法插入数据,当表格跨页时,2个不同页的表格无法对齐;
2、在pdf表格中1个单元格数据是C₇H₄NNaO₃S·2H₂O带下标 + 中文,使用了很多种字体,中文和下标₇、₄这些无法同时出现;
请问有什么解决方法吗?

PaulPierce
 
Posts: 6
Joined: Tue Feb 20, 2024 6:23 am

Fri Mar 08, 2024 10:01 am

您好,

感谢您的反馈。
建议您这边使用我们的商业版进行测试,如果测试之后还有问题,麻烦您提供一下您的测试文档、代码以及系统环境信息,关于字体显示问题,您的测试环境是否安装了对应的字体呢?字体不显示多半是绘制的时候缺少字体文件,建议您先检查一下字体是否都已安装。

Best regards,
Triste
E-iceblue support team.
User avatar

Triste.Dai
 
Posts: 1000
Joined: Tue Nov 15, 2022 3:59 am

Sat Mar 09, 2024 11:14 am

//新建一个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);

// File fontFile = new File("D:\\segoeui.ttf");
// Font font = Font.createFont(Font.TRUETYPE_FONT, fontFile);
PdfTrueTypeFont font= new PdfTrueTypeFont(new Font("Segoe UI",Font.PLAIN,12),true);

//添加表头行及表格数据
PdfGridRow[] pdfGridRows = grid.getHeaders().add(1);
for (PdfGridRow pdfGridRow : pdfGridRows) {
pdfGridRow.getStyle().setFont(font);//指定字体
pdfGridRow.getCells().get(0).setValue("NAME");
pdfGridRow.getCells().get(1).setValue("C₇H₄NNaO₃S·2H₂O" + "测试");
pdfGridRow.getCells().get(2).setValue("成功");
pdfGridRow.getStyle().setTextBrush(PdfBrushes.getRed());
}

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

System.out.println(grid.getHeaders().get(0).getCells().get(1).getValue().toString());
System.out.println(grid.getHeaders().get(0).getStyle().getFont().getName());

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

//保存文档
pdf.saveToFile("D:\\Result.pdf");
pdf.dispose();


这是代码部分

PaulPierce
 
Posts: 6
Joined: Tue Feb 20, 2024 6:23 am

Sat Mar 09, 2024 11:16 am

这是结果

PaulPierce
 
Posts: 6
Joined: Tue Feb 20, 2024 6:23 am

Sat Mar 09, 2024 11:24 am

其它字体测试结果

PaulPierce
 
Posts: 6
Joined: Tue Feb 20, 2024 6:23 am

Mon Mar 11, 2024 6:17 am

您好,

感谢您的咨询
在设置表格中的内容的字体的时候,由于您设置的西文字体:"Segoe UI" 是不支持中文的,所以在绘制的时候中文会丢失。当您设置字体为黑体的时候,黑体是不支持那些下标字符,所以下标没有显示。您可以看看有没有支持中文以及下标这些的字体,然后进行测试。有其他问题,欢迎您随时咨询。

Best regards,
Triste
E-iceblue support team
User avatar

Triste.Dai
 
Posts: 1000
Joined: Tue Nov 15, 2022 3:59 am

Mon Mar 11, 2024 6:50 am

也试了很多其它字体,比较常见的宋体、微软雅黑都不行,您这边还有什么解决方法吗,或者1个单元格里能不能设置2个字体样式

PaulPierce
 
Posts: 6
Joined: Tue Feb 20, 2024 6:23 am

Mon Mar 11, 2024 7:20 am

您好,

感谢您的反馈。
我咨询过我们的开发人员,目前一个单元格内是不支持设置多种字体的,很抱歉。您这边可以去网络上搜索一下看是否有字体支持中文以及下标。

感谢您的理解与支持。

Best regards,
Triste
E-iceblue support team
User avatar

Triste.Dai
 
Posts: 1000
Joined: Tue Nov 15, 2022 3:59 am

Return to 中文技术支持