0

ABCpdf7を使用してPDFを作成していますが、場合によっては、ドキュメントのすべてのページに表示される「透かしのような」テキストを追加したいと考えています。すべてのページでテキストを一意にすると、期待どおりに機能しますが、すべてのページで同じテキストの場合、alphaプロパティは無視されます。

objectIDを使用して、画像でない場合はそれを参照できないようです。PDFはさまざまな言語で利用できるため、テキストを使用して画像を作成して追加することはできません。 。

たとえば、これは機能します。

theDoc.HPos = 0;
theDoc.VPos = 0;
theDoc.Rect.SetRect(250, 265, 500, 80);
theDoc.Transform.Rotate(55, 250, 265);
theDoc.FontSize = 72;
theDoc.Color.String = "0 0 0 a70";
Page[] pages = theDoc.ObjectSoup.Catalog.Pages.GetPageArray();
foreach (Page p in pages)
{
    theDoc.Page = p.ID;
    var dummy = theDoc.PageNumber.ToString();
    theDoc.AddText("Unpublished" + dummy);
}

...しかし、これは機能しません:

theDoc.HPos = 0;
theDoc.VPos = 0;
theDoc.Rect.SetRect(250, 265, 500, 80);
theDoc.Transform.Rotate(55, 250, 265);
theDoc.FontSize = 72;
theDoc.Color.String = "0 0 0 a70";
Page[] pages = theDoc.ObjectSoup.Catalog.Pages.GetPageArray();
foreach (Page p in pages)
{
    theDoc.Page = p.ID;
    theDoc.AddText("Unpublished");
}

私はここで非常に明白な何かを見逃しているように感じますが、何を理解できないようです...

4

3 に答える 3

0
theDoc.Transform.Rotate(55, 250, 265);

この行は、最初のページに対して 1 回呼び出す必要があります。そうしないと、ページごとに回転し続けます。

于 2015-09-11T11:15:45.450 に答える
-2

こんにちは、私が問題を完全に理解しているかどうかは100%わかりませんが、私が考えていることであれば、これが役立つかもしれません.

すべてのページの最後に透かしを追加していることを確認しましたか。同様のことをしているときに、さまざまな不透明度で問題が発生していました。それは、あるページのいくつかのオブジェクトの下にテキストがあり、別のページの一番上にあることが原因でした。各ページで最後に呼び出すだけで、ページ上の他のすべてのものの上に配置されるようにするメソッドをラッパーに作成しました。

    public void DrawWaterMark(double positionX = -55, double positionY = 130, string text = "APPROVED", double width = 260, double height = 90, TextAlign textAlign = TextAlign.Center, int colourR = 197, int colourG = 197, int colourB = 197, int fontSize = 95)
    {
        // Set text alignment:
        switch (textAlign)
        {
            case TextAlign.Left:
                PdfDocument.HPos = 0;
                break;
            case TextAlign.Center:
                PdfDocument.HPos = 0.5;
                break;
            case TextAlign.Right:
                PdfDocument.HPos = 1;
                break;
        }

        // Set the text colour:
        PdfDocument.Color.String = colourR + " " + colourG + " " + colourB;

        SetFontSize(fontSize);

        // Draw text:
        PdfDocument.Transform.Rotate(45, (PdfDocument.MediaBox.Width / 2), (PdfDocument.MediaBox.Height / 2));

        DrawHtmlString(positionX, positionY, width, height, "<b>" + text + "</b>", TextAlign.Center, colourR, colourG, colourB, 50);

        PdfDocument.Transform.Rotate(-45, (PdfDocument.MediaBox.Width / 2), (PdfDocument.MediaBox.Height / 2));

        SetFontSize(11);
    }
于 2011-09-05T09:42:45.630 に答える