public void PreparePdfPage() { // 创建新的一页 var leftWhite = (_document.GetPdfDocument().GetDefaultPageSize().GetWidth() - _paperColumn * _envelopeResponse.ProductWidth.MMtoPix()) / 2; var topWhite = (_document.GetPdfDocument().GetDefaultPageSize().GetHeight() - _paperRow * _envelopeResponse.ProductHeight.MMtoPix()) / 2; // 添加辅助线 var pdfCanvas = new PdfCanvas(_document.GetPdfDocument(), FrontPageNumber); pdfCanvas.SetLineDash(10).SetColor(new DeviceGray(1), true); // 画竖线 for (var i = 0; i <= _paperColumn; i++) { pdfCanvas .MoveTo(leftWhite + i * _envelopeResponse.ProductWidth.MMtoPix(), 0) .LineTo(leftWhite + i * _envelopeResponse.ProductWidth.MMtoPix(), topWhite - 5) .MoveTo(leftWhite + i * _envelopeResponse.ProductWidth.MMtoPix(), _document.GetPdfDocument().GetDefaultPageSize().GetHeight()) .LineTo(leftWhite + i * _envelopeResponse.ProductWidth.MMtoPix(), _document.GetPdfDocument().GetDefaultPageSize().GetHeight() - topWhite + 5); } for (var j = 0; j <= _paperRow; j++) { pdfCanvas .MoveTo(y: topWhite + j * _envelopeResponse.ProductHeight.MMtoPix(), x: 0) .LineTo(y: topWhite + j * _envelopeResponse.ProductHeight.MMtoPix(), x: leftWhite - 5) .MoveTo(y: topWhite + j * _envelopeResponse.ProductHeight.MMtoPix(), x: _document.GetPdfDocument().GetDefaultPageSize().GetWidth()) .LineTo(y: topWhite + j * _envelopeResponse.ProductHeight.MMtoPix(), x: _document.GetPdfDocument().GetDefaultPageSize().GetWidth() - leftWhite + 5); } pdfCanvas.Stroke(); var fontPath = ""; if (Process.GetCurrentProcess().MainModule is ProcessModule processModule) { fontPath = new FileInfo(processModule.FileName).DirectoryName + @"/STKAITI.TTF"; } // 添加水印 var pdfFont = PdfFontFactory.CreateFont(fontPath, PdfEncodings.IDENTITY_H, false); // 列 // 上方的水印 _document.Add(new Paragraph(_waterMark) .SetFont(pdfFont) .SetFontSize(8) .SetFontColor(_urgent ? DeviceRgb.RED : DeviceRgb.BLACK) .SetPageNumber(FrontPageNumber) .SetFixedPosition( leftWhite + 10, _document.GetPdfDocument().GetDefaultPageSize().GetHeight() - topWhite, _document.GetPdfDocument().GetDefaultPageSize().GetWidth() - leftWhite - 10)); // 左下方的水印 _document.Add(new Paragraph(_waterMark) .SetFont(pdfFont) .SetFontSize(8) .SetRotationAngle(Math.PI / 2) .SetFontColor(_urgent ? DeviceRgb.RED : DeviceRgb.BLACK) .SetPageNumber(FrontPageNumber) .SetFixedPosition( leftWhite, topWhite + 10, _document.GetPdfDocument().GetDefaultPageSize().GetHeight() - leftWhite - 10)); if (_envelopeResponse.DoubleSide) { _document.Add(new Paragraph("反面样式【" + _envelopeResponse.BackStyle + "】") .SetFont(pdfFont) .SetFontSize(8) .SetFontColor(DeviceRgb.BLACK) .SetPageNumber(BackPageNumber) .SetFixedPosition( leftWhite + (_paperColumn - 1) * _envelopeResponse.ProductWidth.MMtoPix() + 10, _document.GetPdfDocument().GetDefaultPageSize().GetHeight() - topWhite, _document.GetPdfDocument().GetDefaultPageSize().GetWidth() - leftWhite - 10)); // 左下方的水印 _document.Add(new Paragraph("反面样式【" + _envelopeResponse.BackStyle + "】") .SetFont(pdfFont) .SetFontSize(8) .SetRotationAngle(Math.PI / 2) .SetFontColor(DeviceRgb.BLACK) .SetPageNumber(BackPageNumber) .SetFixedPosition( leftWhite, topWhite + 10, _document.GetPdfDocument().GetDefaultPageSize().GetHeight() - leftWhite - 10)); } // 正面 // 行 for (var i = 0; i < _paperRow; i++) { // 列 for (var j = 0; j < _paperColumn; j++) { var currentIndex = i * _paperColumn + j; if (currentIndex >= _postCardResponses.Count) { continue; } var postCard = _postCardResponses[currentIndex]; // 正面 var fileId = postCard.ProductFileId; if (!string.IsNullOrEmpty(fileId)) { var frontFile = new FileInfo(_templateDirectoryInfo.FullName + "/" + fileId); if (!frontFile.Exists) { frontFile = FileApi.DownloadFileByFileId(fileId, frontFile); } var frontImage = new Image(ImageDataFactory.Create(frontFile.FullName)); // 转化尺寸 frontImage.ScaleAbsolute(_envelopeResponse.ProductWidth.MMtoPix(), _envelopeResponse.ProductHeight.MMtoPix()); frontImage.SetPageNumber(FrontPageNumber); // 坐标po frontImage.SetFixedPosition( leftWhite + j * _envelopeResponse.ProductWidth.MMtoPix(), topWhite + i * _envelopeResponse.ProductHeight.MMtoPix()); _document.Add(frontImage); } // 反面 var backFileId = postCard.BackProductFileId; if (!string.IsNullOrEmpty(backFileId)) { var backFileInfo = new FileInfo(_templateDirectoryInfo.FullName + "/" + backFileId); if (!backFileInfo.Exists) { FileApi.DownloadFileByFileId(backFileId, backFileInfo); } var backImage = new Image(ImageDataFactory.Create(backFileInfo.FullName)); // 转化尺寸 backImage.ScaleAbsolute(_envelopeResponse.ProductWidth.MMtoPix(), _envelopeResponse.ProductHeight.MMtoPix()); backImage.SetPageNumber(BackPageNumber); // 坐标po backImage.SetFixedPosition( leftWhite + (_paperColumn - j - 1) * _envelopeResponse.ProductWidth.MMtoPix(), topWhite + i * _envelopeResponse.ProductHeight.MMtoPix()); _document.Add(backImage); } } } }