在 PDFPCell iTextPDF C# 中旋转文本

Rotating text inside PDFPCell iTextPDF C#

我目前正在为我的组织使用 iTextPDF 库在 C# 中开发 PDF 生成器应用程序。如何对 PDFPCell 对象内的文本进行四十度旋转。我可以做一些技巧让它工作而不是手动使用 PDFContentByte 方法,例如 ShowTextAligned。

我还提供了关于我的字母标准的示例图片。谢谢。

How can I make a forty degree rotation to a text inside PDFPCell object. Can I do some tricks for making it work instead of manually using PDFContentByte method, such as ShowTextAligned.

这取决于您使用的 iText(Sharp) 版本。

在版本 5.x 和更早版本 中,您要么必须使用 ShowTextAligned,要么必须在写入要旋转的文本之前和之后操作内容流坐标系。因此,为了在非常高的级别上绘制文本 API,您将通过非常低级别的内容流操作来支付费用。

另一方面,在版本 7 中,可以在高级 API 中任意旋转单元格内容。例如,您可以这样做(对于 iText/Java;移植到 iTextSharp/.Net 应该是微不足道的):

try (   PdfWriter pdfWriter = new PdfWriter(target);
        PdfDocument pdfDocument = new PdfDocument(pdfWriter)    )
{
    Document document = new Document(pdfDocument);
    Table table = new Table(new float[]{150, 150});
    Cell cell = new Cell();
    cell.setRotationAngle(40 * Math.PI / 180.0)
        .add(new Paragraph("Test Watermark Text Copyright Test Only"))
        .setBorder(Border.NO_BORDER);
    table.addCell(cell);
    table.addCell(cell.clone(true));
    table.addCell(cell.clone(true));
    table.addCell(cell.clone(true));
    document.add(table);
}

(RotateCellContent.java)

这导致


尽管如此,您的示例图像似乎表明您只是想一次又一次地重复旋转的文本作为背景。在这种情况下,@Bruno 在他的评论中建议的解决方案可能更合适。

I'd suggest using a pattern color, but I'm not sure if that's your exact use case.

这会有额外的好处,即文本不会妨碍复制和粘贴/文本提取。