为有中文需求的客户提供多渠道中文技术支持.

Tue Jul 26, 2022 7:14 am

免费的pdf 使用的时候替换文本 显示不全

yonghuming
 
Posts: 3
Joined: Tue Jul 26, 2022 2:51 am

Tue Jul 26, 2022 10:10 am

您好,

感谢您的咨询。

为了帮助我们进一步复现和调查,请您将您的测试代码以及测试文档(如果有的话)一并提供给我们。提前感谢您的协助。
此外,因为对我们于免费版本的维护频率不高,建议您先切换到Spire.Pdf的正式版本进行测试以观察是否问题可以解决。
Sincerely,
Andy
E-iceblue support team
User avatar

Andy.Zhou
 
Posts: 483
Joined: Mon Mar 29, 2021 3:03 am

Tue Jul 26, 2022 10:17 am

window 没有问题,liunx上出现了问题,liunx已安装相关字体

Code: Select all
try {
            String path = "F:\\杂七杂八\\合同.pdf";
            PdfDocument pdf = new PdfDocument();
            pdf.loadFromFile(path);
            Map<String, String> map = new HashMap<>();
            map.put("\\$\\{" + "relateSceneNumber" + "}", "20220722084347399341000000");
            map.put("\\$\\{" + "targetNamePath" + "}", "2022二建管理-教材精讲");
            map.put("\\$\\{" + "amountShouldPay" + "}", "¥0.1");
            map.put("\\$\\{" + "amountActualPay" + "}", "¥0.1");
            map.put("\\$\\{" + "partARealName" + "}", "胖虎");
            map.put("\\$\\{" + "partACertTypeName" + "}", "身份证");
            map.put("\\$\\{" + "partACertNumber" + "}", "412223198006195517");
            map.put("\\$\\{" + "partAContactNumber" + "}", "15225465336");
            PdfSolidBrush brush = new PdfSolidBrush(new PdfRGBColor(Color.black));
            Font font = new Font("宋体", Font.PLAIN, 9);
            PdfTrueTypeFont pdfTrueTypeFont = new PdfTrueTypeFont(font, true);
            PdfTextFindCollection textFindCollection;
            Rectangle2D rec;
            for (Map.Entry<String, String> entry : map.entrySet()) {
                for (int i=0;i<pdf.getPages().getCount(); i++) {
                    PdfPageBase page = pdf.getPages().get(i);
                    textFindCollection = page.findText(entry.getKey(), false);
                    for (PdfTextFind find : textFindCollection.getFinds()) {
                        rec = find.getBounds();
                        page.getCanvas().drawRectangle(PdfBrushes.getWhite(), rec);
                        page.getCanvas().drawString(entry.getValue(), pdfTrueTypeFont, brush, rec);
                    }
                }
            }

            pdf.saveToFile("F:\\杂七杂八\\测试.pdf");

        } catch (Exception e) {
            System.err.println(e.getMessage());
            e.printStackTrace();
        }

yonghuming
 
Posts: 3
Joined: Tue Jul 26, 2022 2:51 am

Wed Jul 27, 2022 5:53 am

您好,

感谢您的回复。

从您的描述我不是特别清楚您指的是哪部分文本被遮盖呢?是替换以后的文本吗?能否请您将这个用于测试的PDF文件发送给我们呢?您可以将它上传到此处或者通过邮件(support@e-iceblue.com)发送给我们。
Sincerely,
Andy
E-iceblue support team
User avatar

Andy.Zhou
 
Posts: 483
Joined: Mon Mar 29, 2021 3:03 am

Return to 中文技术支持