У меня есть несколько отдельных PDF-файлов, и я хочу прочитать текст из них 1 на 1, и записать его в новый PDF-файл, чтобы они все были в одном документе. Я не хочу использовать PdfMerger, потому что это будет включать в себя все пустое пространство. Вот почему я хочу прочитать и скопировать текст.
Основная проблема - это шрифт. Приведенный ниже код подходит для чтения и записи всего текста, но я потерял размер / тип шрифта и выделил его жирным шрифтом. Мне нужно это отформатировать на мою страницу назначения. Кто-нибудь знает, как это сделать?
Спасибо.
byte[] result;
using (var ms = new MemoryStream())
{
var writer = new PdfWriter(ms);
PdfDocument outPdf = new PdfDocument(writer);
//PdfMerger merger = new PdfMerger(outPdf);
Document outDocument = new Document(outPdf);
foreach (var clause in clauses)
{
//Add pages from the first document
var sourceReader = new PdfReader(new MemoryStream(clause.ClauseBytes));
var sourcePdf = new PdfDocument(sourceReader);
for (int i = 0; i < sourcePdf.GetNumberOfPages(); i++)
{
var sourcePage = sourcePdf.GetPage(i+1);
var strategy = new SimpleTextExtractionStrategy();
var text = PdfTextExtractor.GetTextFromPage(sourcePage, strategy);
var currentText = Encoding.
UTF8.GetString(Encoding.Convert(Encoding.Default, Encoding.UTF8, Encoding.Default.GetBytes(text)));
outDocument.Add(new Paragraph(currentText));
//merger.Merge(sourcePdf, 1, sourcePdf.GetNumberOfPages());
//sourcePdf.Close();
}
}
outDocument.Close();
//merger.Close();
result = ms.GetBuffer();
}
return result;