Tag: itext

PDF页面使用itext重新排序

我正在使用itext pdf库。 任何人都知道如何在现有的PDF格式中移动页面? 实际上我想在文件开头移动几页。 它是下面的东西,但我不明白它是如何工作的。 reader = new PdfReader(baos.toByteArray()); n = reader.getNumberOfPages(); reader.selectPages(String.format(“%d, 1-%d”, n, n-1)); PdfStamper stamper = new PdfStamper(reader, new FileOutputStream(filename)); stamper.close(); 任何人都可以详细解释一下吗?

如何使用java向Itext添加新字体

当我想使用字体是iText时,我会做以下事情: protected final static Font FONT_SIZE_11_BOLD = new Font(Font.HELVETICA, 11f, Font.BOLD); 然后我可以随意使用它,如下所示: monthSize11 = new Chunk(month, FONT_SIZE_11_BOLD); 我想使用Arial而不是HELVETICA,但Arial不能直接使用。 我的意思是,我做不到 new Font(Font.ARIAL, 11f, Font.BOLD); 因为Arial没有在Font类中定义,但Arial.ttf文件位于C:\ WINDOWS \ Fonts下的系统中。 问题是如何将Arial.ttf文件绑定到iText以及如何使用它。 提前许多事情发生了。 编辑:我想使用自己的字体。 我的意思是,我有一个名为“myCompany.ttf”的文件,其中定义了自己的字体,在某些地方我必须使用。 问题不仅在于Arial。

可以使用iText连接/合并pdf的函数 – 导致一些问题

