Я добавляю PDF-файлы вместе, используя следующую функцию через iTextSharp. Его работа прекрасна. Единственная проблема заключается в том, что PDF-файлы, размер которых превышает размер документа (A4), заканчиваются масштабированием и размещаются в нижнем левом углу документа. Я хотел бы сосредоточить его. Может ли кто-нибудь указать мне в правильном направлении на достижение этого? Приветствия.Центрирование pdf-файла в iTextSharp
private void appendPDF(appendDoc doc)
{
PdfContentByte pdfContentByte = pdfWriter.DirectContent;
PdfReader pdfReader = null;
if (doc.MemoryStream != null && doc.MemoryStream.CanRead)
{
pdfReader = new PdfReader(doc.MemoryStream);
}
else if (File.Exists(doc.FullFilePath))
{
pdfReader = new PdfReader(doc.FullFilePath);
}
if (pdfReader != null)
{
for (int pageIndex = 1; pageIndex <= pdfReader.NumberOfPages; pageIndex++)
{
PdfImportedPage importedPage = pdfWriter.GetImportedPage(pdfReader, pageIndex);
float importedPageXYRatio = importedPage.Width/importedPage.Height;
if (XYRatio > 1f)
{
iTextDocument.SetPageSize(PageSize.A4.Rotate());
}
else
{
iTextDocument.SetPageSize(PageSize.A4);
}
iTextDocument.NewPage();
pdfContentByte.AddTemplate(importedPage, 0, 0);
}
}
}
Edit:
Это было решение, которое я закончил с использованием.
private void appendPDF(appendDoc doc)
{
PdfContentByte pdfContentByte = pdfWriter.DirectContent;
PdfReader pdfReader = null;
if (doc.MemoryStream != null && doc.MemoryStream.CanRead)
{
pdfReader = new PdfReader(doc.MemoryStream);
}
else if (File.Exists(doc.FullFilePath))
{
pdfReader = new PdfReader(doc.FullFilePath);
}
if (pdfReader != null)
{
for (int pageIndex = 1; pageIndex <= pdfReader.NumberOfPages; pageIndex++)
{
PdfImportedPage importedPage = pdfWriter.GetImportedPage(pdfReader, pageIndex);
float importedPageXYRatio = importedPage.Width/importedPage.Height;
if (XYRatio > 1f)
{
iTextDocument.SetPageSize(PageSize.A4.Rotate());
}
else
{
iTextDocument.SetPageSize(PageSize.A4);
}
iTextDocument.NewPage();
var truePageWidth = iTextDocument.PageSize.Width - iTextDocument.LeftMargin - iTextDocument.RightMargin;
var truePageHeight = iTextDocument.PageSize.Height - iTextDocument.TopMargin - iTextDocument.BottomMargin;
var x = (truePageWidth - importedPage.Width)/2 + iTextDocument.RightMargin;
var y = (truePageHeight - importedPage.Height)/2 + iTextDocument.BottomMargin;
pdfContentByte.AddTemplate(importedPage, x, y);
}
}
}
Он уже делает масштабирование. Я применил аналогичное решение (за исключением того, что я учитывал поля документа). Работает очень хорошо. –
Как добавить страницу, которую нужно масштабировать? Можно указать левое и правое поле? – Emanuel