我正在创建一个仅包含文本的PDF文档,其中所有文本都是相同的磅值和字体系列,但每个字符可能是不同的颜色.使用下面的代码片段似乎一切正常,但行之间的默认空间略大于我认为的理想值.有没有办法控制这个?(仅供参考,在下面的代码中键入"ColoredText"只包含一个字符串及其颜色.另外,我分别处理换行符的原因是,由于某种原因,如果它在一个Chunk中,它不会导致换行.)
谢谢,雷
List<byte[]> pdfFilesAsBytes = new List<byte[]>();
iTextSharp.text.Document document = new iTextSharp.text.Document();
MemoryStream memStream = new MemoryStream();
iTextSharp.text.pdf.PdfWriter.GetInstance(document, memStream);
document.SetPageSize(isLandscape ? iTextSharp.text.PageSize.LETTER.Rotate() : iTextSharp.text.PageSize.LETTER);
document.Open();
foreach (ColoredText coloredText in coloredTextList)
{
Font font = new Font(Font.FontFamily.COURIER, pointSize, Font.NORMAL, coloredText.Color);
if (coloredText.Text == "\n")
document.Add(new Paragraph("", font));
else
document.Add(new Chunk(coloredText.Text, font));
}
document.Close();
pdfFilesAsBytes.Add(memStream.ToArray());
Run Code Online (Sandbox Code Playgroud) 在讨论位域时,C++ 17标准在第12.2.4节中多次使用术语"分配单元",但似乎没有定义该术语的含义.该标准还指出,"作为特殊情况,宽度为零的未命名位域指定分配单元边界处下一个位字段的对齐."
所以我对这些概念有两个问题,使用下面的代码作为例子:
该标准的术语"分配单位"是什么意思?
为未命名的位域指定的数据类型有何意义?
在第二个问题中,我的假设是数据类型意味着后面的位字段应该在该数据类型的下一个边界上对齐.
struct tag
{
char X:3;
unsigned int :0; // start next bit-field on next unsigned int boundary?
char Y:4;
unsigned char :0; // start next bit-field on next unsigned char boundary?
long Z:32;
};
Run Code Online (Sandbox Code Playgroud)