使用垂直文本从HTML创建PDF

时间:2014-02-19 19:57:12

标签: c# pdf itextsharp

我正在使用.NET 4.0中的iTextSharp 5.4.5创建PDF,如下所示:

class Program
{
   static void Main(string[] args)
    {
            string html="<span style='transform: rotate(-90deg)'>Some Text</span>";
            byte[] file=PDFGenerator.GeneratePDF(html);
            string filename=@"C:\Users\myaccount\Desktop\myfile.pdf";
            var v=System.IO.File.Create(filename);
            v.Write(file, 0, file.Length);
            }
}
public class PDFGenerator
        {
        public static byte[] GeneratePDF(string html)
            {
            MemoryStream msOutput = new MemoryStream();
            TextReader reader = new StringReader(html);
            Document document = new Document(PageSize.A4, 30, 30, 30, 30);
            PdfWriter writer = PdfWriter.GetInstance(document, msOutput);
            HTMLWorker worker = new HTMLWorker(document);
            document.Open();
            worker.StartDocument();
            worker.Parse(reader);
            worker.EndDocument();
            worker.Close();
            document.Close();
            return msOutput.ToArray();
            }
        }

然而,PDF中的文字根本没有轮换出来。我需要垂直旋转文本。我可以输入任何CSS或HTML以便旋转吗?

1 个答案:

答案 0 :(得分:1)

HTMLWorker已被弃用了很长时间,支持XMLWorker,并且正在进行零工作。前者并不真正支持CSS,而后者也支持CSS。但是,无论如何都不支持transform CSS属性,因此无法为您提供帮助。 (See this for a list of supported properties。)

您是否绝对需要HTML解析?如果没有,您可以使用ColumnText类来执行您想要的操作。 PDF的起源位于左下角而不是左上角,因此可能需要调整数学。此外,轮播方向相反,因此-90只变为90

ColumnText.ShowTextAligned(writer.DirectContent, Element.ALIGN_CENTER, new Phrase("Hello World"), 50, 50, 90);