我正在使用以下代码使用iText将PDF合并在一起: public static void concatenatePdfs(List listOfPdfFiles, File outputFile) throws DocumentException, IOException { Document document = new Document(); FileOutputStream outputStream = new FileOutputStream(outputFile); PdfWriter writer = PdfWriter.getInstance(document, outputStream); document.open(); PdfContentByte cb = writer.getDirectContent(); for (File inFile : listOfPdfFiles) { PdfReader reader = new PdfReader(inFile.getAbsolutePath()); for (int i = 1; i <= reader.getNumberOfPages(); i++) { document.newPage(); PdfImportedPage […]

IText阅读PDF格式如pdftotext -layout?

我正在寻找最简单的方法来实现一个类似于输出的安静的java解决方案 pdftotext -layout FILE 在Linux机器上。 (当然它也应该便宜) 我刚刚尝试了一些IText,PDFBox和PDFTextStream的代码片段。 到目前为止,最准确的解决方案是PDFTextStream,它使用VisualOutputTarget来获得我文件的绝佳表示。 所以我的列布局被认可是正确的,我可以使用它。 但IText也应该有解决方案,或者? 我发现的每个简单片段都会产生简单有序的字符串,这些字符串很混乱(混乱行/列/行)。 是否有任何解决方案可能更容易,可能不涉及自己的战略? 或者是否有可以使用的开源策略? //我按照mkl的说明编写了自己的策略对象,如下所示: package com.test.pdfextractiontest.itext; import … public class MyLocationTextExtractionStrategy implements TextExtractionStrategy { /** set to true for debugging */ static boolean DUMP_STATE = false; /** a summary of all found text */ private final List locationalResult = new ArrayList(); public MyLocationTextExtractionStrategy() { } […]

如何扩展PDF的页面大小以添加水印?

我的Web应用程序签署PDF文档。 我想让用户下载原始PDF文档(未签名),但在pdf文档的左边缘添加图像和签名者。 我在另一个Web应用程序中看到了这个想法,我也想这样做。 当然我想用itext库来做。 我附上了两张图片,原始PDF文件(未签名)和修改后的PDF文件。

如何在不在服务器端存储文件的情况下将PDF提供给浏览器?

我有两种方法。 一个在服务器端生成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) […]

在同一页面上将表添加到现有PDF – ITEXT

我的java项目有两个部分。 我需要填写pdf的字段 我需要在页面空白区域的填充部分下面添加一个表(这个表需要能够翻转到下一页)。 我能够单独做这些事情(填充pdf并创建一个表)。 但我无法有效地合并它们。 我试过做一个doc.add(table),这会导致表格在pdf的下一页上,这是我不想要的。 我基本上只需要能够指定表在页面上的起始位置(因此它不会与现有内容重叠),然后将表格标记到现有的pdf上。 如果这不起作用,我的另一个选择是尝试将字段添加到将由表内容填充的原始pdf(因此它将是基于字段的表)。 有什么建议么? 编辑: 我是iText的新手,之前没有使用过columntext,但是我试图在下面的代码中测试它,但是没有显示表。 我查看了其他列文本示例,我还没有看到将columntext添加回pdf的确切位置。 //CREATE FILLED FORM PDF PdfReader reader = new PdfReader(sourcePath); PdfStamper pdfStamper = new PdfStamper(reader, new FileOutputStream(destPath)); pdfStamper.setFormFlattening(true); AcroFields form = pdfStamper.getAcroFields(); form.setField(“ID”, “99999”); form.setField(“ADDR1”, “425 Test Street”); form.setField(“ADDR2”, “Test, WA 91334”); form.setField(“PHNBR”, “(999)999-9999”); form.setField(“NAME”, “John Smith”); //CREATE TABLE PdfPTable table = new PdfPTable(3); […]

使用java中的itext库为合并的pdf创建索引文件(TOC)

我正在使用iText 通过使用PDFCopy合并大量PDF来创建单个PDF 。 我需要在本文档的开头创建一个TOC (而不是书签),其中包含指向每个源PDF的第一页的可点击链接。 合并pdf的代码 Document PDFJoinInJava = new Document(); PdfCopy PDFCombiner = new PdfCopy(PDFJoinInJava, outputStream); PdfCopy.PageStamp stamp; PDFJoinInJava.open(); PdfReader ReadInputPDF; List pdfs = streamOfPDFFiles; List readers = new ArrayList(); int totalPages = 0; Iterator iteratorPDFs = pdfs.iterator(); for (; iteratorPDFs.hasNext(); pdfCounter++) { InputStream pdf = iteratorPDFs.next(); PdfReader pdfReader = new PdfReader(pdf); readers.add(pdfReader); totalPages […]

编辑浏览器中嵌入的pdf并将pdf直接保存到服务器

我有这个工作流程。 将包含表单字段的pdf加载到浏览器中(pdf在iframe或div中)。 用户填写它 用户单击“提交”按钮(在另一个div中)以保存pdf。 我想在#3中做的是收集与表单字段相关的所有数据,并将数据保存到数据库表中。 我不希望用户将pdf保存到他/她的本地计算机并将其上传到服务器。 我想让它更加用户友好。 我将在服务器端使用Java / JSP / Servlet。 我查看了似乎在处理pdf文件时流行/众所周知的itext,但是itext似乎用于生成/编辑pdf,但我不确定是否有任何方法可以使某个function能够编辑嵌入浏览器的pdf并保存到数据库。 是否有任何adobe软件提供某种function,我可以注入某种可以捕获用户提交的脚本? 我知道PDF不是前端脚本语言,但我只想问。 我打算创建一个HTML表单,看起来像这个PDF,当用户点击“提交”按钮时将其填充到PDF中,但正如我所说,我想让它更加用户友好。 我很感激,如果有人看过这种类型的function或者已经完成它给了我一些资源或提示。

如何正确合并文件?

合并后打印pdf文件时出现以下问题,pdf文档被截断。 有时会发生这种情况,因为文件不是8.5 x 11,它们可能像11 x 17。 我们可以让它检测页面大小,然后对这些文档使用相同的页面大小吗? 或者,如果没有,它是否可以适合页面? 以下是代码: package com.sumit.program; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.util.ArrayList; import java.util.Iterator; import java.util.List; import com.itextpdf.text.Document; import com.itextpdf.text.PageSize; import com.itextpdf.text.Rectangle; import com.itextpdf.text.pdf.BaseFont; import com.itextpdf.text.pdf.PdfContentByte; import com.itextpdf.text.pdf.PdfImportedPage; import com.itextpdf.text.pdf.PdfReader; import com.itextpdf.text.pdf.PdfWriter; public class MergePdf { public static void main(String[] args) { try { […]