Полный код
using System;
using System.IO;
using System.Linq;
using SautinSoft.Document;
namespace Example
{
class Program
{
static void Main(string[] args)
{
// Get your free 100-day key here:
// https://sautinsoft.com/start-for-free/
MergeParagraphs();
}
/// <summary>
/// Merge all paragraphs into a single in an existing PDF document.
/// </summary>
/// <remarks>
/// Details: https://sautinsoft.com/products/document/help/net/developer-guide/merge-paragraphs-in-pdf-document-net-csharp-vb.php
/// </remarks>
static void MergeParagraphs()
{
string inpFile = @"..\..\..\example.pdf";
string outFile = @"Result.pdf";
DocumentCore dc = DocumentCore.Load(inpFile);
Paragraph firstPar = dc.GetChildElements(true, ElementType.Paragraph).First() as Paragraph;
int lastIndex = firstPar.Inlines.Count;
foreach (Paragraph par in dc.GetChildElements(true, ElementType.Paragraph).Reverse().Where(p => p != firstPar))
{
int last = lastIndex;
foreach(Inline inline in par.Inlines)
{
firstPar.Inlines.Insert(last++, inline.Clone(true));
}
par.Content.Delete();
}
dc.Save(outFile);
System.Diagnostics.Process.Start(new System.Diagnostics.ProcessStartInfo(inpFile) { UseShellExecute = true });
System.Diagnostics.Process.Start(new System.Diagnostics.ProcessStartInfo(outFile) { UseShellExecute = true });
}
}
}
Imports System
Imports System.IO
Imports System.Linq
Imports SautinSoft.Document
Namespace Example
Friend Class Program
Shared Sub Main(ByVal args() As String)
MergeParagraphs()
End Sub
''' Get your free 100-day key here:
''' https://sautinsoft.com/start-for-free/
''' <summary>
''' Merge all paragraphs into a single in an existing PDF document.
''' </summary>
''' <remarks>
''' Details: https://sautinsoft.com/products/document/help/net/developer-guide/merge-paragraphs-in-pdf-document-net-csharp-vb.php
''' </remarks>
Private Shared Sub MergeParagraphs()
Dim inpFile As String = "..\..\..\example.pdf"
Dim outFile As String = "Result.pdf"
Dim dc As DocumentCore = DocumentCore.Load(inpFile)
Dim firstPar As Paragraph = TryCast(dc.GetChildElements(True, ElementType.Paragraph).First(), Paragraph)
Dim lastIndex As Integer = firstPar.Inlines.Count
For Each par As Paragraph In dc.GetChildElements(True, ElementType.Paragraph).Reverse().Where(Function(p) p IsNot firstPar)
Dim last As Integer = lastIndex
For Each inline As Inline In par.Inlines
firstPar.Inlines.Insert(last, inline.Clone(True))
last += 1
Next inline
par.Content.Delete()
Next par
dc.Save(outFile)
System.Diagnostics.Process.Start(New System.Diagnostics.ProcessStartInfo(inpFile) With {.UseShellExecute = True})
System.Diagnostics.Process.Start(New System.Diagnostics.ProcessStartInfo(outFile) With {.UseShellExecute = True})
End Sub
End Class
End Namespace
Если вам нужен пример кода или у вас есть вопрос: напишите нам по адресу support@sautinsoft.ru или спросите в онлайн-чате (правый нижний угол этой страницы) или используйте форму ниже: