0

我在我的 .net 项目中使用 GemBox 创建一个 PDF 文件,我想知道如何将二维码放置在右上角。

使用下面的代码,我正在替换我的 word 文件中的变量,并添加了 qr 代码部分,qr 代码是在单独的页面上创建的,而不是在同一页面上。

所以我的问题是,如何将二维码放在同一页面上,以及如何将其定位在右上角。

我希望有人能帮帮忙 :)

var qrCodeValue = JsonConvert.SerializeObject(new
            {
                FirstName = data.firstName,
                LastName = data.lastName,
                CreationDate = data.documentCreationDate
            });

var qrCodeField = new Field(document, FieldType.DisplayBarcode, $"{qrCodeValue} QR");

document.Sections.Add(new Section(document, new Paragraph(document, qrCodeField)));

document.Content.Replace("%FirstName%", data.firstName);
document.Content.Replace("%LastName%", data.lastName);
4

1 回答 1

1

您需要将 QR 码添加到现有部分。

此外,要将其定位在右上角,您可以Paragraph在开头或文档标题中插入右对齐或插入浮动TextBox.

以下是所有三种建议方法的示例。

插入现有部分的正文

var qrCodeField = new Field(document, FieldType.DisplayBarcode, $"{qrCodeValue} QR");
var qrCodeParagraph = new Paragraph(document, qrCodeField);
qrCodeParagraph.ParagraphFormat.Alignment = HorizontalAlignment.Right;
document.Sections[0].Blocks.Insert(0, qrCodeParagraph);

插入现有节的标题

var qrCodeField = new Field(document, FieldType.DisplayBarcode, $"{qrCodeValue} QR");
var qrCodeParagraph = new Paragraph(document, qrCodeField);
qrCodeParagraph.ParagraphFormat.Alignment = HorizontalAlignment.Right;

var headersFooters = document.Sections[0].HeadersFooters;
if (headersFooters[HeaderFooterType.HeaderFirst] == null)
    headersFooters.Add(new HeaderFooter(document, HeaderFooterType.HeaderFirst));

headersFooters[HeaderFooterType.HeaderFirst].Blocks.Insert(0, qrCodeParagraph);

使用浮动文本框插入

var qrCodeField = new Field(document, FieldType.DisplayBarcode, $"{qrCodeValue} QR");
var qrCodeParagraph = new Paragraph(document, qrCodeField);

var qrTextBox = new TextBox(document,
    new FloatingLayout(
        new HorizontalPosition(-50, LengthUnit.Point, HorizontalPositionAnchor.RightMargin),
        new VerticalPosition(50, LengthUnit.Point, VerticalPositionAnchor.TopMargin),
        new Size(100, 100)),
    qrCodeParagraph);

qrTextBox.Outline.Fill.SetEmpty();

var paragraph = (Paragraph)document.Sections[0]
    .GetChildElements(false, ElementType.Paragraph)
    .First();

paragraph.Inlines.Add(qrTextBox);
于 2022-02-28T07:09:52.633 回答