我需要生成具有以下样式的 PDF。[![在此处输入图像描述][1]][1]
我的意思是(样式)是该位置的徽标设计,表格末尾的绿色边框,以及表格的大小,在我的情况下我需要字母,我想知道我怎么能这样做,如果我可以使用 iTextSharp 或者有必要使用另一个库,说以前的图像是我用 PHP FPDF 生成的认证,但现在我需要在 ASP.NET MVC5 中做同样的事情。
任何帮助或建议都会非常有帮助。
我需要生成具有以下样式的 PDF。[![在此处输入图像描述][1]][1]
我的意思是(样式)是该位置的徽标设计,表格末尾的绿色边框,以及表格的大小,在我的情况下我需要字母,我想知道我怎么能这样做,如果我可以使用 iTextSharp 或者有必要使用另一个库,说以前的图像是我用 PHP FPDF 生成的认证,但现在我需要在 ASP.NET MVC5 中做同样的事情。
任何帮助或建议都会非常有帮助。
我已经遇到过类似的情况。我想出的解决方案是创建具有必要格式的图像,然后将其放入文档中,如下所示:
它是如何工作的?
我们将对象定义
doc
为大小LETTER
(字母)的 iTextSharp 文档,并将边距设置为句点(1f
因为它是类型float
)。一旦我们初始化文档(
doc.Open()
),我们创建一个图像对象(从命名空间iTextSharp.text.Image
)并给它图像路径。一旦我们设置要使用的图像,该行将
ScalePercent
按照本教程插入图像,然后我们将图像放置0,0
在SetAbsolutePosition
.完成上述操作后,我们只需将图像放入文档 (
doc.Add(logo)
)。为了继续自由编辑,我们添加了一个“新行”(
Chunk.NEWLINE
)。重要的是要注意,在我的情况下,我需要一个完整的背景,而在你的情况下,你只需要一个顶部和一个底部。在这种情况下,您可以使用两张图像而不是一张,并将上面的一张放在顶部(您必须找到哪个位置
x,y
对您来说方便),而下面的一张放在底部(in0,0
),因为这样会减轻最终的重量文件。另一件事:图像必须以适合以 300 打印的分辨率制作
dpi
(什么是 DPI?)才能使比例尺24
工作;这必须是(以覆盖整个页面)2550x3300
像素。在我的例子中,我使用了一个适合dpi
水平打印 600 的图像,所以我的分辨率是6600x5100
像素,我的比例不是 to24
而是 to12
。为了生成我的图像,我使用了一个名为Inkscape的软件,但你可以随心所欲地制作它。在 MVC 中提供 PDF
为了通过 Web 服务器传递 PDF,我使用以下代码:
它是如何工作的?文件下载
我们设置了将文件保存到服务器的路径,因为这是生成文件的地方。如果该文件夹不存在,我们创建它。
我们声明一个
FileStream
用于传输文件的。作为参数,它接收文件的完整路径(我们之前定义的文件夹 + 我们将要生成的文件的名称)并声明操作,在这种情况下将是创建文件 (FileMode.Create
)然后我们实例化 PDF 创建器。我们生成 PDF。
我们声明文档的结束(
doc.Close()
和writer.Close()
)。作为方法的返回(它是 a
FileResult
),我们给出一个File
(来自命名空间System.Web.Mvc
),它以服务器上文件的路径、要下载的文件的类型和可选的下载文件名作为参数。其他注意事项
通过这种方式,您可以将文本放置在文档的某个区域并遵守必要的换行符:
在这个块中,我做了以下事情:
想要使用一种不常见的字体(SourceSans),我下载了它(从我个人推荐的Font Squirrel下载)并在我的服务器上找到了该文件。
在前两行中,我指的是能够使用它的排版。
按照本教程,你想要的段落放置你需要的字体(你也可以在官方文档中看到它)。
我们声明一个
PdfContentByte
andColumnText
(别担心,它不会添加到任何表中)(都来自 namespaceiTextSharp.text.pdf
)并将包含该段落的“列”x, y, x', y'
放在我们想要的位置。x, y
是段落左下角x', y'
的坐标,而是右上角的坐标。这不是文本将占用多少空间,而是它最多可以占用多少空间。我们以语句结束搭配
Go()
。执行
考虑所有这些概念,您的最终代码应如下所示: