Paragraph getting extended when converting from word to pdf

@forasposeissues Thank you for additional information. unfortunately, I cannot reproduce the problem after using the provided fonts. I have used the following simple code for testing:

Document doc = new Document(@"C:\Temp\in.docx");
doc.FontSettings = new FontSettings();
doc.FontSettings.SetFontsSources(new FontSourceBase[] { new SystemFontSource(), new FolderFontSource(@"C:\Temp\fonts", true) });
doc.Save(@"C:\Temp\out.pdf");

Here is the output PDF produced on my side: out.pdf (1.4 MB)

Hi,

As we can see in out.pdf you sent the second paragraph has 6 lines.

But in word document which I sent the paragraph is of 5 lines.

@forasposeissues Could you please save the document as PDF using MS Word on your side and attach it here for our reference? The difference can be caused by different fonts available on machine where the document is viewed in MS Word and on the machine where the document is converted to PDF using Aspose.Words.

rde30213096.pdf (4.5 MB)

Yes, When the document when saved on MS Word as pdf we do not see the issue as you can see in attached pdf. But when converting using Aspose library from word to pdf we see the paragraph size increasing.

@forasposeissues In the attached document CitiSans font is not used. So it looks like the font is not available on the machine where you convert document to PDF using MS Word. MS Word substituted this font and that is why the rendering result is different:

As you mentioned that : In the attached document CitiSans font is not used. So it looks like the font is not available on the machine where you convert document to PDF using MS Word. MS Word substituted this font and that is why the rendering result is different.

But, I don’t see any font substitued font when MS word is converted into pdf. except (Font substitution: Font ‘MS Shell Dlg 2’ has not been found. Using ‘Tahoma’ font instead. Reason: font info substitution). Also, please find the log detail for the reference

Actual Result: MSWord and pdf are not identical

Expected Result: MSWord and pdf should be identical

I am sharing the MSword,pdf, font and log file.

Team, Please help to here.

This issue is creating noise on our all environment.

issue.zip (430.1 KB)

@forasposeissues The question as already answered in another your thread:
https://forum.aspose.com/t/images-are-distorted-and-some-label-in-image-are-not-clear/284560/4

No, that is complete different issue
Images are distorted and some label in image are not clear - Free Support Forum - aspose.com

Don’t related to this issue.

issue_msword

issue_pdf

Please refer the screenshot in which MSword paragraph is not similar with PDF

@forasposeissues The screenshots attached in your previous post were related to the above mentioned thread. The screenshots provided in your last post seems are not related to the above attached document. At least I cannot see the mentioned problem in the output PDF. Please make sure you have attached the correct document and screenthos.

Hi Team,

Both, previous post issue and latest post issue are similar. But, there inputs are different.
I am sharing some screenshot related to latest .

In the screenshot I have highlighted the issue.

Please find screenshot
screenshot.zip (1.0 MB)

Appreciate for help.

Thanks

@forasposeissues Unfortunately, I cannot reproduce the problem on my side using the latest 24.5 version of Aspose.Words and the following code:

// Open a document
Document doc = new Document("in.docx");

// When text shaper factory is set, layout starts to use OpenType features.
// An Instance property returns static BasicTextShaperCache object wrapping HarfBuzzTextShaperFactory
doc.getLayoutOptions().setTextShaperFactory(com.aspose.words.shaping.harfbuzz.HarfBuzzTextShaperFactory.getInstance());

// Render the document to PDF format
doc.save("out.pdf");

See more about advanced typograph features in the documentation:
https://docs.aspose.com/words/java/enable-opentype-features/

Thanks for quick Update!

We will check and let you know if we face any issue.

Also, Please help to suggest which version of aspose words shaping we should use. To support the advanced typography.

@forasposeissues You should use the same version as version of Aspose.Words:

<dependency>
    <groupId>com.aspose</groupId>
    <artifactId>aspose-words</artifactId>
    <version>24.5</version>
    <classifier>jdk17</classifier>
</dependency>
<dependency>
    <groupId>com.aspose</groupId>
    <artifactId>aspose-words</artifactId>
    <version>24.5</version>
    <classifier>shaping-harfbuzz-plugin</classifier>
