在实际环境中测试
在生产中测试无水印。
随时随地为您服务。
PDF (便携式文档格式) 是一种广泛使用的文件格式,用于表示独立于应用软件、第三方软件或驱动程序、硬件以及操作系统(如macOS)的文档。 无需用户干预,以编程方式操作 PDF 文件是各种应用程序中的常见需求。 本文探讨了两个Java库,IronPDF和jPDFPrint,它们分别在Java运行环境中提供操作PDF文件的不同功能。 我们将深入探讨它们的功能、特性,并比较它们的产品,以了解其优缺点,以及与直接使用Acrobat PDF文档的不同之处。
IronPDF 是一个强大的 Java 库,使开发人员能够以编程方式创建、操作和转换 PDF。 它提供了广泛的功能,例如从HTML、图像或现有文档生成PDF、合并多个PDF、从PDF中提取文本和图像,以及执行各种文档操作任务。
IronPDF提供了一个用户友好的API,具有全面的方法和属性集,使开发人员可以直接轻松处理Acrobat PDF文档。 它还提供了详尽的文档和教程,指导开发者将IronPDF集成到他们的Java应用程序中。
显著特点之一是 IronPDF 其将HTML转换为PDF的能力。 通过此功能,开发人员可以轻松地从HTML内容生成PDF文档,包括CSS样式、JavaScript交互性,甚至是动态数据。
import com.ironpdf.*;
public class HtmlToPdfExample {
public static void main(String [] args) {
HtmlToPdfRenderer renderer = new HtmlToPdfRenderer();
HtmlToPdfOutput output = renderer.RenderHtmlFileAsPdf("input.html");
output.saveAs("output.pdf");
}
}
jPDFPrint 是由第三方软件 Qoppa 开发的 Java 库,专门用于在 Java 运行环境中以编程方式打印 PDF 文档。 它提供了一个简单直接的API,用于使用Java打印文档服务打印PDF文档。
jPDFPrint允许开发人员将PDF文档打印到系统上安装的任何打印机,控制加载和打印文档的设置,例如页面范围、方向和缩放,甚至可以在需要时指定自定义的打印机命令。 它还支持双面打印、小册子打印、无用户干预静默打印和水印等功能。
该库无缝集成到Java应用程序中,使开发人员能够轻松地将PDF打印功能纳入其Java应用软件解决方案中。
//import Qoppa third party software to simply call the library
import com.qoppa.pdfPrinter.PDFPrinterJob;
import java.io.File;
import java.io.IOException;
import java.net.URL;
public class HtmlToPdfExample {
public static void main(String [] args) throws IOException {
// Load the HTML page
URL url = new URL("http://www.example.com");
String html = org.apache.commons.io.IOUtils.toString(url);
// Create a PDFPrinterJob object
PDFPrinterJob printerJob = new PDFPrinterJob();
// Set the output file
File outputFile = new File("output.pdf");
printerJob.setOutputFile(outputFile);
// Print the HTML page to the output file
printerJob.printHTML(html);
}
}
两个库都非常复杂且有助于操作PDF文档,例如打印PDF文档,将Microsoft Word文档转换为PDF文档。
jPDFPrint 是一个由 Qoppa Software 开发的 Java 库,使用 Qoppa 的专有 PDF 技术,专注于以编程方式加载和打印 PDF 文件。 以下是如何使用它的概述:
package jPDFPrintSamples;
import java.io.FileOutputStream;
import javax.print.DocFlavor;
import javax.print.DocPrintJob;
import javax.print.SimpleDoc;
import javax.print.StreamPrintService;
import javax.print.StreamPrintServiceFactory;
import javax.print.attribute.HashPrintRequestAttributeSet;
import javax.print.attribute.PrintRequestAttributeSet;
import javax.print.attribute.standard.MediaSizeName;
创建一个 PDFPrint
对象:创建一个 PDFPrint
类的实例,并将要打印的 PDF 文件的路径作为参数传递。
设置打印设置:使用 PDFPrint
类提供的方法自定义打印设置。 您可以设置打印机名称,指定页面范围,选择纸盘,选择打印质量,并配置其他打印选项来打印PDF文档。
PDFPrint
对象上的 print
方法以启动打印过程。 该库将使用Java的打印服务将PDF文件发送到打印机。 package jPDFPrintSamples;
import java.io.FileOutputStream;
import javax.print.DocFlavor;
import javax.print.DocPrintJob;
import javax.print.SimpleDoc;
import javax.print.StreamPrintService;
import javax.print.StreamPrintServiceFactory;
import javax.print.attribute.HashPrintRequestAttributeSet;
import javax.print.attribute.PrintRequestAttributeSet;
import javax.print.attribute.standard.MediaSizeName;
import com.qoppa.pdfPrint.PDFPrint;
public class PDFToPS
{
public static void main (String [] args)
{
try
{
DocFlavor flavor = DocFlavor.SERVICE_FORMATTED.PRINTABLE;
String psMimeType = DocFlavor.BYTE_ARRAY.POSTSCRIPT.getMimeType();
StreamPrintServiceFactory [] factories = StreamPrintServiceFactory.lookupStreamPrintServiceFactories(flavor, psMimeType);
System.out.println ("Available PS services: " + factories.length);
if(factories.length == 0)
{
System.err.println ("No PS factories available!");
System.exit(0);
}
// Open the PDF file
PDFPrint pdfPrint = new PDFPrint ("test.pdf", null);
// Open the output file
FileOutputStream fos = new FileOutputStream("output.ps");
// Use the first service available
StreamPrintService sps = factories [0].getPrintService(fos);
DocPrintJob pj = sps.createPrintJob();
// Define paper size
PrintRequestAttributeSet aset = new HashPrintRequestAttributeSet();
aset.add(MediaSizeName.NA_LETTER);
// Create simple doc using PDFPrint as Printable and print it
SimpleDoc doc = new SimpleDoc(pdfPrint, flavor, null);
pj.print(doc, aset);
// Close the output PS stream
fos.close();
}
catch (Throwable t)
{
t.printStackTrace();
}
}
}
IronPDF 是一个强大的 Java 库,用于 Java应用程序 用于PDF操作,包括PDF生成、转换和文档操作。 以下是IronPDF的使用概述:
import com.ironsoftware.ironpdf.*;
HtmlToPdfRenderer
表示PDF文档的打印命令类,如示例代码所示,用于无声打印或将文档发送到PDF。 您还可以通过编程方式创建PDF文档,添加文本、图像、表格和注释等元素。 import com.ironsoftware.ironpdf.*;
import java.io.IOException;
import java.nio.file.Paths;
// Apply your license key
License.setLicenseKey("YOUR-LICENSE-KEY");
// Set a log path
Settings.setLogPath(Paths.get("C:/tmp/IronPdfEngine.log"));
// Render the HTML as a PDF. Stored in myPdf as type PdfDocument;
PdfDocument myPdf = PdfDocument.renderHtmlAsPdf("<h1> ~Hello World~ </h1> Made with IronPDF!");
// Save the PdfDocument to a file
myPdf.saveAs(Paths.get("html_saved.pdf"));
import com.ironsoftware.ironpdf.PdfDocument;
import com.ironsoftware.ironpdf.font.FontTypes;
import com.ironsoftware.ironpdf.headerfooter.TextHeaderFooter;
import com.ironsoftware.ironpdf.headerfooter.HeaderFooterOptions;
import java.io.IOException;
// Initialize HeaderFooterOptions object.
HeaderFooterOptions options = new HeaderFooterOptions();
PdfDocument pdf = PdfDocument.renderUrlAsPdf("http://www.google.com");
// Add a header to every page easily
// Mergeable fields are:
// {page} {total-pages} {url} {date} {time} {html-title} & {pdf-title}
options.setFirstPageNumber(1); // use 2 if a cover page will be appended
TextHeaderFooter textHeader = new TextHeaderFooter();
textHeader.setDrawDividerLine(true);
textHeader.setCenterText("{url}");
textHeader.setFont(FontTypes.getHelvetica());
textHeader.setFontSize(12);
pdf.addTextHeader(textHeader, options);
// Add a footer too
TextHeaderFooter textFooter = new TextHeaderFooter();
textFooter.setDrawDividerLine(true);
textFooter.setFont(FontTypes.getArial());
textFooter.setFontSize(10);
textFooter.setLeftText("{date} {time}");
textFooter.setRightText("{page} of {total-pages}");
pdf.addTextFooter(textFooter, options);
try {
pdf.saveAs(Paths.get("assets/text_headers_footers.pdf"));
} catch (IOException e) {
System.out.println("Failed to save PDF");
throw new RuntimeException(e);
}
try {
List<BufferedImage> images = pdf.extractAllImages();
System.out.println("Number of images extracted from the website: " + images.size());
int i = 0;
for (BufferedImage image : images) {
ImageIO.write(image, "PNG", Files.newOutputStream(Path.of("assets/extracted_" + ++i + ".png")));
}
} catch(Exception exception) {
System.out.println("Failed to extract images from the website");
exception.printStackTrace();
}
saveAs
方法将文档保存到特定位置,发送到流或HTTP响应。尽管jPDFPrint和IronPDF都提供PDF操作功能,但IronPDF提供了更全面的功能和更高的灵活性。 IronPDF在多个方面脱颖而出:
import com.ironsoftware.ironpdf.*;
import java.io.IOException;
import java.nio.file.Paths;
// Apply your license key
License.setLicenseKey("YOUR-LICENSE-KEY");
// Set a log path
Settings.setLogPath(Paths.get("C:/tmp/IronPdfEngine.log"));
// Render the HTML as a PDF. Stored in myPdf as type PdfDocument;
PdfDocument myPdf = PdfDocument.renderHtmlAsPdf("<h1> ~Hello World~ </h1> Made with IronPDF!");
// Save the PdfDocument to a file
myPdf.saveAs(Paths.get("html_saved.pdf"));
广泛的文档操作:IronPDF 提供了广泛的文档操作功能,包括合并、拆分、提取文本和图像、加密等。 这使它成为处理PDF文件的多功能工具。
更广的范围:IronPDF 覆盖了除打印之外的广大 PDF 相关任务,使其成为需要全面 PDF 操作能力的应用程序的更强大解决方案。
import com.ironsoftware.ironpdf.PdfDocument;
import java.io.IOException;
import java.nio.file.Paths;
// Case 1: Generate a PDF from a string of Rich Text Content
try {
String content = "{\\rtf1\\ansi\\ansicpg1252\\deff0\\nouicompat\\deflang1033{\\fonttbl{\\f0\\fnil\\fcharset0 Calibri;}}\n" +
"{\\*\\generator Riched20 10.0.22621}\\viewkind4\\uc1 \n" +
"\\pard\\sa200\\sl276\\slmult1\\b\\f0\\fs160\\lang9 Hello, world!\\par\n" +
"}\n" +
" ";
PdfDocument pdf = PdfDocument.renderRtfAsPdf(content);
pdf.saveAs(Paths.get("assets/rtf_to_pdf.pdf"));
} catch(IOException exception) {
exception.printStackTrace();
}
// Case 2: Generate a PDF from a RTF file located on a filesystem path
try {
PdfDocument pdf = PdfDocument.renderRtfFileAsPdf(Paths.get("assets/test.rtf"));
pdf.saveAs(Paths.get("assets/rtf_to_pdf_2.pdf"));
} catch(IOException exception) {
exception.printStackTrace();
}
鉴于这些优势,寻求具有HTML到PDF转换功能、广泛的文档操作功能和优秀支持的强大且灵活的PDF操作解决方案的开发人员应优先选择IronPDF,而不是jPDFPrint。
然而,至关重要的是评估您的项目的具体需求,并评估每个库所提供的功能、文档和支持,以便做出符合您的应用需求的明智决定。
jPDFPrint专注于打印PDF文件,并提供广泛的打印过程控制。
package jPDFPrintSamples;
import com.qoppa.pdfPrint.PDFPrint;
public class SimplePrint
{
public static void main (String [] args)
{
try
{
PDFPrint pdfPrint = new PDFPrint("input.pdf", null);
pdfPrint.print(null);
}
catch (Throwable t)
{
t.printStackTrace();
}
}
}
IronPDF 提供更广泛的功能,包括从 HTML 生成 PDF、文档操作、提取文本和图像等。
// Import statement for IronPDF Java
import com.ironsoftware.ironpdf.*;
// Apply your license key
License.setLicenseKey("YOUR-LICENSE-KEY");
// Set a log path
Settings.setLogPath(Paths.get("C:/tmp/IronPdfEngine.log"));
// Render the URL page as a PDF. Stored in myPdf as type PdfDocument
PdfDocument myPdf = PdfDocument.renderUrlAsPdf("/java");
// Save the PdfDocument to a file
myPdf.saveAs(Paths.get("url_saved.pdf"));
PdfDocument pdfDocument = PdfDocument.renderUrlAsPdf("/java");
jPDFPrint 具有专为PDF打印设计的简单API。 它提供处理打印设置和与打印机交互的方法和属性。
IronPDF 提供功能更广泛的全面 API。 它提供创建、操作和转换 PDF 文档的方法和属性,并广泛支持 HTML 转换为 PDF。
jPDFPrint 无缝集成到 Java 应用程序中,并简化了 PDF 打印任务。 它有详细的文档并且易于集成到现有项目中。
IronPDF 提供用户友好的 API,并提供全面的文档和教程。 它的广泛功能可能需要更多的学习和集成努力,但其功能提供了更广泛的PDF操作可能性。
IronPDF在HTML到PDF转换方面表现出色,允许开发人员直接从HTML内容生成PDF文档,包括CSS样式和JavaScript互动功能。
jPDFPrint 不提供原生的 HTML 到 PDF 转换功能。 其主要关注点是打印现有的PDF文件,而不是从HTML生成PDF。
jPDFPrint 提供了高级打印功能,例如双面打印、小册子打印、水印等。 它提供对打印过程的精细控制,并允许定制打印机命令。
另一方面,IronPDF 不专注于打印功能。 其主要优势在于PDF生成、操作和提取。
IronPDF和jPDFPrint都有活跃的社区,并为开发人员提供支持。 Qoppa专有的PDF技术,jPDFPrint的创建者,提供全面的文档、教程和快速响应的客户支持。 IronPDF还提供广泛的文档和资源,包括教程和专门的支持团队。
IronPDF和jPDFPrint之间的许可和定价模式不同。 开发人员在选择这两个库时,应考虑项目要求、预算和许可限制。
IronPDF 提供简明且透明的价格结构,基于使用该产品的开发人员数量。 许可证可以为单个开发人员、一组开发人员或拥有无限开发人员的组织购买。 费用如下:
个人开发者:$749 每年
团队版:每年 $1,499
商务: 每年 $2,999
购买许可后,您可以在任意数量的项目中使用IronPDF,并且您将获得一年的免费升级和技术支持。 在第一年之后,您可以选择以较低的费用续订您的许可证。
Qoppa PDF 提供了一些许可证选择,包括永久许可证、年度许可证和订阅许可证。 根据您所需的特定部分和功能,价格有所不同。 例如,Qoppa PDF Automation Server 的永久许可证费用为 4,000 美元,而年度许可证费用为 1,500 美元。
Qoppa PDF 还提供基于版税的网络服务编排许可计划。 这意味着您将根据您的在线服务处理的PDF文件的数量收费。
IronPDF for Java 和 jPDFPrint Java 库提供了用于 PDF 操作的不同功能。 虽然jPDFPrint专注于以编程方式打印PDF文件,并提供高级功能和细粒度控制,但IronPDF提供了一套全面的功能,包括从HTML生成PDF,文档操作和提取。 IronPDF是一个多功能的Java PDF库,允许开发人员以编程方式操作PDF文件。 它提供了广泛的功能,如PDF创建、编辑、合并、拆分和从HTML转换。 IronPDF 提供了用户友好的 API、易于使用的功能以及全面的文档,这些都简化了 PDF 操作的开发过程。
另一方面,jPDFPrint 是一个专为编程打印 PDF 文件设计的 Java 库。 它提供了高级功能,例如打印机选择,页面范围选择,双面打印,以及纸张大小和方向设置。 jPDFPrint 还提供直观的 API、详尽的文档和出色的客户支持。
IronPDF 提供比 jPDFPrint 更简单和透明的定价结构。 IronPDF的许可模式基于使用该库的开发人员数量,有单个开发人员、开发团队或拥有无限数量开发人员的组织选项。 IronPDF 许可证比 jPDFPrint 的稍便宜,价格从每年 $749 到 $5,999 不等,具体取决于许可证类型。 IronPDF 还提供第一年的免费升级和技术支持,并可以选择以较低的成本续订。
在技术能力方面,IronPDF 提供了比 jPDFPrint 更全面的功能集。 IronPDF允许开发人员以多种方式操作PDF文件,包括PDF创建、编辑、合并、拆分和从HTML转换。 IronPDF还提供了详尽的文档、用户友好的API和易于使用的界面,从而简化了PDF操作的开发过程。
Iron Software 产品 - 开发人员希望购买 IronPDF 或其他任何 Iron Software 产品,可以通过 Iron Software 网站上的 “买5,付2” 优惠来实现。该优惠为购买多个 Iron Software 产品(包括 IronPDF、IronOCR 和 IronBarcode 等)的开发人员提供了相当大的折扣。