我试图PdfPCell
在一个循环中添加一个Table
带有2列的iTextSharp Document
.但是如果循环内的计数是奇数.然后最后一个单元格没有被添加.有人可以提供这个问题的解决方案吗?我的代码如下:
var doc = new Document();
PdfWriter.GetInstance(doc, new FileStream(Server.MapPath("~/QrCodes/") + fileName + ".pdf", FileMode.Create));
doc.Open();
PdfPTable table = new PdfPTable(2);
table.WidthPercentage = 100;
foreach (var item in items)
{
if (itemImages.Any(p => p.Reference == item.Reference) == true)
{
System.Drawing.Image image = System.Drawing.Image.FromFile(Server.MapPath(@item.ItemQrCode));
iTextSharp.text.Image pdfImage = iTextSharp.text.Image.GetInstance(image, ImageFormat.Jpeg);
PdfPCell cellImage = new PdfPCell(pdfImage);
cellImage.HorizontalAlignment = Element.ALIGN_CENTER;
cellImage.VerticalAlignment = Element.ALIGN_MIDDLE;
cellImage.Border = 0;
table.AddCell(cellImage);
}
}
doc.Add(table);
doc.Close();
Run Code Online (Sandbox Code Playgroud) 我一直在尝试使用 itextsharp 将图像添加到所有页面。图像需要覆盖每个页面的所有内容。我在所有其他代码下面使用了以下代码doc.add()
Document doc = new Document(iTextSharp.text.PageSize.A4, 10, 10, 30, 1);
PdfWriter writer = PdfWriter.GetInstance(doc, new FileStream(Server.MapPath("~/pdf/" + fname), FileMode.Create));
doc.Open();
Image image = Image.GetInstance(Server.MapPath("~/images/draft.png"));
image.SetAbsolutePosition(12, 300);
writer.DirectContent.AddImage(image, false);
doc.Close();
Run Code Online (Sandbox Code Playgroud)
上面的代码只在最后一页插入了一张图片。有没有办法在所有页面中以相同的方式插入图像?
我必须创建一个圆角的桌子,类似于:
我可以用iTextSharp做到吗?
我现在试过这个,但它不起作用.form.GenerateAppearances = true;
我合并了我的2个文件然后保存.然后我再次打开它以填充所有字段.它说所有的Acrofields钥匙都不见了,但是当我在Nitro pro中打开它的时候.为什么我不能在代码中看到它们?在保存之前我是否必须添加一些东西?
private static void CombineAndSavePdf1(string savePath, List<string> lstPdfFiles)
{
using (Stream outputPdfStream = new FileStream(savePath, FileMode.Create, FileAccess.Write, FileShare.None))
{
Document document = new Document();
PdfSmartCopy copy = new PdfSmartCopy(document, outputPdfStream);
document.Open();
PdfReader reader;
int totalPageCnt;
PdfStamper stamper;
string[] fieldNames;
foreach (string file in lstPdfFiles)
{
reader = new PdfReader(file);
totalPageCnt = reader.NumberOfPages;
for (int pageCnt = 0; pageCnt < totalPageCnt; )
{
//have to create new reader for each page or PdfStamper will throw error …
Run Code Online (Sandbox Code Playgroud) 我以这种方式将 2 个字符串组合到段落中,
String str2="";
String str1="";
ColumnText ct = new ColumnText(cb);
ct.setSimpleColumn(36, 600, 600, 800);
ct.addElement(new Paragraph(str1 + str2));
int status1 = ct.go();
Run Code Online (Sandbox Code Playgroud)
问题是我的 str1 和 str2 的字体颜色相同。
我想要 str1 和 str2 具有不同的字体颜色和大小..
我怎样才能在ColumnText/Paragraph上做到这一点?
有人可以帮我吗...
据我所知,itext没有任何字体库,你需要提供字体库.pdf一旦生成,将由Acrobat查看,并假设它是标准字体,adobe将支持它.我的问题是关于字体的许可.
a)我是否需要获得我在iText中使用的字体的许可证?例如,如果我使用Arial,最常用的字体之一并且不是免费的,我是否需要购买字体?
b)如果我使用任何特定字体,例如STSONG.ttf,对于中文字符,我是否需要获得此许可证?
我正在使用 Itextsharp 使用 VB.net 将文本文件动态转换为 PDF 文档。但是,我需要使用不属于 iTextSharp 库的系统字体。我看过一些使用 C# 的代码示例。但是,我是编程新手,我的经验都在 Visual Basic 中。有人可以帮我编写代码以使用系统字体吗?
我有两种方法.一个在服务器端生成PDF,另一个在客户端下载PDF.
如何在不将其存储在服务器端的情况下执行此操作,并允许客户端直接下载此文件.
以下是两种方法:
public void downloadPDF(HttpServletRequest request, HttpServletResponse response) throws IOException{
response.setContentType("application/pdf");
response.setHeader("Content-disposition","attachment;filename="+ "testPDF.pdf");
FileInputStream fis = null;
DataOutputStream os = null;
try {
File f = new File("C://New folder//itext3.pdf");
response.setHeader("Content-Length",String.valueOf(f.length()));
fis = new FileInputStream(f);
os = new DataOutputStream(response.getOutputStream());
byte[] buffer = new byte[1024];
int len = 0;
while ((len = fis.read(buffer)) >= 0) {
os.write(buffer, 0, len);
}
} catch (Exception e) {
e.printStackTrace();
} finally {
fis.close();
os.flush();
os.close();
}
response.setHeader("X-Frame-Options", "SAMEORIGIN");
}
Run Code Online (Sandbox Code Playgroud)
和:
public Document generatePDF() { …
Run Code Online (Sandbox Code Playgroud) 我需要你帮助设置单元格底部边框的长度.目前,它显示单元格的底部边界太长,我需要缩短它.我试图改变表的宽度,但它没有正确.
以下是代码:
Paragraph tableParagraph = new Paragraph();
tableParagraph.setAlignment(Element.ALIGN_LEFT);
PdfPTable table55 = new PdfPTable(2);
table55 = new PdfPTable(new float[] { 6, 6 });
table55.setWidthPercentage(90f);
table55.getDefaultCell().setBorder(PdfPCell.NO_BORDER);
PdfPCell cel2a = new PdfPCell(new Paragraph("Total of Net Profit ", font));
PdfPCell cel2b = new PdfPCell(new Paragraph("100.000" + " USD ", font));
cel2a.setBorder(Rectangle.NO_BORDER);
cel2b.setBorder(Rectangle.BOTTOM);
cel2a.setLeading(1f, 1.5f);
cel2b.setLeading(1f, 1.5f);
table55.addCell(cel2a);
table55.addCell(cel2b);
Run Code Online (Sandbox Code Playgroud) 我正在尝试从iText库生成的文件生成inputStream对象。这些是文件中的第一个字节:
%PDF-1.4
%âãÏÓ
2 0 obj
<</Length 1571/Filter/FlateDecode>>stream
)©toÿqûºÒç¹Ð4)ÖÞ{Ñ$,·7?ÂDCþDÆü½
Run Code Online (Sandbox Code Playgroud)