使用itext库在pdf文档中添加内联图像

问题描述 投票:0回答:1

我们已经创建了一个使用itext 5库生成pdf文档的应用程序。作为pdf生成的一部分,我们试图将图像内嵌在pdf中,该图像应不可编辑且只读。我们尝试使用PdfContentByte的addImage方法,如下所示,

byte[] decoded = Base64.getDecoder().decode(encodedImage);
image = Image.getInstance(decoded);

检索此图像后,在addImage方法中使用了相同的图像。

PdfContentByte canvas =  pdfStamper.getOverContent(item.getPage(0));
canvas.addImage(image, Boolean.TRUE);

Findings:由于图像为Base 64字符串格式,因此图像不会显示在生成的pdf文档中(如果图像不是Base 64格式,则可以正常工作。)]]

当我们打开pdf时,显示以下错误:------->“此页面上存在错误。Acrobat可能无法正确显示该页面。请与创建PDF文档的人联系以更正此错误。问题。“

我们如何处理这种情况?。

是实现此要求的任何其他方法。请帮助

代码:-

PdfReader resultantPdfReader = new PdfReader("template.pdf");

PdfStamper resultandPdfStamper = new PdfStamper(resultantPdfReader, new FileOutputStream("A13.pdf"));

AcroFields acroFields = resultantPdfReader.getAcroFields();
Rectangle fieldPosRec = acroFields.getFieldPositions("imageField").get(0).position;

String encodedSignature = ""; 
encodedSignature = new String(Files.readAllBytes(Paths.get("MyImage.png")));

if(encodedSignature.indexOf("data:image/png;base64,") != -1) {
    encodedSignature = encodedSignature.substring("data:image/png;base64,".length());
}

Image image = null;
try {
    byte[] decoded = Base64.getDecoder().decode(encodedSignature);
    image = Image.getInstance(decoded);
} catch (Exception e) {
    e.printStackTrace();
}
image.scaleAbsoluteHeight(fieldPosRec.getHeight());
image.scaleAbsoluteWidth(fieldPosRec.getWidth());
image.scaleToFit(fieldPosRec);
acroFields.removeField("imageField");                                              
image.setAbsolutePosition(fieldPosRec.getLeft(), fieldPosRec.getBottom());
PdfContentByte canvas = resultandPdfStamper.getOverContent(item.getPage(0));
canvas.addImage(image, Boolean.TRUE);
resultandPdfStamper.close();
resultantPdfReader.close();

