Tag: itext

Windows机器上iText-PDF中的中文字体问题

我正在使用Ubuntu-PC创建带有iText的PDF,部分是中文版。 为了阅读它们,我使用了Evince。 到目前为止几乎没有任何问题 在我的电脑上,我尝试了以下三个BaseFonts并且他们成功地工作了: bf = BaseFont.createFont(“MSungStd-Light”, “UniCNS-UCS2-H”, BaseFont.NOT_EMBEDDED); bf = BaseFont.createFont(“STSong-Light”, “UniGB-UCS2-H”, BaseFont.NOT_EMBEDDED); bf = BaseFont.createFont(“MSung-Light”,”UniCNS-UCS2-H”, BaseFont.NOT_EMBEDDED); 不幸的是,在使用Acrobat-Reader在Windows上打开最终PDF时,文档无法再正确显示。 在我搜索字体以获得解决方案后,我来到论坛,以可理解的方式解释问题(这里使用了MSung-Light): http : //community.jaspersoft.com/questions/531457/chinese-font-不能待看到 您正在使用PDF中的内置中文字体。 我不确定这种字体能否同时支持英文和中文,或混合语言。 使用Acrobat Reader内置字体的优点是它可以生成较小的PDF文件,因为它依赖于显示PDF的客户端计算机上可用的字体,通过预先安装的Acribat Asian字体包。 但是,当我们研究与内置韩文字体相关的类似问题时,使用PDF内置字体具有通过在不同机器上进行测试而发现的一些缺点。 我该怎么办呢? 能够复制中文字母并不是那么重要。 iText可以将段落转换为图像吗? 或者有更好的解决方案吗?

使用自定义属性从PDF添加/删除/检索信息

对不起我昨天发布的问题不明确。 我想在自定义属性中存储2个字符串(string1和string2),以便字符串与pdf.I已经有字符串,但我不知道如何将它存储在自定义属性区域下。 自定义属性区域引用FILE —> Properties —-> Custom —-> Custom属性,它们成对获得“Name”和“Value”。 我希望“Value”中的string1存储和“Name”中的string2存储。 稍后,我想检索/删除自定义属性区域中的字符串。 请问如何用itext实现它? 感谢致敬, 布赖恩

iText Java签名PDF DocumentException:空间不足

我正在使用iText 5.5.5 for Java,我想创建带有外部签名的签名PDF,如下所示: 获取应签名的PDF文档并使用空签名创建PDF并提供BASE64编码的字节以由外部签名机制签名: PdfReader reader = new PdfReader(src); FileOutputStream os = new FileOutputStream(dest); PdfStamper stamper = PdfStamper.createSignature(reader, os, ‘\0’); PdfSignatureAppearance appearance = stamper.getSignatureAppearance(); appearance.setVisibleSignature(new Rectangle(36, 748, 144, 780), 1, “test”); appearance.setCertificate(chain[1]); ExternalSignatureContainer external = new ExternalBlankSignatureContainer(PdfName.ADOBE_PPKLITE, PdfName.ADBE_PKCS7_DETACHED); MakeSignature.signExternalContainer(appearance, external, 8192); InputStream is = appearance.getRangeStream(); byte[] toSign = getBytes(is); this.b64String = new String(Base64.encode(toSign)); 使用外部签名机制签署b64String […]

从签名的pdf中获取原始内容

