Если Вы хотите изменить содержание существующего файла PDF и добавить дополнительное содержание, такое как водяные знаки, pagenumbers, дополнительные заголовки, PdfStamper является объектом, в котором Вы нуждаетесь. Я успешно использовал следующий код вставить изображение в существующий файл PDF к данной абсолютной позиции:
using System.IO;
using iTextSharp.text;
using iTextSharp.text.pdf;
class Program
{
static void Main(string[] args)
{
using (Stream inputPdfStream = new FileStream("input.pdf", FileMode.Open, FileAccess.Read, FileShare.Read))
using (Stream inputImageStream = new FileStream("some_image.jpg", FileMode.Open, FileAccess.Read, FileShare.Read))
using (Stream outputPdfStream = new FileStream("result.pdf", FileMode.Create, FileAccess.Write, FileShare.None))
{
var reader = new PdfReader(inputPdfStream);
var stamper = new PdfStamper(reader, outputPdfStream);
var pdfContentByte = stamper.GetOverContent(1);
Image image = Image.GetInstance(inputImageStream);
image.SetAbsolutePosition(100, 100);
pdfContentByte.AddImage(image);
stamper.Close();
}
}
}
при вставке изображения, у Вас есть возможность изменить размеры его. Можно смотреть на матрица преобразования в iTextSharp документации.
У меня был хороший опыт работы с ANTLR v3 . Безусловно, самым большим преимуществом является то, что он позволяет писать синтаксические анализаторы LL (*) с бесконечным упреждающим просмотром - они могут быть довольно неоптимальными, но грамматика может быть написана наиболее простым и естественным способом без необходимости рефакторинга для обхода ограничений синтаксического анализатора и производительность парсера часто не имеет большого значения (я надеюсь, что вы не пишете компилятор C ++), особенно в обучающих проектах.
Он также предоставляет довольно хорошие средства для создания значимых AST без необходимости писать любой код - для каждой грамматической продукции вы указываете «критический» токен или подпродукцию, и это становится узлом дерева. Или вы можете написать постановку из дерева.
Проверьте значение свойства userAccountControl
, которое фактически является перечислением флагов.
Я уверен в точном флаге для «Вход в качестве службы», но вы можете протестировать его с известным user и значения определены в документации на MSDN
Существует API групповой политики , но он разработан для использования на C / C ++. Даже если вы можете найти способ запросить групповую политику с ее помощью, вы все равно не узнаете, применяется ли эта политика к машинам - применение групповой политики может быть очень сложным, включая принудительное использование, блокировку и ретроспективный анализ.
Было бы лучше, если бы вы сказали нам, чего пытаетесь достичь, чтобы посмотреть, есть ли другой подход, который может быть более плодотворным.