我想用iTextSharp写一些文字.我正在使用这种方法:
var font = BaseFont.CreateFont(BaseFont.TIMES_BOLD, BaseFont.WINANSI, BaseFont.EMBEDDED);
Run Code Online (Sandbox Code Playgroud)
我的问题是:iTextSharp支持系统字体目录中的所有字体吗?
假设我在字体选择器对话框中选择了一个名为"mycoolfont"的字体.我可以创建一个新的iTextSharp字体吗?
var font = BaseFont.CreateFont("mycoolfont", BaseFont.WINANSI, BaseFont.EMBEDDED);
overContent.SetFontAndSize(font, fontSize);
Run Code Online (Sandbox Code Playgroud)
更新:
我试过var font = BaseFont.CreateFont("Verdana", BaseFont.WINANSI, BaseFont.EMBEDDED);
但得到错误"Verdana"不被itextsharp识别
我尝试了很多不同的方法,但我无法检查复选框!这是我尝试过的:
var reader = new iTextSharp.text.pdf.PdfReader(originalFormLocation);
using (var stamper = new iTextSharp.text.pdf.PdfStamper(reader,ms)) {
var formFields = stamper.AcroFields;
formFields.SetField("IsNo", "1");
formFields.SetField("IsNo", "true");
formFields.SetField("IsNo", "On");
}
Run Code Online (Sandbox Code Playgroud)
他们都没有工作.有任何想法吗?
我定义了一个标签映射,并获得了一个XML数据文件.我想使用iText将XML数据文件转换为PDF.问题是如何在将XML转换为PDF时将字体(例如波兰字体,中文字体)嵌入到目标PDF中?
是否有可以将网页转换为PDF文档的客户端库?我使用过jspdf,但生成的pdf不保留格式化的html(类似标签应该是PDF格式的粗体).
要求是一次处理一批PDF,并且成功使用用户密码对每个PDF进行加密.
但是,这些PDF以前是使用随机生成的动态所有者密码加密的(不知道任何一个)以防止任何编辑.
我使用iText进行加密,如下所示:
byte[] userPass = "user".getBytes();
byte[] ownerPass = "owner".getBytes();
PdfReader reader = new PdfReader("Misc.pdf");
PdfStamper stamper = new PdfStamper(reader,
new FileOutputStream("Processed_Encrypted.pdf"));
stamper.setEncryption(userPass, ownerPass,
PdfWriter.ALLOW_PRINTING, PdfWriter.ENCRYPTION_AES_128
| PdfWriter.DO_NOT_ENCRYPT_METADATA);
stamper.close();
reader.close();
Run Code Online (Sandbox Code Playgroud)
但是这段代码抛出了一个 com.itextpdf.text.exceptions.BadPasswordException: PdfReader not opened with owner password
有人可以指导如何解决此错误/绕过所有者密码?
在这里,我想明确表示我们合法拥有这些PDF,因此不会犯下任何犯罪/黑客行为.
PS:解决方案不仅限于iText,也可以使用任何其他Java库(免费或许可).
在生成PDF时添加"Č"或"Ć"等字符时出现问题.我主要使用段落在我的PDF报告中插入一些静态文本.这是我使用的一些示例代码:
var document = new Document();
document.Open();
Paragraph p1 = new Paragraph("Testing of letters ?,?,Š,Ž,?", new Font(Font.FontFamily.HELVETICA, 10));
document.Add(p1);
Run Code Online (Sandbox Code Playgroud)
生成PDF文件时得到的输出如下所示:"测试字母,Š,Ž,Đ"
出于某种原因,iTextSharp似乎不会识别这些字母,例如"Č"和"Ć".
我发布这个问题是因为许多开发人员以不同的形式提出或多或少相同的问题.我将自己回答这个问题(我是iText集团的创始人/首席技术官),因此它可以成为"维基答案".如果Stack Overflow"文档"功能仍然存在,那么这将是文档主题的一个很好的候选者.
我想将以下HTML文件转换为PDF:
<html>
<head>
<title>Colossal (movie)</title>
<style>
.poster { width: 120px;float: right; }
.director { font-style: italic; }
.description { font-family: serif; }
.imdb { font-size: 0.8em; }
a { color: red; }
</style>
</head>
<body>
<img src="img/colossal.jpg" class="poster" />
<h1>Colossal (2016)</h1>
<div class="director">Directed by Nacho Vigalondo</div>
<div class="description">Gloria is an out-of-work party girl
forced to leave her life in New York City, and move back home.
When reports surface that a giant creature is destroying Seoul,
she …
Run Code Online (Sandbox Code Playgroud) 如何将页码添加到使用PDFBox生成的文档中的页面?
合并不同的PDF后,有人能告诉我如何在文档中添加页码吗?我在Java中使用PDFBox库.
这是我的代码,它运行良好,但我需要添加页码.
PDFMergerUtility ut = new PDFMergerUtility();
ut.addSource("c:\\pdf1.pdf");
ut.addSource("c:\\pdf2.pdf");
ut.addSource("c:\\pdf3.pdf");
ut.mergeDocuments();
Run Code Online (Sandbox Code Playgroud) 我正在使用java在itext 5上工作.我的页面包含多个动态行表.在某些情况下,表格的最后一行将使用下面的标题拆分为下一页.我正在使用setHeaderRows()
并setSkipFirstHeader()
管理下一页的继续.最后一行有足够的空间放在前面的页面上.我想将最后一行放在同一页面而不是下一页.
例如,在第1页上,最后一行被拆分为下一页的第一行.相反,我想在第1页中安装该行,因此请保留一个包含所有空白的额外页面.
我尝试过使用setExtendLastRow()
,但它不起作用.有谁知道如何解决这个问题.我附上了一份工作示例代码.
public class ProposalItextSplitLastRow {
public static void main(String[] args) {
try {
Document document = new Document();
document.setPageSize(PageSize.LETTER);
document.setMargins(16, 14, 14, 14);
PdfWriter writer = PdfWriter.getInstance(document, new FileOutputStream("C:/SplitLastRow.pdf"));
document.open();
document.setPageSize(PageSize.LETTER);
document.setMargins(16, 14, 42, 38);
for (int m = 1; m < 20; m++) {
int row = 0;
PdfPTable table = new PdfPTable(1);
table.setSpacingAfter(0);
table.setSpacingBefore(0);
table.setWidthPercentage(100);
table.setHeaderRows(1);
table.setSkipFirstHeader(true);
add(table, "Header Row continued " + m, BaseColor.LIGHT_GRAY, row++);
add(table, "Header Row …
Run Code Online (Sandbox Code Playgroud)