如何将图像转换为PDF? [英] How to convert Image to PDF?
问题描述
我正在开发一个应用程序,需要将图像转换为 PDF.我尝试了一些东西,但问题是,该 PDF 中的图像大小非常非常小.我需要解决方案来解决这个问题.此外,我正在寻找将多个图像转换为单个 PDF 文档的方法.我会发布我尝试过的代码.
I am developing an application where I need to convert an Image to PDF. I tried something, but the issue is, Image size in that PDF is very very small. I need solution to fix this. Also I am looking for converting multiple Images into single PDF document. I will post the code which I tried.
public void convertPDF(byte[] path)
{
String FILE = "mnt/sdcard/FirstPdf.pdf";
Document document=new Document();
try {
PdfWriter.getInstance(document, new FileOutputStream(FILE));
document.open();
try {
image=Image.getInstance(path);
document.add(new Paragraph("My Heading"));
document.add(image);
document.close();
} catch (IOException e) {
e.printStackTrace();
}
} catch (DocumentException e) {
e.printStackTrace();
} catch (FileNotFoundException e) {
e.printStackTrace();
}
}
当我将 Bitmap 转换为 Byte 数组时,我正在压缩图像,我想,这就是原因.不压缩图像,我无法将位图转换为字节数组.
When I convert Bitmap to Byte array, I am compressing the image and I guess, that's the reason. Without compressing the image, I am unable to convert Bitmap to Byte Array.
ByteArrayOutputStream stream = new ByteArrayOutputStream();
bmp.compress(Bitmap.CompressFormat.PNG,100,stream);
byte[] byteArray=stream.toByteArray();
convertPDF(byteArray);
有什么解决办法吗?
更新
在这里,我已经实现了@Burak Cakir 在答案中建议的答案.但现在我得到了更大的 PDF 图像.为了更好地理解,请找到下面的图片.
Here I have implemented the answer which suggested by @Burak Cakir in the answer. But now I am getting larger image in PDF. For better understanding, Please find the images below.
实际的图像是
推荐答案
我建议你使用 iText
pdf 库.这是 gradle
依赖项:
I would suggest you to use iText
pdf library. Here is the gradle
dependency:
实现'com.itextpdf:itextg:5.5.10'
Document document = new Document();
String directoryPath = android.os.Environment.getExternalStorageDirectory().toString();
PdfWriter.getInstance(document, new FileOutputStream(directoryPath + "/example.pdf")); // Change pdf's name.
document.open();
Image image = Image.getInstance(directoryPath + "/" + "example.jpg"); // Change image's name and extension.
float scaler = ((document.getPageSize().getWidth() - document.leftMargin()
- document.rightMargin() - 0) / image.getWidth()) * 100; // 0 means you have no indentation. If you have any, change it.
image.scalePercent(scaler);
image.setAlignment(Image.ALIGN_CENTER | Image.ALIGN_TOP);
document.add(image);
document.close();
这篇关于如何将图像转换为PDF?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!