Tag: itext

iText生成的PDF在Chrome中无法正确显示

我在Java中使用iText库来生成pdf文件。 这个想法是用户填写一些信息,当用户点击生成按钮时,pdf会显示在浏览器的新标签中。 现在我偶然发现了一些问题,其中包括: – URL没有改变,所以我得到/application/dashboard.xhtml而不是/application/user.pdf – 我可以在除Chrome之外的所有浏览器中保存pdf文件。 请注意,我不想将其保存在光盘上,只是在浏览器中显示pdf,以便用户可以选择是否要保存它。 这是我用来生成pdf的代码: public static void createPdf(User user, byte languageNumber, HttpServletResponse response) { Document document = new Document(); try { /* PdfWriter writer = PdfWriter.getInstance(document, new FileOutputStream(“c://” + user.getUsername() + “_” + languageCode + “.pdf”));*/ ByteArrayOutputStream baos = new ByteArrayOutputStream(); PdfWriter.getInstance(document, baos); document.addTitle(“Your CV”); document.addSubject(“This is your CV”); document.addKeywords(“CV”); […]

如何关闭PDF文件以重新创建它? (正在使用的文件)

我有可以创建PDF文件的Java应用程序。 所以例如,我从我的程序创建一个简单的文件,我已经构建了代码来打开文件。 所以我创建了文件,我看到它然后就可以了。 如果我想修改该文件,我必须关闭此文件然后重新创建它,如果我没有关闭文件我有这个错误: java.io.FileNotFoundException: Archivio_Etichette\_12-4-2015.pdf (Impossibile accedere al file. Il file è utilizzato da un altro processo) at java.io.FileOutputStream.open(Native Method) at java.io.FileOutputStream.(FileOutputStream.java:221) at java.io.FileOutputStream.(FileOutputStream.java:171) at com.mcsolution.easyMgmt.print.pdf.FoglioFattura.stampaEtichette(FoglioFattura.java:2215) at Etichette.PanelBigliettiAdesivi.stampaEtichette(PanelBigliettiAdesivi.java:242) at Etichette.PanelBigliettiAdesivi$1.actionPerformed(PanelBigliettiAdesivi.java:273) at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2018) at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2341) at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402) at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259) at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:252) at java.awt.AWTEventMulticaster.mouseReleased(AWTEventMulticaster.java:289) at java.awt.AWTEventMulticaster.mouseReleased(AWTEventMulticaster.java:289) at java.awt.Component.processMouseEvent(Component.java:6516) at javax.swing.JComponent.processMouseEvent(JComponent.java:3320) at java.awt.Component.processEvent(Component.java:6281) at java.awt.Container.processEvent(Container.java:2229) at java.awt.Component.dispatchEventImpl(Component.java:4872) […]

JTable到PDF转换器

我在Java代码中遇到问题,无法将JTable转换为PDF。 它抛出NullPointerException并且相同的代码在另一个页面中工作,两者都没有区别。 代码 private void print() { Document document = new Document(); try { PdfWriter writer = PdfWriter.getInstance(document, new FileOutputStream(“jTable.pdf”)); document.open(); PdfContentByte cb = writer.getDirectContent(); cb.saveState(); Graphics2D g2 = cb.createGraphicsShapes(800, 500); Shape oldClip = g2.getClip(); g2.clipRect(0, 0, 800, 500); table.print(g2); g2.setClip(oldClip); g2.dispose(); cb.restoreState(); } catch (Exception e) { e.printStackTrace(); } document.close(); }

如何重新排序PDF文件的页面?

我最后生成目录,我想在开始时移动目录。 假设我的PDF中有16页,TOC从第13页开始,到第15页结束。我想将TOC移到第二页,这样第一页仍然是第1页,最后一页仍然是第16页。这段代码没有给我我想要的东西: public void changePagesOrder() { try { PdfReader sourcePDFReader = new PdfReader(RESULT1); int n = sourcePDFReader.getNumberOfPages(); System.out.println(“no of pages in pdf files…”+n); int totalNoPages=n; int tocStartsPage=13; sourcePDFReader.selectPages(String.format(“%d-%d, 2-%d”, tocStartsPage, totalNoPages-1, tocStartsPage -2)); PdfStamper stamper = new PdfStamper(sourcePDFReader, new FileOutputStream(RESULT2)); stamper.close(); System.out.println(“pdf changes are done…..”); } catch(Exception ex) { } } 请提出一些解决方案。

在itextpdf中应用位置提取策略后,我们可以使用文本提取策略吗?

