Hejka,
Problem - mam 300-400 PDFów w katalogu. Należy je połączyć w jeden plik PDF sortując według nazwy i "nabić" na nie numery stron według ich ilości w połączonym pliku. Odczytuję zawartość katalogu, sortuję tablicę z nazwami plików i po kolei je łączę w taki sposób:
foreach (var file in projectFiles)
{
PdfDocument projectPdf = new PdfDocument(new PdfReader(file));
merger.Merge(projectPdf, 1, projectPdf.GetNumberOfPages());
currentPage += projectPdf.GetNumberOfPages();
projectPdf.Close();
}
Plik PDF jest połączony, wyświetla się poprawnie w czytniku. Wywołuję funkcję, która ma nabić numery:
public static void AddPageNumbers(PdfDocument pdfDoc, int totalPages)
{
Document doc = new Document(pdfDoc);
int currentPage = 1;
for (int i = 1; i <= pdfDoc.GetNumberOfPages(); i++)
{
var currentPagePara = new Paragraph((currentPage).ToString())
.SetFontSize(10);
var totalPagesPara = new Paragraph(totalPages.ToString())
.SetFontSize(10);
doc.ShowTextAligned(currentPagePara, 500, 20, i, TextAlignment.LEFT, VerticalAlignment.BOTTOM, 0);
doc.ShowTextAligned(totalPagesPara, 530, 20, i, TextAlignment.LEFT, VerticalAlignment.BOTTOM, 0);
currentPage++;
}
doc.Close();
}
Sprawa prosta i oczywista, tylko , że jak uruchomię ten mechanizm, to numery stron się pokazują w taki sposób:
Z kolei jak uruchomię dodatkowo ten kod (w tym samym projekcie):
string dest = "output.pdf";
PdfWriter writer = new PdfWriter(dest);
PdfDocument pdf = new PdfDocument(writer);
Document document = new Document(pdf);
var para1 = new Paragraph("18");
var para2 = new Paragraph("1033");
document.ShowTextAligned(para1, 500, 20, 1, TextAlignment.LEFT, VerticalAlignment.TOP, 0);
document.ShowTextAligned(para2, 530, 20, 1, TextAlignment.LEFT, VerticalAlignment.TOP, 0);
document.Close();
to wszystkie jest prawidłowe:
Jakieś koncepcje?
KK