Код, который я использовал для водяного знака, показан ниже. Для первых двух страниц водяной знак отображается правильно, но для третьей страницы водяной знак отображается в верхнем левом углу. Когда я отлаживался, он показывал размер страницы как 692 * 712 приблизительно.Водяной знак на pdf устанавливается в верхнем левом углу вместо центра страницы
class Program
{
static string absoluteFile1Path = "filename1.pdf";
static string absoluteFile2Path = "filename2.pdf";
static string destination = "destinationfilename.pdf";
static void Main(string[] args)
{
string[] filesPath = new string[] { absoluteFile1Path, absoluteFile2Path };
PdfDocument pdfDoc = new PdfDocument(new PdfWriter(destination));
PdfMerger merger = new PdfMerger(pdfDoc);
PdfDocument srcDoc1 = new PdfDocument(new PdfReader(absoluteFile1Path));
merger.Merge(srcDoc1, 1, srcDoc1.GetNumberOfPages());
PdfDocument srcDoc2 = new PdfDocument(new PdfReader(absoluteFile2Path));
merger.Merge(srcDoc2, 1, srcDoc2.GetNumberOfPages());
pdfDoc.AddEventHandler(PdfDocumentEvent.END_PAGE, new WatermarkHandler());
srcDoc1.Close();
srcDoc2.Close();
pdfDoc.Close();
}
}
public class WatermarkHandler : IEventHandler
{
Color lime, blue;
PdfFont helvetica;
PdfFont font;
public WatermarkHandler()
{
//helvetica = PdfFontFactory.CreateFont(FontConstants.HELVETICA);
//lime = new DeviceCmyk(0.208f, 0, 0.584f, 0);
//blue = new DeviceCmyk(0.445f, 0.0546f, 0, 0.0667f);
font = PdfFontFactory.CreateFont(FontConstants.HELVETICA);
}
public void HandleEvent(Event @event)
{
PdfDocumentEvent docEvent = (PdfDocumentEvent)@event;
PdfDocument pdf = docEvent.GetDocument();
PdfPage page = docEvent.GetPage();
int pageNumber = pdf.GetPageNumber(page);
Rectangle pageSize = page.GetPageSize();
PdfCanvas canvas = new PdfCanvas(page.NewContentStreamAfter(), page.GetResources(), pdf);
PdfExtGState gs1 = new PdfExtGState().SetFillOpacity(0.9f).SetStrokeOpacity(0.3f);
canvas.SetExtGState(gs1);
new Canvas(canvas, pdf, new iText.Kernel.Geom.Rectangle(page.GetPageSize().GetWidth()/2, page.GetPageSize().GetHeight()/2))
.SetFontColor(iText.Kernel.Colors.DeviceGray.LIGHT_GRAY)
.SetFontSize(26)
.SetFont(font)
.ShowTextAligned(new Paragraph("FOR YOUR RECORDS ONLY: DO NOT SUBMIT"), 298, 375, pdf.GetPageNumber(page),
TextAlignment.CENTER, VerticalAlignment.MIDDLE, 45);
canvas.Release();
}
}
}
Показать нам PDF-файлы. Возможно, нижний левый угол страницы имеет координату, отличную от 'x = 0; y = 0'. Вы не учитываете это смещение. –
Высота страницы или ширина страницы не могут делиться на 2 равномерно (т. Е. Нечетное число) и вызывают проблему? – mike510a