これで、pdfドキュメントの左上隅のPDFにテキスト注釈を追加するだけです。現在のコードは次のようになります。回転されたクロップボックスにiTextSharpでアノテーションを追加
public static byte[] StampPDFDocument(byte[] pdf, string stampString) {
using (var ms = new MemoryStream()) {
var reader = new iTextSharp.text.pdf.PdfReader(pdf);
var stamper = new iTextSharp.text.pdf.PdfStamper(reader, ms);
var box = reader.GetCropBox(1);
var left = box.Left;
var top = box.Top;
iTextSharp.text.Rectangle newRectangle = new iTextSharp.text.Rectangle(left + 20, top - 20, left + 250, top - 40);
var pcb = new iTextSharp.text.pdf.PdfContentByte(stamper.Writer);
pcb.SetColorFill(iTextSharp.text.BaseColor.RED);
var annot = iTextSharp.text.pdf.PdfAnnotation.CreateFreeText(stamper.Writer, newRectangle, stampString, pcb);
annot.Flags = iTextSharp.text.pdf.PdfAnnotation.FLAGS_PRINT;
annot.BorderStyle = new iTextSharp.text.pdf.PdfBorderDictionary(0, 0);
stamper.AddAnnotation(annot, 1);
stamper.Close();
return ms.ToArray();
}
}
ここで、元のコードはbox = reader.GetPageSize(1)を使用していました。まあ、私はすぐに文書が回転された場合に問題を引き起こすことを認識しました。 OK。問題はありません。reader.GetPageSizeWithRotationという関数があります。それは魅力のように働いた。しかし、今では、私は別の箱を持っているドキュメントを取得しています。したがって、私が追加していたアノテーションは、クロップボックス領域外でした。したがって、この現在のコードは回転していないドキュメントに対してのみ機能します。問題は、文書が回転しているか、文書とは別のクロップボックスを含んでいるかにかかわらず、pdf文書の左上隅のコアナーを取得する方法は?ここで
"トリムボックス"があれば、どのように対処しますか? – ch3rryc0ke
PdfReaderは、getBoxSize()を使用して、指定されたPDFページから任意の「ボックス」を取得できます:http://api.itextpdf.com/itext/com/itextpdf/text/pdf/PdfReader.html#getBoxSize(int、java.lang。文字列) –