我的应用使用RTF file
合并字段作为来源,并使用PDF file
创建Aspose.Words
。此应用程序的用户将生成的文档提供给其客户,因此将为每个客户打印相同文档的副本。但是,这些副本只有一个区别,那就是每个文档副本末尾的副本号。
现在;假设有4个客户端,因此将打印同一文档的4个副本,只有不同的副本号。我通过创建相同的文档4次来实现这一点,每次我插入我的HTML文本,合并字段,并添加副本号,然后附加文档。最后,我有一个大文档,其中附加了所有4个创建的文档。
这是我的代码块,那里有很多代码,所以我尝试将它们缩小到只有相关的部分:
import com.aspose.words.*
Document docAllAppended = new Document(loadDocument("/documents/" + RTFFileName));
Document docTemp=null;
for (int i = 1; i <= copyNumber; i++) {
docTemp = new Document(loadDocument("/documents/" + RTFFileName));
DocumentBuilder builder = new DocumentBuilder(docTemp);
//insert html which includes file context
builder.insertHtml(htmlText);
//insert Copy number
builder.moveToBookmark("sayfa");
Font font = builder.getFont();
font.setBold(true);
font.setSize(8);
builder.write("Copy Number-" + i+ " / ");
font.setBold(false);
docAllAppended.appendDocument(docTemp,ImportFormatMode.USE_DESTINATION_STYLES);
}
这看起来如此不必要且性能低下。每次我的用户尝试更改要打印的副本号时,我的应用程序从一开始就计算整个事情。我要问的是,有没有办法让这个更快或如何在要打印的拷贝数改变时再创造整件事?到目前为止,我还没有找到太多。
提前致谢。
答案 0 :(得分:1)
如果唯一的区别是拷贝数,那么您可以通过插入HTML,合并等来准备文档一次。
然后,在for循环中,设置拷贝数并将文档另存为docx或pdf。不需要在循环中附加文档,您可以将每个副本保存为不同的名称。
import com.aspose.words.*
Document docAllAppended = new Document(loadDocument("/documents/" + RTFFileName));
Document docTemp=null;
docTemp = new Document(loadDocument("/documents/" + RTFFileName));
DocumentBuilder builder = new DocumentBuilder(docTemp);
//insert html which includes file context
builder.insertHtml(htmlText);
// In for loop, only update the copy number
for (int i = 1; i <= copyNumber; i++) {
// Use DocumentBuilder for font setting
builder.moveToBookmark("sayfa");
Font font = builder.getFont();
font.setBold(true);
font.setSize(8);
builder.write("dummy value");
font.setBold(false);
// Use Bookmark for setting the actual value
Bookmark bookmark = docAllAppended.getRange().getBookmarks().get("sayfa");
bookmark.setText("Copy Number-" + i + " / ");
// Save the document for each client
docAllAppended.save(Common.DATA_DIR + "Letter-Client-" + i + ".docx");
}
我与Aspose一起担任开发者布道者。