【问题标题】:Rotating text inside PDFPCell iTextPDF C#在PDFPCell iTextPDF C#中旋转文本
【发布时间】:2016-09-19 20:38:09
【问题描述】:

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

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

【问题讨论】:

  • 创建PdfTemplate 然后将其包装在图像中并旋转该图像是一种选择。使用旋转文本创建图案颜色是另一种选择。使用PdfPCell 事件是您可能已经找到的选项。最有效的方法取决于确切的用例。看你的屏幕截图,我没有看到细胞。查看您的屏幕截图,我建议使用图案颜色,但我不确定这是否是您的确切用例。
  • 如果 itextsharp 中的 pdfpcell 可以进行 45 度旋转,这个案例早早解决了...大声笑...我会尝试使用 pdftemplate 作为您的建议...
  • hmm...我仍然没有从“创建 PdfTemplate 然后将其包装在图像中并旋转该图像”中获得信息。这是否意味着我在图像中创建旋转文本模板,然后使用这些模板作为水印来创建新的 pdf...?
  • @Bruno 我尝试在link 使用您的教程。我明白了,但我的结果是!pattern color,我的代码是:link

标签: c# pdf-generation itextsharp itextpdf


【解决方案1】:

如何对 PDFPCell 对象内的文本进行 40 度旋转。我可以做一些技巧来使它工作,而不是手动使用 PDFContentByte 方法,例如 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 在他的评论中建议的解决方案可能更合适。

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

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

【讨论】:

  • hmmm.... 我想我必须将我的代码更改为 java,因为 itext7 只出现在 java 中。但是,是否仍然可以使用 itextsharp 创建这个水印...?
  • 我打赌很快也会有 iTextSharp 7。
  • 我会等它... :D
  • 现在,我将在.Net上尝试使用新的iText7...最后,它涉及到c#...
猜你喜欢
  • 2016-03-28
  • 1970-01-01
  • 2012-11-16
  • 2011-02-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多