Чет мне кажется, вот такой код явно проще чем перекраивать настройки профилей и лезть в dsd файлы, но каждому конечно свое, я стараюсь во всякие системные файлы не лазить, сломаешь там что нить, та и хз как в других версиях када будет, как пример раньше при пакетном изменении чертежей сохранение просто оборачивал в try catch, если файл открыт просто выловится исключение, а тот же код в 2025 каде какого то фига ломал те чертежи, которые были закрыты и должны были сохраниться, вот пришлось проверки на нахождение dwl делать, что бы даже не пытаться перезаписать такой чертеж.
private bool UnitePages(List<string> pages, string fileName)
{
if (pages.Count == 0) return false;
try
{
//создаем экземпляр ридера из первого пдф документа
using (PdfReader pdfReader = new PdfReader(pages[0]))
{
//получаем документ из первого ридера
using (iTextSharp.text.Document document = new iTextSharp.text.Document(pdfReader.GetPageSizeWithRotation(1)))
{
//создаем выходной документ как копию первого открытого
using (PdfCopy pdfCopy = new PdfCopy(document, new System.IO.FileStream(fileName, System.IO.FileMode.CreateNew)))
{
//открываем первый документ
document.Open();
//получаем содержимое первой страницы открытого документа
PdfImportedPage pdfImportedPage = pdfCopy.GetImportedPage(pdfReader, 1);
//добавляем полученную страницу в выходной документ
pdfCopy.AddPage(pdfImportedPage);
//проходим по оставшимся документам
for (int i = 1; i < pages.Count; i++)
{
//создаем новый экземпляр ридера
using (PdfReader pdfReader2 = new PdfReader(pages[i]))
{
//получаем первую страницу
using (iTextSharp.text.Document document2 = new iTextSharp.text.Document(pdfReader.GetPageSizeWithRotation(1)))
{
//открываем страницу
document2.Open();
//записываем содержимое этой страницы
pdfImportedPage = pdfCopy.GetImportedPage(pdfReader2, 1);
//добавляем эту страницу в выходной документ
pdfCopy.AddPage(pdfImportedPage);
}
}
}
}
}
}
return true;
}
catch { return false; }
}