1、aspose.pdf和aspose.word图片转pdf文档
Java 使用aspose.pdf将多张图片转成pdf的方法及示例代码
Java 使用aspose.word多张图片转成pdf的方法及示例代码
2、使用aspose.pdf实现代码
/**
*
* Converts an image to PDF using aspose.pdf for Java.
*
*
*
* @param inputImgUrls 所有文件档图片地址
*
* @param outputFileName 保存的pdf文件名
*
*/
public static void convertImageToPdf(ArrayList<String> inputImgUrls, String outputFileName) throws Exception
{
// Instantiate Document Object
try {
com.aspose.pdf.Document doc = new com.aspose.pdf.Document();
URL imgUrl = null;
BufferedImage bufferedImage = null;
for (int i = 0; i < inputImgUrls.size(); i++)
//
{
imgUrl = new URL(inputImgUrls.get(i));
// Add a page to pages collection of document
Page page = doc.getPages().add();
// Load the source image file to Stream object
bufferedImage = (BufferedImage) ImageIO.read(imgUrl);
byte[] buffer = ((DataBufferByte) (bufferedImage).getRaster().getDataBuffer()).getData();
java.io.InputStream fs = new java.io.ByteArrayInputStream(buffer);
// Set margins so image will fit, etc.
page.getPageInfo().getMargin().setBottom(0);
page.getPageInfo().getMargin().setTop(0);
page.getPageInfo().getMargin().setLeft(0);
page.getPageInfo().getMargin().setRight(0);
page.setCropBox(new Rectangle(0, 0, 400, 400));
// Create an image object
Image image1 = new Image();
// Add the image into paragraphs collection of the section
page.getParagraphs().add(image1);
// Set the image file stream
image1.setImageStream(fs);
}
doc.save(outputFileName);
}
finally {
}
}
3、aspose.word实现代码
/**
*
* Converts an image to PDF using aspose.words for Java.
*
*
*
* @param inputImgUrls 所有文件档图片地址
*
* @param outputFileName 保存的pdf文件名
*
*/
public static void convertImageToPdf(ArrayList<String> inputImgUrls, String outputFileName) throws Exception
{
// 验证License
if (!getLicense()) {
return;
}
Document doc = new Document();
DocumentBuilder builder = new DocumentBuilder(doc);
try {
for (int i = 0; i < inputImgUrls.size(); i++) {
if (i != 0)
builder.insertBreak(BreakType.SECTION_BREAK_NEW_PAGE);
URL imgUrl = new URL(inputImgUrls.get(i));// 网络图片
BufferedImage image = (BufferedImage) ImageIO.read(imgUrl);
double maxPageHeight = 1584;
double maxPageWidth = 1584;
double currentImageHeight = ConvertUtil.pixelToPoint(image.getHeight());
double currentImageWidth = ConvertUtil.pixelToPoint(image.getWidth());
if (currentImageWidth >= maxPageWidth || currentImageHeight >= maxPageHeight) {
double[] size = CalculateImageSize(image, maxPageHeight, maxPageWidth, currentImageHeight,
currentImageWidth);
currentImageWidth = size[0];
currentImageHeight = size[1];
}
PageSetup ps = builder.getPageSetup();
ps.setPageWidth(currentImageWidth);
ps.setPageHeight(currentImageHeight);
Shape shape = builder.insertImage(image, RelativeHorizontalPosition.PAGE, 0,
RelativeVerticalPosition.PAGE, 0, ps.getPageWidth(), ps.getPageHeight(), WrapType.NONE);
}
} finally {
}
// Save the document to PDF.
doc.save(outputFileName);
}
// 等比计算图片尺寸
public static double[] CalculateImageSize(BufferedImage img, double containerHeight, double containerWidth,
double targetHeight, double targetWidth) throws Exception {
// Calculate width and height
targetHeight = containerHeight;
targetWidth = containerWidth;
// Get size of an image
double imgHeight = ConvertUtil.pixelToPoint(img.getHeight());
double imgWidth = ConvertUtil.pixelToPoint(img.getWidth());
if (imgHeight < targetHeight && imgWidth < targetWidth)
{
targetHeight = imgHeight;
targetWidth = imgWidth;
}
else
{
// 计算文档中图像的大小
double ratioWidth = imgWidth / targetWidth;
double ratioHeight = imgHeight / targetHeight;
if (ratioWidth > ratioHeight)
targetHeight = (targetHeight * (ratioHeight / ratioWidth));
else
targetWidth = (targetWidth * (ratioWidth / ratioHeight));
}
double[] size = new double[2];
size[0] = targetWidth; // width
size[1] = targetHeight; // height
return (size);
}
相关文档:
java aspose.cells Excel(.xls,.xlsx)文件转成csv文件和html文件
java利用aspose组件将word转成pdf 中文乱码问题
java 使用URLConnection下载抓取多个图片合成单个pdf文件