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

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

為什么生成的 PDF 中使用的像素比源 html 中使用的更多?

為什么生成的 PDF 中使用的像素比源 html 中使用的更多?

隔江千里 2023-06-04 17:45:12
我使用此代碼在 css 文件中下載帶有圖像的網(wǎng)頁,但它在 pdf 文件中縮放得太大了。圖片的寬度為 120 像素,顯示為 185 像素寬度。對于 Camparison,我構(gòu)建了一條 10 像素線,顯示為 12 像素。但為什么?我該如何解決?我無法在沒有更多詳細(xì)信息的情況下發(fā)布問題,但我什么都不知道,這對您來說很有用,但也許有幫助:我在存檔部門工作,負(fù)責(zé)存檔可在其網(wǎng)頁中訪問的信息,但最終,外觀并不是創(chuàng)作者想要的樣子。我嘗試改用本地 CSS 文件,但意識到這不是我想要的。我必須更頻繁地使用我的工作流程并且必須使用他們提供的 css 文件并將 html 頁面正確轉(zhuǎn)換為 PDF。在此先感謝您的閱讀,我試圖讓準(zhǔn)則包含所有重要的知識,但僅此而已。該項(xiàng)目的依賴項(xiàng)是:com.itextpdf 內(nèi)核 7.1.7com.itextpdf styled-xml-parser 7.1.7com.itextpdf svg 7.1.7com.itextpdf pdf 7.1.7org.slf4j-簡單 1.6.1package ueberordnungen;import java.io.IOException; import org.jsoup.Jsoup;import org.jsoup.nodes.Document;import org.jsoup.nodes.Element;import com.itextpdf.html2pdf.ConverterProperties;import com.itextpdf.html2pdf.HtmlConverter;import com.itextpdf.kernel.pdf.PdfDocument;import com.itextpdf.kernel.pdf.PdfWriter;public class Worker3 {    public static void main(String[] args) throws IOException {         //eine spezielle URL heraus picken        String kongressURL = "https://www.egms.de/dynamic/de/meetings/vnda2019/index.htm";        Document doc = Jsoup.connect(kongressURL).get();        System.out.println("-----Titel: "+ doc.title());        Element content = doc.child(0);        content.getElementById("navigation_language").remove();        content.getElementById("navigation").remove();        content.getElementsByAttributeValue("href", "/static/css/gms-framework.css").first().remove();        content.getElementsByClass("hidden_navigation").first().remove();        content.getElementById("page").before(content.getElementById("header"));        content.getElementsByTag("script").remove();        content.getElementById("owner_links_container").attr("style", "border-top:10px solid #060");        ConverterProperties properties = new ConverterProperties();        properties.setBaseUri(kongressURL);        PdfWriter writer = new PdfWriter("content.pdf");        HtmlConverter.convertToPdf(content.html(), new PdfDocument(writer), properties);    } }
查看完整描述

1 回答

?
鴻蒙傳說

TA貢獻(xiàn)1865條經(jīng)驗(yàn) 獲得超7個贊

iText 7 以每點(diǎn)一個圖像像素的比例添加背景圖像,請參閱AbstractRenderer.drawBackground:


PdfXObject backgroundXObject = backgroundImage.getImage();

...

Rectangle imageRectangle = new Rectangle(backgroundArea.getX(), backgroundArea.getTop() - backgroundXObject.getHeight(),

        backgroundXObject.getWidth(), backgroundXObject.getHeight());

...

drawContext.getCanvas().addXObject(backgroundXObject, imageRectangle);

正如您在代碼中看到的,圖像的寬度和高度值(包含位圖圖像的水平和垂直像素?cái)?shù))原樣用作圖像最終縮放到的矩形的寬度和高度。由于畫布繪圖操作中使用的單位是默認(rèn)為1 / 72英寸的用戶空間單位,因此圖像以每英寸 72 個圖像像素或每磅 1 個圖像像素顯示。


默認(rèn)情況下,Web 瀏覽器通常以每像素 1 個圖像像素或每英寸 96 個圖像像素顯示圖像。


您的示例網(wǎng)頁主要使用 px = 1 / 96 in 中給出的絕對位置進(jìn)行布局。因此,網(wǎng)絡(luò)瀏覽器或 iText 繪制圖像的不同比例會導(dǎo)致不同的外觀,尤其是外觀不佳在手頭的案例中的 iText 中:

http://img1.sycdn.imooc.com//647c5d560001ade906270377.jpg

imageRectangle您可以通過替換上面計(jì)算的中心代碼行,使 iText 繪制背景圖像更像瀏覽器


Rectangle imageRectangle = new Rectangle(backgroundArea.getX(), backgroundArea.getTop() - backgroundXObject.getHeight(),

        backgroundXObject.getWidth() * .75f, backgroundXObject.getHeight() * .75f);

在 iText 中,按照上面的建議進(jìn)行了修補(bǔ):

http://img1.sycdn.imooc.com//647c5d670001817206200168.jpg

實(shí)際上,此代碼位置似乎是開始添加background-size當(dāng)前此處不支持的支持的合適位置。

當(dāng)心:我對 iText 7 HTML 到 PDF 的轉(zhuǎn)換代碼不是很深入,所以我無法確定這個補(bǔ)丁是否有不良副作用。

這是一個錯誤嗎?

嚴(yán)格來說它不是,至少就我瀏覽 CSS 規(guī)范而言:

HTML 頁面未background-size在此處設(shè)置。因此,應(yīng)使用背景圖像的固有尺寸。不幸的是,CSS 并沒有定義通常如何找到內(nèi)在維度。因此,網(wǎng)頁基本上將背景圖像的比例留給了 HTML 客戶端的心血來潮......

但是,如果 iText 7 HTML to PDF 旨在生成與瀏覽器輸出一致的結(jié)果,那么它最好在此處更改其默認(rèn)比例以匹配那些瀏覽器的比例。


我剛剛意識到AbstractRenderer我修補(bǔ)的不在 html2pdf 項(xiàng)目中,而是在核心 iText 7 布局項(xiàng)目中。

因此,在這里更改大小可能不是一個好主意,至少如果一個人不僅將 iText 7 用于 html2pdf,而且還直接將其使用。

盡管如此,該代碼位置適合引入對某些背景大小屬性的支持。html2pdf 然后可以擴(kuò)展BackgroundApplierUtil以便它始終將新的核心屬性設(shè)置為適合創(chuàng)建與瀏覽器顯示內(nèi)容一致的外觀的值。


查看完整回答
反對 回復(fù) 2023-06-04
  • 1 回答
  • 0 關(guān)注
  • 154 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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