我使用以下代码从特定位置获取PDF格式的数据。 我希望在该位置显示大胆的文字。 Rectangle rect = new Rectangle(0,0,250,250); RenderFilter filter = new RegiontextRenderFilter(rect); fontBasedTextExtractionStrategy strategy = new fontBasedTextExtractionStrategy(); strategy = new FilteredTextRenderListener(new LocationTextExtractionStrategy(), filter); //Throws Error. 首先,创建一个名为fontBasedTextExtractionStrategy的新方法,而不是文本简单的TextExtractionStrategy帮助? 像下面的东西 public class fontBasedTextExtractionStrategy implements TextExtractionStrategy { private String text; @Override public void beginTextBlock() { } @Override public void renderText(TextRenderInfo renderInfo) { text = renderInfo.getText(); System.out.println(renderInfo.getFont().getFontType()); System.out.print(text); } @Override […]

如何使用链接注释向现有pdf添加叠加文本?

我想在我的叠加文字中添加一个链接。 我已经读过,使用Anchor只适用于从头开始制作的文档,但不适用于现有的pdf文件。 我的代码是为每个页面添加叠加文本。 我的目标是使该文本的一部分可以点击。 我不知道如何制作链接注释,这是一个短语的一部分。 这是我的代码: int n = reader.getNumberOfPages(); // step 4: we add content PdfImportedPage page; PdfCopy.PageStamp stamp; for (int j = 0; j < n; ) { ++j; page = writer.getImportedPage(reader, j); if (i == 1) { stamp = writer.createPageStamp(page); Rectangle mediabox = reader.getPageSize(j); Rectangle crop = new Rectangle(mediabox); writer.setCropBoxSize(crop); // add […]

iText中的PdfPageEventHelper

我正在创建一个pdf,其中每个pdf页面的标题将根据当前页码自定义。 例如,在第一页中标题是“第一页”,在第二页中标题是“第二页”,依此类推…… 我们现在做的是将标题添加到PdfPTable中,然后我们向PdfPTable添加了许多其他内容,因此这个PdfPTable包含几页数据。 最后,我们将这个大的PdfPTable对象添加到文档中。 现在我们要使用PdfPageEventHelper中的onStartPage()方法来获取当前页码,以便我们可以自定义每个页面的标题。 问题是onStartPage()在我们将大的PdfPTable对象添加到文档之前不会触发,这意味着我们无法在将PdfPTable对象添加到文档之前使资源包加载不同的键值,对吧? 有没有意识到这个? ——————–我们有以下代码————————- ———— Phrase title = new Phrase(); title.add(new Chunk(bundle.getString(pdfNewPageEventHandler.getKey()), headerFont)); PdfPCell cell = new PdfPCell(new Paragraph( new Phrase(title))); ……… PdfPTable table = new PdfPTable(tableSize); table.addCell(cell); ……… document.add(table); private class PdfNewPageEventHandler extends PdfPageEventHelper { private int currentPageNum = 0; private String key; @Override public void onStartPage(PdfWriter writer, Document document) […]

无法使用java命令行打开PDF文件

我正在尝试使用命令行参数as从java打开PDF文件 String command = “cmd /c start AcroRd32.exe \”” + dir + “\””; 但是当文件自动打开时,我收到错误 “Windows cannot find ‘acroRd32.exe’. Please make sure you typed the correct name.” 但是我能够在不使用命令行/ java的情况下手动打开它。 请帮帮我。

iText PdfStamper增加签名pdf的大小

为什么PdfStamper每次使用时都会增加我签名的pdf的大小? 那是我的代码: private static void test(String src, String pwd, String dest) throws Exception { byte[] pwdByte = pwd != null ? pwd.getBytes() : null; PdfReader r = null; PdfStamper stp = null; FileOutputStream fos = null; try { r = new PdfReader(src, pwdByte); fos = new FileOutputStream(dest); stp = new PdfStamper(r, fos, ‘\0’, true); } […]

使用itext的XML工作者

import java.io.FileOutputStream; import java.io.StringReader; import com.itextpdf.text.Document; import com.itextpdf.text.PageSize; import com.itextpdf.text.pdf.PdfWriter; import com.itextpdf.tool.xml.XMLWorkerHelper; public class HtmlToPDF2 { // itextpdf-5.4.1.jar http://sourceforge.net/projects/itext/files/iText/ // xmlworker-5.4.1.jar http://sourceforge.net/projects/xmlworker/files/ public static void main(String[] args ) { try { Document document = new Document(PageSize.LETTER); PdfWriter pdfWriter = PdfWriter.getInstance (document, new FileOutputStream(“C:/Users/Jason/Desktop/testpdf.pdf”)); document.open(); document.addAuthor(“Real Gagnon”); document.addCreator(“Real’s HowTo”); document.addSubject(“Thanks for your support”); document.addCreationDate(); document.addTitle(“Please read […]