</dependency>

Hi Team,

We are facing build issue while running our test case for shaping harfbuzz plugin.
Kindly assist

java.lang.UnsatisfiedLinkError: 'long com.aspose.words.shaping.harfbuzz.HB.hb_buffer_create(int)'
  at com.aspose.words.shaping.harfbuzz.HB.hb_buffer_create(Native Method)
  at com.aspose.words.shaping.harfbuzz.zzS.<init>(Unknown Source)
  at com.aspose.words.shaping.harfbuzz.zzZ51.zzS(Unknown Source)
  at com.aspose.words.shaping.harfbuzz.zzZ51.zzS(Unknown Source)
  at com.aspose.words.shaping.harfbuzz.zzZ51.shapeText(Unknown Source)
  at com.aspose.words.zzVWt.zzFH(Unknown Source)
  at com.aspose.words.zzVWt.zzFH(Unknown Source)
  at com.aspose.words.zzVTl.zzZZO(Unknown Source)
  at com.aspose.words.zzVTl.zzXx5(Unknown Source)
  at com.aspose.words.zzZ59.zzXx5(Unknown Source)
  at com.aspose.words.zzXb.zzWZd(Unknown Source)
  at com.aspose.words.zzYvR.zzZ4x(Unknown Source)
  at com.aspose.words.zzYvR.zzg(Unknown Source)
  at com.aspose.words.zzXb.zzg(Unknown Source)
  at com.aspose.words.zzZvJ.zzVWZ(Unknown Source)
  at com.aspose.words.zzZvJ.zzWDH(Unknown Source)
  at com.aspose.words.zzZvJ.zzZw9(Unknown Source)
  at com.aspose.words.zzX9j.zzFH(Unknown Source)
  at com.aspose.words.zzX9j.zzX2I(Unknown Source)
  at com.aspose.words.zzYK2.zzW4B(Unknown Source)
  at com.aspose.words.zzYK2.zzWXy(Unknown Source)
  at com.aspose.words.zzZOc.zzZAc(Unknown Source)
  at com.aspose.words.zzZOc.zzZCJ(Unknown Source)
  at com.aspose.words.zzZOc.zzWdb(Unknown Source)
  at com.aspose.words.zzWPc.zzXgO(Unknown Source)
  at com.aspose.words.zzWPc.zzWdb(Unknown Source)
  at com.aspose.words.zzZxn.zzX5u(Unknown Source)
  at com.aspose.words.zzZxn.zzZCJ(Unknown Source)
  at com.aspose.words.zzZxn.zzFH(Unknown Source)
  at com.aspose.words.zzVN.zzFH(Unknown Source)
  at com.aspose.words.zzVN.zzXyt(Unknown Source)
  at com.aspose.words.zzWsx$zzFH.zzW7Y(Unknown Source)
  at com.aspose.words.zzXRi.zzW7Y(Unknown Source)
  at com.aspose.words.zzWsx.zzWO6(Unknown Source)
  at com.aspose.words.zzWsx.zzXx5(Unknown Source)
  at com.aspose.words.zzXlC.zzW7Y(Unknown Source)
  at com.aspose.words.zzXRi.zzW7Y(Unknown Source)
  at com.aspose.words.zzYZK.zzWdb(Unknown Source)
  at com.aspose.words.zzVWc.zzXyt(Unknown Source)
  at com.aspose.words.zzWo1.zzXb9(Unknown Source)
  at com.aspose.words.Document.updatePageLayout(Unknown Source)
  at com.aspose.words.zzWfH.zzXEJ(Unknown Source)
  at com.aspose.words.zzY61.zzVQt(Unknown Source)
  at com.aspose.words.zzZji.zzVZ8(Unknown Source)
  at com.aspose.words.zzZji.zzWdb(Unknown Source)
  at com.aspose.words.zzZji.zzFH(Unknown Source)
  at com.aspose.words.zzZji.zzXyV(Unknown Source)
  at com.aspose.words.Document.zzG3(Unknown Source)
  at com.aspose.words.Document.zzWdb(Unknown Source)
  at com.aspose.words.Document.zzFH(Unknown Source)
  at com.aspose.words.Document.save(Unknown Source)
  at com.aspose.words.Document.save(Unknown Source)
  at com.citi.rendition.converters.aspose.word.filetypeconverters.RenditionWordToPDFConverter.convert(RenditionWordToPDFConverter.java:35)
  at com.citi.rendition.converters.aspose.word.filetypeconverters.RenditionWordToPDFConverterTest.testRenditionWordToPDFConverter(RenditionWordToPDFConverterTest.java:33)
  at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
  at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
  at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
  at java.base/java.lang.reflect.Method.invoke(Method.java:568)
  at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:59)
  at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
  at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:56)
  at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
  at org.junit.runners.ParentRunner$3.evaluate(ParentRunner.java:306)
  at org.junit.runners.BlockJUnit4ClassRunner$1.evaluate(BlockJUnit4ClassRunner.java:100)
  at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:366)
  at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:103)
  at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:63)
  at org.junit.runners.ParentRunner$4.run(ParentRunner.java:331)
  at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:79)
  at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:329)
  at org.junit.runners.ParentRunner.access$100(ParentRunner.java:66)
  at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:293)
  at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:26)
  at org.junit.runners.ParentRunner$3.evaluate(ParentRunner.java:306)
  at org.junit.runners.ParentRunner.run(ParentRunner.java:413)
  at org.apache.maven.surefire.junit4.JUnit4Provider.execute(JUnit4Provider.java:252)
  at org.apache.maven.surefire.junit4.JUnit4Provider.executeTestSet(JUnit4Provider.java:141)
  at org.apache.maven.surefire.junit4.JUnit4Provider.invoke(JUnit4Provider.java:112)
  at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
  at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
  at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
  at java.base/java.lang.reflect.Method.invoke(Method.java:568)
  at org.apache.maven.surefire.util.ReflectionUtils.invokeMethodWithArray(ReflectionUtils.java:189)
  at org.apache.maven.surefire.booter.ProviderFactory$ProviderProxy.invoke(ProviderFactory.java:165)
  at org.apache.maven.surefire.booter.ProviderFactory.invokeProvider(ProviderFactory.java:85)
  at org.apache.maven.surefire.booter.ForkedBooter.runSuitesInProcess(ForkedBooter.java:115)
  at org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:75)

