我是PDFBox(和PDF生成)的新手,我很难生成自己的PDF.
我确实有一些以英寸/厘米为单位坐标的文本,我需要将它们转换为PDFBox使用的单位.任何建议/实用程序都可以自动执行此操作?
PDPageContentStream.moveTextPositionByAmount(x,y) 对我毫无意义.
如何在链接中下载PDF文件?
我正在使用JSF构建Web应用程序,当用户单击"另存为PDF"链接时,应该可以下载PDF.
到目前为止,我有一个生成PDF文件的工作代码,但文件保存在我的桌面上,我想要做的是,当用户点击链接时,pdf文件应该可以下载而不是存储在应用程序中.
更新3: 感谢您的帮助,我修改了我的代码和您的建议,并且它正在运行.
更新2: 我收到以下错误:Adoble Reader无法打开"yourfile.pdf",因为它不是受支持的文件类型,或者因为文件已损坏
更新1: 我正在将我当前的代码添加到您指出的更改中,但是我仍然在努力使这项工作成功
这是我生成PDF的方法:
public ByteArrayOutputStream createPDF() throws IOException, COSVisitorException {
PDDocument document;
PDPage page;
PDFont font;
PDPageContentStream contentStream;
PDJpeg front;
PDJpeg back;
InputStream inputFront;
InputStream inputBack;
ByteArrayOutputStream output = new ByteArrayOutputStream();
// Creating Document
document = new PDDocument();
// Creating Pages
for(int i=0; i<2; i++) {
page = new PDPage();
// Adding page to document
document.addPage(page);
// Adding FONT to document
font = PDType1Font.HELVETICA;
// Retrieve Image to be added to the …Run Code Online (Sandbox Code Playgroud) 我正在使用PDFbox提取PDF文档中单词/字符串的坐标,并且到目前为止已成功确定单个字符的位置.这是迄今为止的代码,来自PDFbox doc:
package printtextlocations;
import java.io.*;
import org.apache.pdfbox.exceptions.InvalidPasswordException;
import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.pdmodel.PDPage;
import org.apache.pdfbox.pdmodel.common.PDStream;
import org.apache.pdfbox.util.PDFTextStripper;
import org.apache.pdfbox.util.TextPosition;
import java.io.IOException;
import java.util.List;
public class PrintTextLocations extends PDFTextStripper {
public PrintTextLocations() throws IOException {
super.setSortByPosition(true);
}
public static void main(String[] args) throws Exception {
PDDocument document = null;
try {
File input = new File("C:\\path\\to\\PDF.pdf");
document = PDDocument.load(input);
if (document.isEncrypted()) {
try {
document.decrypt("");
} catch (InvalidPasswordException e) {
System.err.println("Error: Document is encrypted with a password.");
System.exit(1);
}
}
PrintTextLocations printer …Run Code Online (Sandbox Code Playgroud) 我是pdfbox的新手,我想提取一个匹配某些特定单词的段落,我能够将整个pdf提取到文本(记事本),但我不知道如何将特定段落提取到我的java程序中.任何人都可以帮助我至少一些教程或例子.非常感谢你
我可以像这样插入简单的文字:
document = new PDDocument();
page = new PDPage(PDPage.PAGE_SIZE_A4);
document.addPage(page);
PDPageContentStream content = new PDPageContentStream(document, page);
content.beginText();
content.moveTextPositionByAmount (10 , 10);
content.drawString ("test text");
content.endText();
content.close();
Run Code Online (Sandbox Code Playgroud)
但是如何使用width属性创建类似于HTML的段落?
<p style="width:200px;">test text</p>
Run Code Online (Sandbox Code Playgroud) 我目前正在使用PdfBox作为pdf文件编辑器应用程序的驱动程序.我需要pdf文件(PDDocument)的PdfBox表示的内容作为字节数组.有谁知道如何做到这一点?
加载文档后:
public static void main(String[] args) throws IOException {
PDDocument doc = PDDocument.load(new File("blah.pdf"));
Run Code Online (Sandbox Code Playgroud)
如何从PDDocument中逐页打印颜色意图?我看了文档,没有看到报道.
我正在使用PDFBox,以下代码:
doc = new PDDocument();
page = new PDPage();
doc.addPage(page);
PDFont font = PDType1Font.COURIER;
pdftitle = new PDPageContentStream(doc, page);
pdftitle.beginText();
pdftitle.setFont( font, 12 );
pdftitle.moveTextPositionByAmount( 40, 740 );
pdftitle.drawString("Here I insert a lot of text");
pdftitle.endText();
pdftitle.close();
Run Code Online (Sandbox Code Playgroud)
有谁知道如何包装文本,以便它自动转到另一行?非常感谢!
下面是我正在使用的代码,我提供了一个pdf文件和一个文本文件作为命令行的输入.
import org.pdfbox.cos.COSDocument;
import org.pdfbox.pdfparser.PDFParser;
import org.pdfbox.pdmodel.PDDocument;
import org.pdfbox.pdmodel.PDDocumentInformation;
import org.pdfbox.util.PDFTextStripper;
import java.io.File;
import java.io.FileInputStream;
import java.io.PrintWriter;
public class PDFTextParser {
PDFParser parser;
String parsedText;
PDFTextStripper pdfStripper;
PDDocument pdDoc;
COSDocument cosDoc;
PDDocumentInformation pdDocInfo;
// PDFTextParser Constructor
public PDFTextParser() {
}
// Extract text from PDF Document
String pdftoText(String fileName) {
System.out.println("Parsing text from PDF file " + fileName + "....");
File f = new File(fileName);
if (!f.isFile()) {
System.out.println("File " + fileName + " does not exist.");
return null;
} …Run Code Online (Sandbox Code Playgroud) 我想使用PDFBox打印 iText创建的PDF文件.我已经使用PDDocument类及其方法print()成功地尝试了这个.您可以在此处找到文档:http://pdfbox.apache.org/apidocs/.
(我正在使用此代码:)
public static void printPDF(String fileName)
throws IOException, PrinterException {
PDDocument doc = PDDocument.load(fileName);
doc.print();
}
Run Code Online (Sandbox Code Playgroud)
方法print()效果很好,但有一个问题:当我需要打印多个文件时,该方法要求我为每个文件选择打印机.
有没有办法如何只设置一次打印机?
对于打印机选择,我可以使用此代码,例如:
public static PrintService choosePrinter() {
PrinterJob printJob = PrinterJob.getPrinterJob();
if(printJob.printDialog()) {
return printJob.getPrintService();
}
else {
return null;
}
}
Run Code Online (Sandbox Code Playgroud)
提前致谢
public static PrintService choosePrinter() {
PrinterJob printJob = PrinterJob.getPrinterJob();
if(printJob.printDialog()) {
return printJob.getPrintService();
}
else {
return null;
}
}
public static void printPDF(String fileName, PrintService printer)
throws IOException, PrinterException …Run Code Online (Sandbox Code Playgroud)