第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何使用 Java 生成具有類似 HTML 功能的 PDF

如何使用 Java 生成具有類似 HTML 功能的 PDF

慕田峪4524236 2022-09-14 16:07:53
我需要使用一些具有HTML等功能的爪哇API創(chuàng)建PDF?;旧?,我想創(chuàng)建一個表單,它可以從用戶那里獲取輸入,執(zhí)行一些基本的客戶端驗證,并使用Java以編程方式生成此PDF。我還在尋找豐富的HTML功能,如展開,折疊,超鏈接,在按鈕單擊時添加部分等。所以基本上我正在嘗試創(chuàng)建一個類似HTML的頁面,但在PDF中。我嘗試過使用itext,但只能做少數(shù)事情,并且無法在PDF中添加動態(tài)。是否有任何工具/API 支持此功能?
查看完整描述

1 回答

?
RISEBY

TA貢獻1856條經(jīng)驗 獲得超5個贊

PDF本身允許您嵌入(腳本的子集)。


此嵌入式代碼可以鏈接到文檔事件(例如打開文檔)或特定的表單元素(例如,單擊按鈕,更改文本輸入字段中的文本)。


這是他們網(wǎng)站上一個名為“制作PDF交互式”的頁面,專注于添加表單元素。


布魯諾·洛瓦吉(iText的創(chuàng)始人)的書(iText在行動)也非常詳細(xì)。它甚至展示了如何在PDF文檔中編程計算器,第232頁。


我只是要在這里復(fù)制粘貼相關(guān)部分。


清單 7.29 計算器


public void addTextField(PdfWriter writer, Rectangle rect, String name) {

    PdfFormField field = PdfFormField.createTextField(writer, false, false, 0);

     field.setFieldName(name);

     field.setWidget(rect, PdfAnnotation.HIGHLIGHT_NONE);

     field.setQuadding(PdfFormField.Q_RIGHT);

     field.setFieldFlags(PdfFormField.FF_READ_ONLY);

     writer.addAnnotation(field);

}    


public void addPushButton(PdfWriter writer, Rectangle rect, String btn, String script) {

    float w = rect.getWidth();

    float h = rect.getHeight();

    PdfFormField pushbutton = PdfFormField.createPushButton(writer);

    pushbutton.setFieldName("btn_" + btn);

    pushbutton.setWidget(rect, PdfAnnotation.HIGHLIGHT_PUSH);

    PdfContentByte cb = writer.getDirectContent();

    pushbutton.setAppearance(PdfAnnotation.APPEARANCE_NORMAL, createAppearance(cb, btn, BaseColor.GRAY, w, h));

    pushbutton.setAppearance(PdfAnnotation.APPEARANCE_ROLLOVER, createAppearance(cb, btn, BaseColor.RED, w, h));

    pushbutton.setAppearance(PdfAnnotation.APPEARANCE_DOWN, createAppearance(cb, btn, BaseColor.BLUE, w, h));

    pushbutton.setAdditionalActions(PdfName.U, PdfAction.javaScript(script, writer));

    pushbutton.setAdditionalActions(PdfName.E, PdfAction.javaScript( "this.showMove('" + btn + "');", writer));

    pushbutton.setAdditionalActions(PdfName.X, PdfAction.javaScript( "this.showMove(' ');", writer));

    writer.addAnnotation(pushbutton);

}


public PdfAppearance createAppearance(PdfContentByte cb, String btn, BaseColor color, float w, float h) {

    PdfAppearance app = cb.createAppearance(w, h);

    app.setColorFill(color);

    app.rectangle(2, 2, w - 4, h - 4);

    app.fill();

    app.beginText();

    app.setColorFill(BaseColor.BLACK);

    app.setFontAndSize(bf, h / 2);

    app.showTextAligned(Element.ALIGN_CENTER, btn, w / 2, h / 4, 0);

    app.endText();

    return app;


查看完整回答
反對 回復(fù) 2022-09-14
  • 1 回答
  • 0 關(guān)注
  • 153 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號