首页 > 解决方案 > 将裁切/出血标记添加到 PDF - PDFsharp

问题描述

我正在尝试使用PDFsharp向 PDF 添加修剪/出血标记

我可以设置 PDF 的左上角,但是所有其他角都没有显示,

我正在做的是将 设置为左​​上角xGraphics.DrawLine的位置,为左上角和左上角添加出血标记,然后我正在旋转 PDF 的页面,以便xGraphics.DrawLine可以使用相同的位置,

这样如果 PDF 的页面大小不同,我希望因为它的左上角,它总是有正确的出血标记位置。

下面是我创建的方法以及结果。

我也尝试过希望它会重新加载带有更改using (XGraphics xGraphics = XGraphics.FromPdfPage(pdfPage))for (int i = 1; i <= 4; i++)pdf 页面,因为第一个循环似乎没问题,但是没有任何变化。

/// <summary>
/// Add Bleed To PDF.
/// </summary>
/// <param name="pdfDocument"></param>
static void AddBleed(ref PdfDocument pdfDocument)
{
    // Check The Pdf Has Been Loaded Into Memory.
    if (pdfDocument.PageCount > 0)
    {
        // Create Pen.
        XPen xPen = new XPen(XColors.Gray, 3);
        const float TRIM_MARK_LEN = 30;

        // Start Looping The Pdf's Pages
        foreach (PdfPage pdfPage in pdfDocument.Pages)
        {
            using (XGraphics xGraphics = XGraphics.FromPdfPage(pdfPage))
            {                     
                // A Page Has 4 Sides.
                for (int i = 1; i <= 4; i++)
                {
                    // Top Left.
                    xGraphics.DrawLine(xPen, TRIM_MARK_LEN, TRIM_MARK_LEN - 10, TRIM_MARK_LEN, -10);

                    // Bottom Top Left.
                    xGraphics.DrawLine(xPen, 0, TRIM_MARK_LEN, TRIM_MARK_LEN - 10, TRIM_MARK_LEN);

                    // Rotate The Pdf Page.
                    xGraphics.PdfPage.Rotate = xGraphics.PdfPage.Rotate + 90;

                    // Save The Graphics.
                    xGraphics.Save();
                }
            }
        }
    }
}

在此处输入图像描述

标签: c#pdfpdfsharp

解决方案


AFAIK 您必须在更改页面旋转后创建一个新的 XGraphics 对象。

你想画四个角,每个角一个。但是AFAIK您的代码将在坐标随页面旋转的同一位置绘制四个角度。

停止旋转页面并分别绘制四个角度。

顺便说一句:只有在您稍后调用Save()时调用才有意义Restore()Save()据我所知,您的代码中的调用没有视觉效果。最好放下那条线。


推荐阅读