明けましておめでとうございます2021年!コードにバグがないことをみんなに願っています~~~
私は常駐開発者なので、少し前に証明書をスキャンしたPDFファイルを頼んだのですが、PDFファイルの変換にはお金がかかるので、これは我慢できることだと思いました!!!
もちろん、答えはノーです。どうして私の貧しくて謙虚な人がこのお金を使うことができるのでしょうか~~~突然私の脳が明るくなり、写真を切り取って直接pdfファイルに変換しました。
今日は、主に写真をPDFドキュメントに変換するために、小さな知識ポイントを記録します。
最初に依存関係を導入します。
<dependency>
<groupId>com.itextpdf</groupId>
<artifactId>itextpdf</artifactId>
<version>5.5.13</version>
</dependency>
依存バージョンを自分で確認して使用することができますが、それを理解するために多くのことを行っていません。
コードは次のように表示されます。
public static void main(String[] arg){
imgOfPdf();
}
public static void imgOfPdf() {
try {
//创建个存放图片地址的集合
List<String> imageUrlList = new ArrayList();
//添加图片地址到集合
imageUrlList.add("C:\\Users\\Lenovo\\Pictures\\Saved Pictures\\123.jpg");
//存放pdf文件的路径
String pdfUrl = "D:\\123.pdf";
File file = PdfUtilImg.pdf(imageUrlList, pdfUrl);//生成pdf
file.createNewFile();
} catch (IOException e) {
e.printStackTrace();
}
}
上記のコードでは、コレクションとストレージのpdfアドレスをパラメーターとして渡すことができます。ここでは直接記述したので、画像が存在するかどうかを確認する必要はありません。この方法を使用する前に、検証ステップを完了することができます。
OK、次はメインコースです:
public static File pdf(List<String> imageUrllist, String pdfUrl) {
//new一个pdf文档
Document doc = new Document(PageSize.A4, 20, 20, 20, 20);
try {
//pdf写入
PdfWriter.getInstance(doc, new FileOutputStream(pdfUrl));
//打开文档
doc.open();
//遍历集合,将图片放在pdf文件
for (int i = 0; i < imageUrllist.size(); i++) {
//在pdf创建一页 主:此处为每一张图片是pdf文件的一页
doc.newPage();
//通过文件路径获取image
Image png1 = Image.getInstance(imageUrllist.get(i));
float heigth = png1.getHeight();
float width = png1.getWidth();
int percent = getPercent2(heigth, width);
png1.setAlignment(Image.MIDDLE);
// 表示是原来图像的比例;
png1.scalePercent(percent+3);
doc.add(png1);
}
doc.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (DocumentException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
//输出流
File mOutputPdfFile = new File(pdfUrl);
if (!mOutputPdfFile.exists()) {
mOutputPdfFile.deleteOnExit();
return null;
}
//反回文件输出流
return mOutputPdfFile;
}
public static int getPercent(float h, float w) {
int p = 0;
float p2 = 0.0f;
if (h > w) {
p2 = 297 / h * 100;
} else {
p2 = 210 / w * 100;
}
p = Math.round(p2);
return p;
}
public static int getPercent2(float h, float w) {
int p = 0;
float p2 = 0.0f;
p2 = 530 / w * 100;
p = Math.round(p2);
return p;
}
これでコードは終わりです。変換後の効果を示します。
この記事はhttps://www.cnblogs.com/sky-zky/p/9639256.htmlから借りています。