Aspose.word for Java docx 轉 PDF問題

使用 Onlyoffice 建立的 .docx 檔(內含 2 個沒有剔的 checkbox 及 1 個有剔 checkbox), 再使用 aspose 轉換到 pdf 後,所有 checkbox 都剔了

@Shum,

请ZIP并上传您输入的Word文档和Aspose.Words生成的PDF文件,其中显示了不良行为,以供测试。 然后,我们将对此进行调查,并为您提供更多信息。

Testing Doc.zip (400.0 KB)

Thanks

@Shum,

请检查以下解决方案是否适合您?

Document doc = new Document("C:\\225697\\3B984C6CE03A4376-DeclarationofRelationship(2019).docx");

PdfSaveOptions pdfSaveOptions = new PdfSaveOptions();
pdfSaveOptions.setUpdateSdtContent(false);

doc.save("C:\\225697\\awjava-21.2.pdf", pdfSaveOptions);

謝謝

另外,請問有沒有類似的功能,可讓我將 OnlyOffice 的 .docx 檔案儲存為 Aspose 的 WORD 檔而不影響 checkbox

@Shum,

您可以将OoxmlSaveOptions.UpdateSdtContent设置为false。

但是,为了对Aspose.Words API进行任何更正,我们已在问题跟踪系统中使用ID WORDSNET-21877记录了此问题。 我们将进一步调查此问题的详细信息,并将使您随时了解链接问题的状态。 很抱歉给您带来不便。

@Shum,

关于WORDSNET-21877,是为了通知您我们已经完成了对这一问题的分析。 分析显示以下内容:

您已经获得带有复选框类型的SDT(内容控件)的DOCX文档。 'SDT.Checked’属性设置为true。 但是’SDT.ContentChecked’属性设置为false。 这是此SDT的结构:

<w:sdt>
  <w:sdtPr>
    <w:alias w:val=""/>
    <w15:appearance w15:val="boundingBox"/>
    <w:label w:val="0"/>
    <w:lock w:val="unlocked"/>
    <w:tag w:val=""/>
    <w14:checkbox>
      <w14:checked w14:val="1"/>
      <w14:checkedState w14:val="2612" w14:font="MS Gothic"/>
      <w14:uncheckedState w14:val="2610" w14:font="MS Gothic"/>
    </w14:checkbox>
    <w:rPr/>
  </w:sdtPr>
  <w:sdtContent>
    <w:r>
      <w:rPr>
        <w:rFonts w:eastAsia="MS Gothic" w:cs="MS Gothic" w:hAnsi="MS Gothic" w:ascii="MS Gothic"/>
      </w:rPr>
      <w:t xml:space="preserve">☐</w:t>
    </w:r>
  </w:sdtContent>
</w:sdt>

MS Word 2019会使用未选中的符号显示此文档。
Aspose.Words使用选中的符号将该文档重新保存为DOCX和PDF。
如图所示:WORDSNET-21877 Analysis 1.png (2.7 KB)

如果重新保存时将’SaveOption.UpdateSdtContent’设置为false,则生成的DOCX和PDF文档将包含未选中的符号:

Document doc = new Document("X:\\Test21877.docx");

PdfSaveOptions pdfSaveOptions = new PdfSaveOptions();
pdfSaveOptions.setUpdateSdtContent(false);
doc.save("X:\\Test21877.docx_aw.pdf", pdfSaveOptions);    // correct results

OoxmlSaveOptions ooxmlSaveOptions = new OoxmlSaveOptions();
ooxmlSaveOptions.setUpdateSdtContent(false);
doc.save("X:\\Test21877.docx_aw.docx", ooxmlSaveOptions); // correct results

MS Word 2019也会使用未经检查的符号将该文档重新保存为DOCX和PDF。

因此,默认情况下,Aspose.Words通过更新SDT内容重新保存文档。

简而言之,问题是由于MS Word问题引起的。 如您所见,实际上复选框的内容控件已选中。

<w14:checked w14:val="1" />

无论出于何种原因,MS Word都不会更新内容控件的外观。 相反,Aspose Words尝试将实际的内容控制值与视觉呈现进行同步,并在默认情况下对其进行更新。 如果要保留视觉表示并忽略实际的内容控件值,则应使用SaveOption.UpdateSdtContent并将其设置为false。