繁体   English   中英

MS interop C# 中的 Word 和 PDF 文档中的水印位置不同

[英]Watermark location is different in word and PDF document in MS interop C#

在我的程序中,有一个 function 用户可以使用它向 docx 或 PDF 文件添加水印。

Application wordApp = new Application();
wordApp.Visible = false;
wordApp.ScreenUpdating = false;
Microsoft.Office.Interop.Word.Document wordDoc = null;
wordDoc = wordApp.Documents.Open(file.path, o, o, o, o, o, o, o, o, o, o, o, o, o, o, o);
wordDoc.Activate();

if (file.watermark == true)
{
    Microsoft.Office.Interop.Word.Shape wordShape = null;
    foreach (Microsoft.Office.Interop.Word.Section section in wordDoc.Sections)
    {
        wordShape = section.Headers[Microsoft.Office.Interop.Word.WdHeaderFooterIndex.wdHeaderFooterPrimary].Shapes.AddTextEffect(
                         Microsoft.Office.Core.MsoPresetTextEffect.msoTextEffect1,
                         "What a lovely day", "Arial", (float)30,
                         Microsoft.Office.Core.MsoTriState.msoTrue,
                         Microsoft.Office.Core.MsoTriState.msoFalse,
                         150, 150, ref o);
        wordShape.Fill.Visible = Microsoft.Office.Core.MsoTriState.msoTrue;
        wordShape.Fill.Solid();
        wordShape.Fill.ForeColor.RGB = (Int32)Microsoft.Office.Interop.Word.WdColor.wdColorGray15;
        wordShape.Line.Visible = Microsoft.Office.Core.MsoTriState.msoFalse;
        wordShape.RelativeHorizontalPosition = Microsoft.Office.Interop.Word.WdRelativeHorizontalPosition.wdRelativeHorizontalPositionMargin;
        wordShape.RelativeVerticalPosition = Microsoft.Office.Interop.Word.WdRelativeVerticalPosition.wdRelativeVerticalPositionMargin;
        wordShape.Left = (float)Microsoft.Office.Interop.Word.WdShapePosition.wdShapeCenter; // here I set the location to center
        wordShape.Top = (float)Microsoft.Office.Interop.Word.WdShapePosition.wdShapeCenter; 
        wordShape.Rotation = -45;
    }
}

if (file.PDFGenerate == true)
{
    object wordFileFormat = Microsoft.Office.Interop.Word.WdSaveFormat.wdFormatPDF;
    wordDoc.SaveAs2(file.newPath + ".pdf", ref wordFileFormat, o, o, o, o, o, o, o, o, o, o, o, o, o, o, o);
    wordDoc.Close(oFalse, o, o);
    wordApp.Quit(o, o, o);
    
}
if (file.PDFGenerate != true) 
{
    
    wordDoc.SaveAs2(file.newPath +".docx", ref o, ref o, ref o, ref o, ref o, ref o, ref o, ref o, ref o, ref o, ref o, ref o, ref o, ref o, ref o, ref o);
    wordDoc.Close();
    wordApp.Quit();
}

问题是添加水印的位置与您在上传的图片中看到的不同。

pdf水印

docx的水印

在 PDF 文件中,水印正确地放置在文档的中心,而在 docx 文件中,它们不是。 我想解决这个问题,保留我的代码的结构和算法。 我很感激任何帮助。 提前非常感谢。

foreach (Microsoft.Office.Interop.Word.Section section in wordDoc.Sections)
            {
                Microsoft.Office.Interop.Word.Shape wordShape = section.Headers[Microsoft.Office.Interop.Word.WdHeaderFooterIndex.wdHeaderFooterPrimary].Shapes.AddTextEffect
                (Microsoft.Office.Core.MsoPresetTextEffect.msoTextEffect1, "What a lovely day", "Arial", (float)30, Microsoft.Office.Core.MsoTriState.msoTrue,
                Microsoft.Office.Core.MsoTriState.msoFalse, 0, 0, o);
                
                wordShape.Fill.Visible = Microsoft.Office.Core.MsoTriState.msoTrue;
                wordShape.Fill.Solid();
                wordShape.Fill.ForeColor.RGB = (Int32)Microsoft.Office.Interop.Word.WdColor.wdColorGray15;
                wordShape.Line.Visible = Microsoft.Office.Core.MsoTriState.msoFalse;
                wordShape.WrapFormat.Type = Microsoft.Office.Interop.Word.WdWrapType.wdWrapBehind;
                wordShape.Rotation = -45;
                wordShape.Left = (float)Microsoft.Office.Interop.Word.WdShapePosition.wdShapeCenter;
                wordShape.Top = (float)Microsoft.Office.Interop.Word.WdShapePosition.wdShapeCenter;
                wordShape.RelativeHorizontalPosition = Microsoft.Office.Interop.Word.WdRelativeHorizontalPosition.wdRelativeHorizontalPositionPage;
                wordShape.RelativeVerticalPosition = Microsoft.Office.Interop.Word.WdRelativeVerticalPosition.wdRelativeVerticalPositionPage;
            }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM