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

Fri Feb 24, 2023 8:06 am

PdfStringFormat format = new PdfStringFormat(PdfTextAlignment.Justify);
PdfTextWidget textWidget = new PdfTextWidget(content, font1, PdfBrushes.getBlack());
textWidget.setStringFormat(format);
PdfTextLayout textLayout = new PdfTextLayout();
Rectangle2D.Float bounds = new Rectangle2D.Float();
bounds.setRect(0,25,page.getCanvas().getClientSize().getWidth(),page.getCanvas().getClientSize().getHeight());
textWidget.draw(page, bounds, textLayout);
请问有没有什么方法可以设置文本为两端对齐格式?

wind4444
 
Posts: 3
Joined: Tue Feb 21, 2023 3:05 am

Fri Feb 24, 2023 9:44 am

您好,

感谢您的留言。
对于您的需求,您需要在您代码的基础上添加下面这行代码:
Code: Select all
textWidget.setStringFormat(format);

完整代码如下:
Code: Select all
PdfStringFormat format = new PdfStringFormat(PdfTextAlignment.Justify);
PdfTextWidget textWidget = new PdfTextWidget(content, font1, PdfBrushes.getBlack());
textWidget.setStringFormat(format);
PdfTextLayout textLayout = new PdfTextLayout();
Rectangle2D.Float bounds = new Rectangle2D.Float();
bounds.setRect(0,25,page.getCanvas().getClientSize().getWidth(),page.getCanvas().getClientSize().getHeight());
textWidget.setStringFormat(format);
textWidget.draw(page, bounds, textLayout);

如果您有任何问题,欢迎随时留言。

Sincerely
Abel
E-iceblue support team
User avatar

Abel.He
 
Posts: 1010
Joined: Tue Mar 08, 2022 2:02 am

Mon Feb 27, 2023 1:45 am

Abel.He wrote:您好,

感谢您的留言。
对于您的需求,您需要在您代码的基础上添加下面这行代码:
Code: Select all
textWidget.setStringFormat(format);

完整代码如下:
Code: Select all
PdfStringFormat format = new PdfStringFormat(PdfTextAlignment.Justify);
PdfTextWidget textWidget = new PdfTextWidget(content, font1, PdfBrushes.getBlack());
textWidget.setStringFormat(format);
PdfTextLayout textLayout = new PdfTextLayout();
Rectangle2D.Float bounds = new Rectangle2D.Float();
bounds.setRect(0,25,page.getCanvas().getClientSize().getWidth(),page.getCanvas().getClientSize().getHeight());
textWidget.setStringFormat(format);
textWidget.draw(page, bounds, textLayout);

如果您有任何问题,欢迎随时留言。

Sincerely
Abel
E-iceblue support team

在对应位置增加textWidget.setStringFormat(format);后依然无法实现两端对齐,我使用的版本为9.2.1 :(

wind4444
 
Posts: 3
Joined: Tue Feb 21, 2023 3:05 am

Mon Feb 27, 2023 3:22 am

您好,

感谢您的反馈。
请您提供以下信息来帮助我们复现您的问题,提前感谢您的帮助。
1) 您的输入文档,您可以将它附加在此贴中,也可以通过邮箱(support@e-iceblue.com)发送给我们。
2) 您完整可以重现这个问题的测试代码。
3) 您的测试环境如,win7-64bit, Jdk版本,如Oracle Jdk 1.8。

Sincerely
Abel
E-iceblue support team
User avatar

Abel.He
 
Posts: 1010
Joined: Tue Mar 08, 2022 2:02 am

Tue Feb 28, 2023 7:09 am

Abel.He wrote:您好,

感谢您的反馈。
请您提供以下信息来帮助我们复现您的问题,提前感谢您的帮助。
1) 您的输入文档,您可以将它附加在此贴中,也可以通过邮箱(support@e-iceblue.com)发送给我们。
2) 您完整可以重现这个问题的测试代码。
3) 您的测试环境如,win7-64bit, Jdk版本,如Oracle Jdk 1.8。

Sincerely
Abel
E-iceblue support team

完整的代码如下:
PdfDocument doc = new PdfDocument();
PdfPageBase page = doc.getPages().add();
PdfTrueTypeFont font1 = new PdfTrueTypeFont("E:/simsun_0.ttf", 16f);
PdfStringFormat format = new PdfStringFormat(PdfTextAlignment.Justify);
PdfTextWidget textWidget = new PdfTextWidget("X两端对齐测试两端对齐测试两端对齐测试两端对齐测试两端对齐测试两端对齐测试两端对齐测试两端对齐测试两端对齐测试两端测试两端对齐测试两端对齐测试两端对齐测试两端对齐测试两端对齐测试两端对齐测试1000两端对齐测试" ,font1, PdfBrushes.getBlack());
PdfTextLayout textLayout = new PdfTextLayout();
Rectangle2D.Float bounds = new Rectangle2D.Float();
bounds.setRect(0,25,page.getCanvas().getClientSize().getWidth(),page.getCanvas().getClientSize().getHeight());
textWidget.setStringFormat(format);
textWidget.draw(page, bounds, textLayout);
doc.saveToFile("E:/test.pdf");
simsun_0.ttf为系统自带的宋体字体库。
jdk版本:openjdk11
测试环境:Windows10 64bit
spire.pdf版本:9.2.1
谢谢 :)

wind4444
 
Posts: 3
Joined: Tue Feb 21, 2023 3:05 am

Tue Feb 28, 2023 10:47 am

您好,

感谢反馈。
我测试您的文档重现到了您的问题。我已将此问题记录到我们的问题跟踪系统,问题编号是SPIREPDF-5829。一旦问题解决了,我将会第一时间通知您。非常抱歉给您带来的不便。

Sincerely
Abel
E-iceblue support team
User avatar

Abel.He
 
Posts: 1010
Joined: Tue Mar 08, 2022 2:02 am

Fri Mar 03, 2023 10:01 am

您好,

感谢您的耐心等待。
关于编号为SPIREPDF-5829的问题,根据我们开发团队的反馈,我有些信息要通知您:
要实现分散对齐需要当前行里面有空格或者有中文标点,我们会根据行宽度与文本宽度的差值,除以当前行空格数,将该值设置为字符间距,以此实现多行的不同文本宽度分散对齐后的宽度相同。如果没有空格,设置的命令符将没有作用。
而您绘制的文本中既没有中文标点也没有空格,所以不能实现两端对齐。您可以尝试在文字间加入标点符号再次测试。
如果您有任何问题,欢迎随时联系。

Sincerely
Abel
E-iceblue support team
User avatar

Abel.He
 
Posts: 1010
Joined: Tue Mar 08, 2022 2:02 am

Return to 中文技术支持