我想知道如何使用iText java库或其他文件从已签名的pdf文档中获取原始内容。 谢谢 更新1: 可能的例子: PdfReader reader = new PdfReader(PATH_TO_PDF); AcroFields fields = reader.getAcroFields(); ArrayList signatures = fields.getSignatureNames(); for (String signature : signatures) { // Start revision extraction ByteArrayOutputStream out = new ByteArrayOutputStream(); byte bb[] = new byte[8192]; InputStream ip = fields.extractRevision(signature); int n = 0; while ((n = ip.read(bb)) > 0) out.write(bb, 0, n); […]

如何使用java从pdf文档中读取或提取图形组件,如square,rect,line等?

我试图从使用iText生成的pdf文档中提取所有数据(如square,rect,line等)。但是我无法提取内容而不是文本和图像。我想提取图形组件上文提到的。

复制页面时,iText会复制/弹出注释

当使用以下代码复制带注释的页面时,iText 7.1.0复制/Popup注释,“原始”和副本之间的唯一区别是,一个具有/Parent条目而另一个没有。 不幸的是,没有丢失/Parent那个被注册在/Page字典的/Annots列表中。 如何让iText不复制注释或至少注册带有/Parent条目的注释? 对奇怪行为的任何解释? import com.itextpdf.kernel.pdf.*; import java.io.IOException; public class CopyPdfTest { public static void main(String[] args) throws IOException { PdfDocument inputDoc = new PdfDocument(new PdfReader(“input.pdf”)); PdfWriter writer = new PdfWriter(“output.pdf”); writer.setCompressionLevel(0); PdfDocument outputDoc = new PdfDocument(writer); for (int i = 1; i <= inputDoc.getNumberOfPages(); i++) { inputDoc.copyPagesTo(i, i, outputDoc); } inputDoc.close(); outputDoc.close(); } […]

Itext更改书签缩放级别以inheritance现有pdf的缩放

使用iText5 PDF库,我能够读取 PDF中存在的书签 。 现在我想使用iText更改现有PDF zoom level of bookmarks的zoom level of bookmarks (inheritance缩放)。 是否可以使用iText PDF库,以及如何使用? 我附上了截图。 这是我用来更改书签缩放级别的代码(根据@lowagie评论): public void changeList(List<HashMap> list) { for (HashMap entry : list) { for (String key : entry.keySet()) { System.out.println(key); if (“Kids”.equals(key)) { Object o = entry.get(key); changeList((List<HashMap>) o); } else if (“Page”.equals(key)) { String dest = (String) entry.get(key); entry.put(“Page”, […]

iText – 使用mytable.writeSelectedRows的PdfPTable RowSpan

我正在使用iText 5.1.3,我想在我的Pdf文档中添加一个标题。 我使用了此处发布的已知解决方案: http : //itextpdf.com/examples/iia.php?id = 104 此解决方案使用PdfPageEventHelper类,并重写方法onEndPage()以在完成每个页面后准确添加Header。 上面链接中提供的示例工作正常,因为它添加了一个表作为文档的标题。 我试图完全相同的1差异,我希望该表中的一些单元格具有Rowspan和/或Colspan。 我试过,发现当涉及到Rowspan时,使用table.writeSelectedRows()与document.add(table)不同。 这是我在onEndPage尝试做的一个示例: PdfPTable mytable = new PdfPTable(3); mytable.setTotalWidth(527); PdfPCell cell1 = new PdfPCell(new Phrase(“Hello”)); cell1.setColspan(2); cell1.setRowspan(2); mytable.addCell(cell1); PdfPCell cell2 = new PdfPCell(new Phrase(“Girls !”)); mytable.addCell(cell2); PdfPCell cell3 = new PdfPCell(new Phrase(“Boys !”)); mytable.addCell(cell3); mytable.writeSelectedRows(0, -1, 34, 803, writer.getDirectContent()); 而不是左边的单元格为“Hello”的2×2,我得到“Hello”单元格为1×2而不是2×2 有任何想法吗?

在现有PDF中使用Rectangle缩小PDF页面的旋转

我使用以下代码缩小现有pdf的每个页面 (顶部和底部)使用iText库。 代码工作正常。 但是现在如果我处理结果pdf ,我得到每个页面旋转的0值 ,而旧的pdf也有其他旋转(即90deg)。 我希望保持旋转,但不能这样做。 我使用的代码如下缩小页面 public void shrinkPDFPages() throws Exception { PdfReader reader = new PdfReader(“D:/testpdfs/test.pdf”); Document doc = new Document(); PdfWriter writer = PdfWriter.getInstance(doc, new FileOutputStream( “D://testpdfs/result.pdf”)); doc.open(); PdfContentByte cb = writer.getDirectContent(); for (int i = 1; i <= reader.getNumberOfPages(); i++) { PdfImportedPage page = writer.getImportedPage(reader, i); float pageHeight = reader.getPageSizeWithRotation(i).getHeight(); […]

这种itext数字签名的实现有什么问题?

我从互联网上拿了一个示例代码,我尝试签署一份文件。 这是代码 public class SimpleSignature { public static final String KEYSTORE = “c:/key/sano”; public static final char[] PASSWORD = “Chennai”.toCharArray(); public static final String SRC = “c:/itext/unsigned.pdf”; public static final String DEST = “c:/itext/signed.pdf”; public void sign(String src, String dest, Certificate[] chain, PrivateKey pk, String digestAlgorithm, String provider, CryptoStandard subfilter, String reason, String location) throws […]