@forasposeissues Does the problem occurs with the same document you have shared above? If not, please attach the problematic input document here for testing. We will check the issue and provide you more information.

dummyWordFile.docx (1.3 MB)

@forasposeissues Thank you for additional information. unfortunately, I cannot reproduce the problem on my side. Here is PDF document produced on my side using the above provided code:
out.pdf (1.2 MB)

Could you please describe the environment where the problem occurs?

Hi Team,

This code throws an error on RHEL7 OS. but it does not throws error on windows machine. Do we need to do some config or installation of lib on system.

java.lang.UnsatisfiedLinkError: 'long com.aspose.words.shaping.harfbuzz.HB.hb_buffer_create(int)'
  at com.aspose.words.shaping.harfbuzz.HB.hb_buffer_create(Native Method)
  at com.aspose.words.shaping.harfbuzz.zzS.<init>(Unknown Source)
  at com.aspose.words.shaping.harfbuzz.zzZ51.zzS(Unknown Source)
  at com.aspose.words.shaping.harfbuzz.zzZ51.zzS(Unknown Source)
  at com.aspose.words.shaping.harfbuzz.zzZ51.shapeText(Unknown Source)
  at com.aspose.words.zzVWt.zzFH(Unknown Source)
  at com.aspose.words.zzVWt.zzFH(Unknown Source)

Appreciate your help.

Thanks

@forasposeissues For Windows platforms no additional efforts are required for installing HarfBuzz because Aspose.Words.Shaping.Harfbuzz already includes compiled HarfBuzz library.
For other systems, Aspose.Words.Shaping.Harfbuzz relies on already installed HarfBuzz library. For instance, many Linux-based systems have HarfBuzz installed system-wide by default. If not, there is usually a package available for installing via package manager.