Base64的图像串:iVBORw0KGgoAAAANSUhEUgAAAU4AAACWCAYAAACxSWGfAAAAAXNSR0IArs4c6QAAFJFJREFUeAHtnQmwZFV9hw37DgoiaJgZsGBAFgkSIEJgjAZRAliFikrEoOgoGkQlEFJKiXFhr5RCAKMjJhBETAoRImjAB4KAKBgEDBBhQM2IyEDYh2XM90Gf8k7T3a / fe9093X1 // 6rv3XOXvsvX9 / 773HNP93vBCxIxEAMxEAMxEAMxEAMxEAMxEAMxEAMxEAMxEAMxEAMxEAMxEAMxEAMxEAMxEAMxEAMxEAMxEAMxEAMxEAMxEAMxEAMxEAMxEAMxEAMxEAMxEAMxEAMxEAMxEAMxEAMxEAMxEAMxEAMxEAMxEAMxEAMxEAMxEAMxEAMxEAMxEAMxEAMxEAMxEAMxEAMxEAMxEAMxEAMxEAMxEAMxEAMxEAMxEAMxEAMxEAMxEAMxEAMxEAMxEAMxEAMxEAMxEAMxEAMxEAMxEAMxEAMxEAMxEAMxEAMxEAMxEAMxEAMxEAPNBl7MhEObJ2Y8BmIgBmKgtYG9mTwBv2vAIBEDMRADMdDKwCuYeCmUhFmGrZbNtBiIgRhoa2AN5uwDZ8L3oCST6Q6vYR3nwnyYC8MQ67MTp8JT4HEthsMbZccTMRADMTCpgU1Z4kPwbXgCppsku3ndIta / vBLpymz7w2CidF9NnCZQE6lR9v + 5sfyNgRiIgYqBlSjvASfALVAShsNn4Br4OPwRzDSsZc4Hk + UiqG7LstOcNx / mQj9iM1Z6LFwNZfveonurXmJVCmVemZZhDMRAzQ1swPG / E74GD0BJEg4dPw8OAp8u9zNMjibJc2ERVPfDstOcNx / mwnRjLV54MFwBS6Fsx3X7MKg5jmeCyxzXPCPjnQ38QefZmRsDI2dge / bYJCE7wwpQ4mcULm5wFcOny4wBD02O8yps1LR9b6sfhvsa / GaS8k7M / yvYH9YE41H4NzgL JsAEWQ3dWBs1Xg0 / fLaUPzEQA7UysAdH + 2UotSyHtl1eAn8Nm8Kwhol0PlgzvA6qxzCVsrVMa5sHg7XPdrEqM24F153aZjtLHaanxtlBTmaNhAFvs0 + EdzX29iaGJp + L4DKw5jVqYa1xQ / DYpF3ZeS77A / gJfBXuhMnCW / QjwRq4bbpLIBEDMVADA37ovwfuB2tOj8MnYBVItDfgLbpNFLJT + 8UyJwZiYNwMbM0BfR / KbaxPi18 + bgfZ4 + PXG + bNcCPkFr3HcrO63hlYl1VtA3vBe + FYsA3uO3Ar / Aouh9PhjbAaJDobWIPZn4MnwYt / EbwNEp0NvI7Z10P5oDmasu2ciRgYGgOvYk9OgnKSdju0Le6bcAhsDIllDezN6F2gz2fgNPDDKdHewI7M + i6Uc9AP6 / eBfVoTMTAUBjwZj4HylTbb3qxZWsNcANY4rXlaA7Um6kW / A / gaawNLoZzglp3mvF50yGY1IxsvY8 + / AcXNDZT / eGSPZjA7vgWb + TqUc + oBykfB6pCIgaExsCV7Yj84L25P1lNgqrfe1jJNrNY6rX2WROHwHNgX6hQrcrAfhodABw79brXTE60NvJTJZ0L58H6M8nHwQkjEwNAYsMH9MPAE9eJeCPNgpmHS9db0DLCGVZLoBGVvv8Y9rFFWj9uO3NY8E60NmBhNkOU8NHGaQE2kiRgYKgObsDeXQUlqCyiv04c9tAngQ3AfuC1rtGfDLBi3sPniVLAN02O9C / wASbQ24K23t + CLoZwb3qJ7q56IgaEzcBB79CB4st4L + 0K / w6RireJxcLsOfcLcj2TNagceB7DF / wWPzafmHqtP0RPPN + CHqQ95fNijL / ku1OFuhMNMjJqBF7PD / w7lZLXstEHGbDZmm6c1T / fDmugHwYtpFMP + l5dCcXoVZR + eJZY1YLPQLnAyXAfF1 / WUXweJGBhKA9YqrV16wlrbtNa5PMPaxRVQLqD / przf8tyhKW57FZb3Z9xKDdpeCIeA CSLxnIFqsrybSeW9dngevAXiCwmJ4TPgrfACKCet7Zq2bw5LmCxvg7J / E5SH / ZZtJ / bRC7 / s81cpD7rmziaHMjoly3vY41PAmmcS5lC + fdkpDcyDheAF7hPLw2AYT1hv00fhAZLfVrHt0u9J6 / QCmAd1jyTLup8BY3L8q3EcfrKXdkT7aM4dgWNr9QDJRGWteXmHtcxbwYRp4jweTKR1jSTLur7zY3rca3FcJ4IXuP3hjgFrdKMUs9jZYXmA1FzLNHnuPEoye7iv1WTpbbfnWCG34T0UnVUN3sD5jZN5gqHfOx / laH6AdCUHczRsNKCDSi3zuaad8jQ8yXJAJ142M1gDR7I5awA + Nd98sJvu69Z8gGTH6FK7sSbtt3H2hH602da1lrk6Pv2wejf8A1wOd0Dx7tDkaZeiPOBBQmL0DbyWQ7DtzXbNfUf / cJ53BCbI14MJ08RZLuY7KfeyFlqHWqYuNwU / kD4B3qXYs6F846m4LUMTaJIlEhLjZWAWh3MfeKJ / arwOreXReKv + d2DSLBf3TGuh41rL9MHarvABOB2uhvLDI8VdGfqNp5 + C7ctHwRvgZZCIgbEz4BP068GT / z9gBahLdKqFmli7bQsdh1qmv7o0F + XU / vfgr1TdBSUpNg / 9euglcCK8E14JdupPxEAtDHyZo /硅+ DNU + ee3plMLHdVa5ga8138Gh8MC + BE8Bs3J0XG / 2eR8l3N5X + frEzFQWwPv58i9OB6F7WprYdkDb1cLbZVUyrRh7ZdpDdD39S / hBLCGaE2x7HfzcCHzLoRPw1thS7AmmoiBGGgY2IXhEvDieUdjWgbLGii1UB8oNSeZMm5H9mHol2lb4l5wJJwNN4FtjmU / q0PbKG2rtM3yUNgNbMtMxEBXBqxd1DFewkH / GLzY7DbyEUiMhgFrkVuBbYoF30drh82xlAn / AybRKgsZN5EmYmBaBuqYOP0W0GWwO1wJpRu​​meBmY吨+ HVBHkL47ZdJmKgpwZG7auEvTj4k1iJSfNXYDuW7XOJ5WvA83ALqCZIyxu32C1rkfaZ / K8mftli2UyKgb4YqFuN07ZM + 9jZ9rUHXAuJwRqw50JzLXIbpvmEvjlsi7QGWU2SNzOeWmSzqYwP1ECdapxerP / UsHsYwyTN / p5q9od9OTTXIme12KztjXdCNUFaXghpi0RCYrgM1KXGaS3HvnibwQJ4DyR6Z2BtVrUtVJOk42u22IS1Rb9dU02S1iofbrFsJsXAUBqoQ + K05nMR + PU3k6ddT + yGlJiegTm8rJogLfuB1Opc + gXTqwnSsk + 5badMxMDIGqjDrfoneXdMmr + F / SFJEwldxOosY9tjNUna3LFui9fq1CfYzUnygRbLZlIMjLyBVrWEkT + oygHsS / kCsIazJ1wOiecbsB9kNUFa9im3tfXm + DUTmhOkT7nTO6HZVMZjYAQNeOE / CD5c + JsR3P9 + 77Lft9bLhaCjZux5YNvjv8AR8OewISRiIAbG1IA16c + DycAf8E383sCrKf4zPAElWfoDJ34p4BR4F2wPq0AiBmKgRgZ251hNCn6tcq0aHXe7Q9XB ++ AnUJLlM5R9aPZGaHVLzuREDMRAnQycycGaID5Tp4NucaxbM + 0L8H9QEua9lD8LsyERAzEQA88a8BZzMZgoXvHslHr9WZnDPQCugJIsHX4f3g65BUdCIgZiYFkDb2LURHHjspPHfmwWR2gN26feJWE + RPk0sFtRIgZiIAbaGjifOSaOj7VdYnxm2Da5F / hk3DbLkjDtLvR + SPsuEhIxEAOdDazL7MfBJGLfxHENuxIdCT + Hkix9Sn427AqJGIiBGOjawLtZ0kRyWdevGK0F7Upkv8pqV6I7GT8KTKaJGIiBGJiyAROmifPgKb9yeF / g7fZ8aO5K9C2mpSvR8L5v2bMYGAkK9SKK9KSK9KSK9KSK9KSKJKJKJKJKJKZKJKJKJKJKJKJKJKJKJKJKJKJKJKJK1J S1ciJCRiIAZ6a6Dcyu7X29UOZG2z2YpdieycbvKX0pXImmciBmIgBnpuwORisrkfRqWDt12J / Lm7Vl2JbNNMVyIkJGIgBvpn4LOs2sR5Rv820dM1b8La / EGNUrssXYl8ap6IgRiIgYEYuIitmIT + dCBbm9lGtuPl / kdG9 / eHYH / MdCVCQiIGYmCwBi5hcyaiXQa72Slv7bW8ojwln6C83pTXkBfMxIA / N + g5cjJ4ziRioNYGvBBMnA6HNQ5kx5aA + / k1aPXvcJmc6LGBarK8m3Xrv7BVj7eV1cXASBmwFuHFcA94oQxb + M2epeA + ngTDuI / s1thEp2TpOWL7sudM3oexectzINMx4AXgBWFi8oIYlvDJub9O5H7ZOf8wSPTHQDVZlnNB75Jk2R / nWesYGBi22 / XVcXoBeOH6bSb / w2aitwaSLHvrM2uroYFyu / 4bjv1zsM1ydOBT8mvApHk / 5BeLkNCDMFH6vn4QzoPypYdqzdIP0NyGIyERA90Y8KLaB8pF5PAm + FuYDYOKzdjQ7eD274ItITE9AyvyslfBR8Haux9Ceq0ywXiSJRISMTBdAyZP + 3KeDr + FcoH5YMZ / HfEB6GefyR1Z / 73gdm + AjSDRvQG / 9eWXAI6Gb4NfOy3vYRnezTR /吴+ 9MBcSMRADPTTg / 975℃/ hXeBTKhfcU5YvgHbAm9Cr8ibdHwO1cAmtBorMB24FfA5 +安永+ ExKO9TGd7BtC / BQTAHEjEQAwMyYIK0H + XFYOIsF6WJ7hzYG0y0041DeOHT4Hq / AitB4vkG1mGS / + rDNuir4Uko74VD7wxuBnsiHAAbQyIGYmAIDGzAPhwKV4EXarlwvbX / R9gNvOXvNo5lwbKOT3X7opostz7H6a9V2W / yR1A + XIovx3 / cmP8mhi6fiIGhNzCVBDH0BzONHZzNa7xll20qr19E + T5Y2IYHmG6t8otwMNhH03 + O9iWoc1hDtI15D9gdtobqOWZt3wR6BVwJ1jptx0zE wEgZqJ7UI7XjfdjZbVmnCXQH2HOS9Xux625tMBmcBT7MWNjAxFqH8IPHBFkS5eZNB / 0449dBSZTXUrYdMxEDI20gibP12 / ciJs / pgAmzU5hYF3ZgVBPrFhxTNVHOYrwaDzPyAyiJ8nrKT1YXSDkGxsFAEufU3kX7ZFqznAN + je848MnwnArWwnwI0ikmS6zOXxVWaQy7LXe7XLv1dnq9TRPOr8ZiRmwrLonyRso2WyRiYKwNJHF2 // buyqIXwovAW859wAdKrcJl5rShm8Taap3DMM3fD70bSqL0CfjvhmHHsg8xMEgDSZzd2d6fxc6G1eCb8Haw / W660SmxrstK7ThvzW1JA293S9lhdXyq5Zm83vbcRAzEQAxMauAwljCJWbOyf + EKkIiBGIiBGGhhwNr4iWDCXAp + 5z0RAzEQAzHQxoAPT84Fk6a3wgdCIgZiIAZioI2B9Zg + ASZN / Z + Q / ycoEQMxEAMx0MaAXYu + ACbNX8J2kIiBGIiBGOhgwO + qmzS / A5t0WC6zYiAGYiAGMGC / TJPmE / BKSMRADMRADHQwYL9Jf9TDxHl4h + UyKwZiIAZiAAN2O7oUTJoO86UAJCRiIAZioJOBjzLTpOk / ebPmmYiBGIiBGOhgwLZM2zRNnLZxJmIgBmIgBjoYsOvRLWDS9KuUiRiIgRiIgUkMlK5HJk + TaCIGYiAGYqCDgXQ96iAns2IgBmKg2UC6HjUbyXgMxEAMdDCQrkcd5GRWDMRADLQy8BEmputRKzOZFgMxEAMtDKTrUQspmRQDMRAD7Qyk61E7M5keAzEQA20MpOtRGzGZHAMxEAOtDKTrUSsrmRYDMRADbQxUux75YCgRA3U2sBMHf1ydBeTYJzeQrkeTO8oS9TCwKodpwnwa8rsM9XjPp32U6Xo0bXV54RgZsJZ5K5gwTZzHg4k0MQMD4 / rbk3Y9ug48QfaFb0FitAz4n0bXqrB2pTzZ9FbLei74z / FE / yf1i6Zhmeb8cQiP 91g4AlaEn8HB4HWRmKGBlWb4 + mF8uR8G88ETx6fpSZpI6HN0k + RaJTMTYKvpTlu5D / u8Jut8KWzVYd2PMK9dUh325DqXfZ / XYHuGW8IzcAIcA0sg0QMD41jj3AUv18CNsCs8DompG / BDdUPwAVth40q5TDPJvQR6HU + xQpPYw42h5UKrad0suwbr + MMG / JM + y81Dk / lk4baGJblamzwQ9oa3QjXOYOQsSC2zaqUH5XGscb6l4eV7DJM0n3 + SvJBJJek1D6uJcQOW6 / aD9VGWfRJaJbRupzUnPtfX63CdD8LNHVa8LvOak2nzuMnVWmunmut / Mv8mOB9MXLYx9ipKspzHCr39LuFPJP4UJhrcxjDRBwPdXhh92HRfVunx3A2e6H8C10IdYjUO0lpfNfE1J8UybhNGN / EMC / kP7H7dhkWV6Q9RrlN0Sq7WYtcHa + sl7qHwDZhpEi0J05qlNcwSX6EwAeeA71uizwbGLXHugi9v072Nmg29 / JRndQONFdiatb6S8By2S4zrTWHPTHImw2ria5Uc / R9MS6ew3iz6ewNeVzuDCe7N4Ad5Cc9NE + hUkmhJmB / ndZs3VnQxw69DkmVDyCAH45Y4T0ae / 3ztFPjYIEVOYVu2CVaTYbVcTYzWWLxguglvQe + FagJslxjTfNGN0d4tM90kOpddmNdgW4Zbg3EHfBqSMLWxnGLcEucleHw9nAufh + th1SZ8Atw8rTrez / m2KbutbsLa8v1QTYbV8qLKvMXdrDDLLHcDJYnaDi / VmuhpjN8FO8IWsANUw9qltcwkzKqV5VQet8RpY / 2ty8llt5v1FvgRqCa + akIsZWuQPllOjKeBuRzWfPB23vbp5ge1NzDtdphocBvDxJAYGLfEWf1E99bmNfA0LAFvZx22Y1Dzkwx5E2oYJsp5sB / sBjbZNMdFTJAJSKJEQiIGYqC + Bmx2aYVPwK1VngTbQSIGYiAGYqBhoJo0TZQ + Ud8f1mnMzyAGYiAGYiAG YiAGYiAGYiAGYiAGYiAGYiAGYiAGYiAGYiAGYiAGYiAGYiAGYiAGYiAGYiAGYiAGYiAGYiAGYiAGYiAGYiAGYiGYiAGYiAGYiAGYiAGRs3A / wMpp3D77pc5JQAAAABJRU5 =

我们已经创建了一个使用itext 5库生成pdf文档的应用程序。作为pdf生成的一部分,我们试图将图像内嵌在pdf中,该图像应不可编辑且只读。我们...

java pdf itext itext7
1个回答
1
投票

您的示例图像具有iText无法正确转换为嵌入式图像的属性。不幸的是,它无法识别并输出错误的结果PDF。

特别是您的图像文件使用透明度。内联图像不允许Mask

© www.soinside.com 2019 - 2024. All rights reserved.