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

Mon Jul 19, 2021 2:43 am

需求是把doc根据Header,拆分几份小的PDF
发现复制doc内容和页眉成新文档, 再转化PDF就乱了

// <version>3.9.0</version>
Document doc1 = new Document();
doc1.loadFromFile("C:\\Users\\admin\\OneDrive\\桌面\\说明书.doc");

//对比 -----------------1
doc1.saveToFile("C:\\Users\\admin\\OneDrive\\桌面\\五pdf\\" + "完整转化-说明书.pdf", FileFormat.PDF);


Document doc2 = new Document();
doc2.loadFromFile("C:\\Users\\admin\\OneDrive\\桌面\\说明书.doc");

//需求:把doc根据Header,拆分几份小的PDF
SectionCollection sections = doc2.getSections();
for (Object objSelect : sections) {
Section select = (Section) objSelect;
HeaderFooter headerFooter = select.getHeadersFooters().getHeader();
if (headerFooter != null) {
IParagraph firstParagraph = headerFooter.getFirstParagraph();
if (firstParagraph != null) {
String paragraphText = firstParagraph.getText();
System.out.println("text--->" + paragraphText);
Document document = new Document();
document.addSection();

//复制页眉
Object object1 = headerFooter.getChildObjects().get(0);
document.getSections().get(0).getHeadersFooters().getHeader().getChildObjects().add(((DocumentObject) object1).deepClone());

//复制word内容
for (int j = 0; j < select.getBody().getChildObjects().getCount(); j++) {
Object object = select.getBody().getChildObjects().get(j);
document.getSections().get(0).getBody().getChildObjects().add(((DocumentObject) object).deepClone());

}

//对比 -----------------2
document.saveToFile("C:\\Users\\admin\\OneDrive\\桌面\\拆分pdf\\" + paragraphText + ".pdf", FileFormat.PDF);


}
}

附件
完整转化是好的.png
复制内容和页眉成新文档再转化就乱了.png
doc文档

sunkes_user_test
 
Posts: 2
Joined: Mon Jul 19, 2021 2:25 am

Mon Jul 19, 2021 10:02 am

您好,

感谢您的咨询。
请您参考以下修改后的代码进行测试。如果在测试中遇到任何有关我们产品的问题,请随时联系我们。
Code: Select all
        // <version>3.9.0</version>
        Document doc1 = new Document();
        doc1.loadFromFile("说明书.doc");

//对比 -----------------1
        doc1.saveToFile("完整转化-说明书.pdf", FileFormat.PDF);


        Document doc2 = new Document();
        doc2.loadFromFile("说明书.doc");

//需求:把doc根据Header,拆分几份小的PDF
        SectionCollection sections = doc2.getSections();
        for (Object objSelect : sections) {
            Section select = (Section) objSelect;
            HeaderFooter headerFooter = select.getHeadersFooters().getHeader();
            if (headerFooter != null) {
                if(headerFooter.getFirstParagraph()!=null){
                    String paragraphText=headerFooter.getFirstParagraph().getText();
                    Document doc=new Document();
                    doc.getSections().add(select.deepClone());

                    doc.saveToFile(paragraphText + ".pdf", FileFormat.PDF);
                }
            }
        }
Sincerely,
Andy
E-iceblue support team
User avatar

Andy.Zhou
 
Posts: 483
Joined: Mon Mar 29, 2021 3:03 am

Tue Jul 20, 2021 11:54 am

非常感谢。没有我昨天那种情况了。(文字和页眉叠一起了)

唯一美中不足的是:word转化PDF时,靠下的文字会和页脚的横线叠在了一起。

(建议你们可以把带页眉页脚的复制写入文档,现在的示例只有复制内容和页眉,没有两者一起复制的。)

Andy.Zhou wrote:您好,

感谢您的咨询。
请您参考以下修改后的代码进行测试。如果在测试中遇到任何有关我们产品的问题,请随时联系我们。
Code: Select all
        // <version>3.9.0</version>
        Document doc1 = new Document();
        doc1.loadFromFile("说明书.doc");

//对比 -----------------1
        doc1.saveToFile("完整转化-说明书.pdf", FileFormat.PDF);


        Document doc2 = new Document();
        doc2.loadFromFile("说明书.doc");

//需求:把doc根据Header,拆分几份小的PDF
        SectionCollection sections = doc2.getSections();
        for (Object objSelect : sections) {
            Section select = (Section) objSelect;
            HeaderFooter headerFooter = select.getHeadersFooters().getHeader();
            if (headerFooter != null) {
                if(headerFooter.getFirstParagraph()!=null){
                    String paragraphText=headerFooter.getFirstParagraph().getText();
                    Document doc=new Document();
                    doc.getSections().add(select.deepClone());

                    doc.saveToFile(paragraphText + ".pdf", FileFormat.PDF);
                }
            }
        }

sunkes_user_test
 
Posts: 2
Joined: Mon Jul 19, 2021 2:25 am

Wed Jul 21, 2021 5:45 am

您好,

感谢您的反馈。
我确实注意到转换Word到PDF后,底部的文本与页脚发生了重叠。这个问题我已经记录到了我们的问题追踪系统中,编号是SPIREDOC-6388。如果该问题有任何进展,我将及时通知您。很抱歉给您带来不便。
另外,请注意,页眉和页脚都是section的子对象。当使用“doc.getSections().add(select.deepClone())”复制section时,相关的页眉和页脚都会被一并复制。因此您不需要再额外复制页眉页脚。
Sincerely,
Andy
E-iceblue support team
User avatar

Andy.Zhou
 
Posts: 483
Joined: Mon Mar 29, 2021 3:03 am

Thu Sep 02, 2021 3:55 am

您好,

让您久等了。
关于问题SPIREDOC-6388,我们开发部门已经对其进行了调整和修复。附件中是使用最新测试代码得到的结果文档,请您下载并查看它是否解决了您的问题。如果没有问题的话,我们将尽快发布包含此修复的新版本。期待您的反馈。
Sincerely,
Andy
E-iceblue support team
User avatar

Andy.Zhou
 
Posts: 483
Joined: Mon Mar 29, 2021 3:03 am

Return to 中文技术支持