在PDFPCell iTextPDF C#中旋转文本

时间:2016-05-23 05:05:44

标签: c# pdf-generation itextsharp itextpdf

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

我还提供了关于我的字母标准的示例图像。谢谢。 text is rotated using contentbyte class method.

1 个答案:

答案 0 :(得分:1)

  

如何对PDFPCell对象内的文本进行四十度旋转。我可以做一些使其工作的技巧而不是手动使用PDFContentByte方法,例如ShowTextAligned。

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

在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

这导致

screenshot

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

  

我建议使用图案颜色,但我不确定这是否是您的确切用例。

这将具有额外的优势,即文本不会妨碍复制和粘贴/文本提取。