问题描述
我的任务是在许多现有的PDF中添加水印,并且在C#中为此使用iText7。在此图片中可以看到结果(使用空白pdf)
它在任何地方都可以正常显示,并且可以从Chrome和Edge完美打印。但是,从Adobe Acrobat Reader打印时,会发生以下情况:
谁比我更了解PDF,谁能帮助解决这个问题?我正在使用iText的7.1.13版本。
可在此处获得测试pdf:
https://potanteststorage.blob.core.windows.net/pdf/Test.pdf
C#代码:
public static void AddProductionWatermarks(string sourceFile,string destinationPath)
{
float watermarkTrimmingRectangleWidth = 75;
float watermarkTrimmingRectangleHeight = 250;
//Custom text
float formWidth = 75;
float formHeight = 250;
float formXOffset = 0;
float formYOffset = 0;
float xTranslation = 50;
float yTranslation = 0;
double rotationInRads = Math.PI / 2;
PdfFont font = PdfFontFactory.CreateFont(StandardFonts.TIMES_ROMAN);
float fontSize = 12;
PdfDocument pdfDoc = new PdfDocument(new PdfReader(sourceFile),new PdfWriter(destinationPath));
var numberOfPages = pdfDoc.GetNumberOfPages();
pdfpage page = null;
for (var i = 1; i <= numberOfPages; i++)
{
page = pdfDoc.GetPage(i);
Rectangle ps = page.GetPageSize();
//PRODUCTION watermark -------------------------------------------------------
float prodBottomLeftX = -20;
float prodBottomLeftY = ps.GetHeight() / 2;
Rectangle prodWatermarkTrimmingRectangle = new Rectangle(prodBottomLeftX,prodBottomLeftY,watermarkTrimmingRectangleWidth,watermarkTrimmingRectangleHeight);
PdfWatermarkAnnotation prodWatermark = new PdfWatermarkAnnotation(prodWatermarkTrimmingRectangle);
AffineTransform transform2 = new AffineTransform();
transform2.Translate(xTranslation,yTranslation);
transform2.Rotate(rotationInRads);
PdfFixedPrint fixedPrint2 = new PdfFixedPrint();
prodWatermark.SetFixedPrint(fixedPrint2);
PdfFormXObject form2 = new PdfFormXObject(formRectangle);
PdfCanvas canvas2 = new PdfCanvas(form2,pdfDoc);
transform2.GetMatrix(transformValues);
canvas2.SaveState()
.BeginText().SetColor(new DeviceRgb(255,36,0),true)
.SetTextMatrix(transformValues[0],transformValues[1],transformValues[2],transformValues[3],transformValues[4],transformValues[5])
.SetFontAndSize(font,fontSize)
.showtext("PRODUCTION")
.EndText()
.RestoreState();
canvas2.Release();
prodWatermark.SetAppearance(PdfName.N,new PdfAnnotationAppearance(form2.GetPdfObject()));
prodWatermark.SetFlags(PdfAnnotation.PRINT);
page.AddAnnotation(prodWatermark);
}
page?.Flush();
pdfDoc.Close();
}
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)