В моем приложении используется 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);
}
Это выглядит так ненужно и имеет низкую производительность. Также каждый раз, когда мои пользователи пытаются изменить номер копии для печати, мое приложение вычисляет все с самого начала. Я спрашиваю, есть ли способ сделать это быстрее или как не создавать целую вещь, когда число копий будет напечатано? До сих пор я не нашел многого.
Заранее благодарен.
Спасибо за ответ, с вашим решением Мне нужно распечатать каждую копию отдельно в одном вызове (сначала я попытался использовать макросы), что создало бы другие проблемы, которые я предполагаю. Каким будет лучший способ мониторинга, связанный с операциями? Я использую профилировщик YourKit для мониторинга времени процессора, затраченного на операции. Однако при добавлении подробной информации, такой как подсчет вызовов, время, затрачиваемое на операции aspose, резко возрастает, а также на некоторые другие операции. 1 минута всего процесса составляет 30 минут, поэтому я считаю это ненадежным. Есть ли более точный способ мониторинга, связанный с операциями. – halil
Это займет много времени без профилирования? Aspose.Words зависит от классов из .NET framework и широко называет методы из библиотек классов .NET. Возможно, что профилировщик также отслеживает вызовы из зависимостей и делает огромный список. –
Нет, без профилирования это занимает приблизительно 1 минуту (что также несколько длиннее). Это, как вы сказали, профайлер. Используете ли вы какой-либо метод, когда вы обрабатываете связанные операции, чтобы отслеживать, что происходит за кулисами. – halil