我正在使用.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以便旋转吗?
答案 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);