Можно ли в PDFClown отображать слои поверх содержимого?C#

Место общения программистов C#
Ответить
Anonymous
 Можно ли в PDFClown отображать слои поверх содержимого?

Сообщение Anonymous »

Я новичок в PDF Clown и в модификации PDF в целом. Я хочу добавить текст в новом слое/OCG в PDF-файл. В этом коде нужно добавить имя и номер в PDF-файл. Моя проблема в том, что этот текст/слой/OCG появляется под содержимым PDF. Я хочу добавить текст поверх содержимого. Вариант использования: если форма уже заполнена, я могу добавить белый прямоугольник поверх заполненной части и добавить текст поверх белого прямоугольника, но это не сработает, это добавляется только под содержание. Это мой код прямо сейчас:

Код: Выделить всё

using System;
using System.Drawing;
using org.pdfclown.documents;
using org.pdfclown.documents.contents;
using org.pdfclown.documents.contents.colorSpaces;
using org.pdfclown.documents.contents.composition;
using org.pdfclown.documents.contents.fonts;
using org.pdfclown.documents.contents.layers;
using org.pdfclown.files;
using org.pdfclown.objects;

namespace PDFClownOverlayReport
{
internal class Program
{
static void Main(string[] args)
{
string inputPath = @"C:\input.pdf";
string outputPath = @"C:\output.pdf";

using (var file = new org.pdfclown.files.File(inputPath))
{
Document document = file.Document;
Page page = document.Pages[0];

// Ensure layer definition exists
if (document.Layer == null)
{
document.Layer = new LayerDefinition(document);
}

//// Create a new layer for the rectangle
//Layer rectangleLayer = new Layer(document, "Rectangle Layer");

//// Add the rectangle layer to the document's layer collection
//document.Layer.Layers.Add(rectangleLayer);
//rectangleLayer.Visible = true;

// Create a content composer for the pagex
PrimitiveComposer composer = new PrimitiveComposer(page);

// Flush the existing content
composer.Flush();

// Begin a new content block
composer.BeginLocalState();

//// Begin the rectangle layer block
//composer.BeginLayer(rectangleLayer);

//// Set fill color to light blue for visibility
//composer.SetFillColor(new DeviceRGBColor(0.5, 0.5, 1)); // Light blue color

//// Draw a rectangle
//composer.DrawRectangle(new RectangleF(105, 115, 190, 20));
//composer.Fill();

//// End the local state for rectangle layer
//composer.End();

//// Flush the content for rectangle layer
//composer.Flush();

// Create a new layer for the text
Layer textLayer = new Layer(document, "Text Layer");

// Add the text layer to the document's layer collection
document.Layer.Layers.Add(textLayer);
textLayer.Visible = true;

// Begin a new content block for text layer
composer.BeginLocalState();

// Begin the text layer block
composer.BeginLayer(textLayer);

// Set font and size
composer.SetFont(new StandardType1Font(document, StandardType1Font.FamilyEnum.Helvetica, true, false), 12);

// Set text color to red for visibility
composer.SetFillColor(new DeviceRGBColor(0, 0, 0)); // Red color

// Add text on top of the rectangle
composer.ShowText("John Smith", new PointF(106, 128));
composer.ShowText("1234567890", new PointF(61, 147));

// End the local state for text layer
composer.End();

// Flush the content for text layer
composer.Flush();

// Save the modified document
file.Save(outputPath, SerializationModeEnum.Standard);
}

Console.WriteLine("PDF modified and saved successfully.");
}
}
}

Я попробовал запустить код и ожидал, что текст будет нарисован поверх содержимого, но вместо этого он был нарисован под содержимым.

Подробнее здесь: https://stackoverflow.com/questions/787 ... he-content
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»