关键词:
【中文标题】iText 7:此 pdf 文档可能无法正确显示 Firefox【英文标题】:iText 7 : This pdf document might not be displayed correctly Firefox 【发布时间】:2020-12-09 21:55:34 【问题描述】:我遇到了从iText7
生成的 pdf 的奇怪问题。生成的 pdf 在 Adobe reader
和 Chrome browser
中正确打开。但是相同的 pdf 在Firefox
浏览器中部分打开。我在 Firefox 中收到以下消息。奇怪的是其他不是通过iText
生成的pdf在firefox中正确呈现。
Java 代码
public static byte[] createPdf(List<String> htmlPages, PageSize pageSize, boolean rotate) throws IOException
ConverterProperties properties = new ConverterProperties();
// Register classpath protocol handler to be able to load HTML resources from class patch
org.apache.catalina.webresources.TomcatURLStreamHandlerFactory.register();
properties.setBaseUri("classpath:/");
// properties.setBaseUri(baseUri);
FontProvider fontProvider = new DefaultFontProvider(true,false,false);
properties.setFontProvider(fontProvider);
ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
PdfDocument pdf = new PdfDocument(new PdfWriter(byteArrayOutputStream));
PdfMerger merger = new PdfMerger(pdf);
for (String htmlPage : htmlPages)
ByteArrayOutputStream baos = new ByteArrayOutputStream();
PdfDocument temp = new PdfDocument(new PdfWriter(baos));
if(rotate)
temp.setDefaultPageSize(pageSize.rotate()); /** Page Size and Orientation */
else
temp.setDefaultPageSize(pageSize); /** Page Size and Orientation */
HtmlConverter.convertToPdf(htmlPage, temp, properties);
temp = new PdfDocument(new PdfReader(new ByteArrayInputStream(baos.toByteArray())));
merger.merge(temp, 1, temp.getNumberOfPages());
temp.close();
pdf.close();
byteArrayOutputStream.flush(); // Tried this
byteArrayOutputStream.close(); // Tried this
byte[] byteArray = byteArrayOutputStream.toByteArray();
Timestamp timestamp = new Timestamp(System.currentTimeMillis());
try (FileOutputStream fileOuputStream = new FileOutputStream("D:\\Labels\\Label_"+timestamp.getTime()+".pdf"))
fileOuputStream.write(byteArray);
return byteArray;
提前致谢。
编辑 1: 您可以找到 pdf 和 html/css 来重现问题 here。
【问题讨论】:
请分享一个包含该行为的示例结果 PDF 以供分析。 【参考方案1】:当您使用 base64 URI 将图像嵌入到 html 中时,条形码图像发生了一些奇怪的事情:您嵌入了 39578×44 图像,而不是 labelData/barcode.png
中的 205×59 位图图像! (是的,比高度宽近一千倍的图像......)
iText HtmlConverter
很好地嵌入了该图像,但显然 Firefox 在显示具有这些尺寸的图像时存在问题,即使(或可能是因为?)它已转换为标签上所需的尺寸(大约是高度的四倍宽) .至少我的 Firefox 安装在此处停止绘制标签内容。 (请注意,PDF 内容中的绘制顺序不与 HTML 元素的顺序相同;特别是在 PDF 中,数字 3232000...
绘制在条形码之前,而不是之后!)
在 Firefox 上:
在 Acrobat Reader 上:
因此,您可能需要在 HTML 文件中检查条形码图像到 base64 图像 URI 的转换。
【讨论】:
确实,问题在于条形码的尺寸,我从代码中减少了高度和宽度,它就像一个魅力。 :-) 。非常感谢如何运用java组件itext生成pdf
...iText的java类对于那些要产生包含文本,表格,图形的只读文档是很有用的。它的类库尤其与javaServlet有很好的给合。使用iText与PDF能够使你正确的控制Servlet的输出。 在企业的信息系统中,报表处理一直占比较重要的作用,Java... 查看详情
使用 iText 填充现有的 pdf 文本字段
...【问题描述】:我已经创建了一个包含一些文本字段的pdf文档。我可以使用Adobereader填充这些文本字段并将这些值保存在该文件中。我的问题是,我可以使用iText以编程方式执行此操作吗?如果可能,请告诉我在哪里可以找... 查看详情
itext7 pdf与书签合并
...df正确合并但书签无法正常工作,来自scr1pdf的书签在合并文档中始终分别指向scr2pdf。scr1书签1==>指向src2书签1dfDocumentpdfDoc=newPdfDoc 查看详情
itext中文无法显示(代码片段)
/***导出PDF工具com.lowagie.itext测试**@paramresponse*@throwsIOException*@throwsDocumentException*/@RequestMapping(value="/emp/download/pdf",method=RequestMethod.GET)publicvoiddownloadPdf(HttpServletRe 查看详情
iText - 将内容添加到现有的 PDF 文件
...述】:我想用iText做以下事情:(1)解析现有的PDF文件(2)在文档的现有单页上添加一些数据(例如时间戳)(3)写出文件我似乎无法弄清楚如何使用iText执行此操作。在伪代码中我会这样做:Documentdocument=reader.read(input 查看详情
文本字段中的重叠字符 iText PDF
...言特定的字符是重叠的。当它获得焦点时,文本会更改并正确显示。失去焦点时,显示不正确。编辑文本时也能正确显示。文件test_extended_filled.pdf见下文我是如何创建PDF的:在OpenOf 查看详情
如何运用java组件itext生成pdf
...文件:itextpdf-5.2.1.jar(核心组件)、itextpdf-5.2.1-javadoc.jar(API文档)、itextpdf-5.2.1-sources.jar(源代码)、itext-xtra-5.2.1.jar、itext-xtra-5.2.1-javadoc.jar、itext-xtra-5.2.1-sources.jar 使用5步即可生成一个简单的PDF文档。 复制代码 1//1.创建Docu... 查看详情
字体(Myanmar3)无法在 iText 中正确呈现
】字体(Myanmar3)无法在iText中正确呈现【英文标题】:Font(Myanmar3)notrenderingcorrectlyiniText【发布时间】:2016-03-2114:52:27【问题描述】:在jasper-reports部分有这个jasper-report-character-encoding-in-pdf问题。jasper报告中无法解决该问题,因为... 查看详情
java生成pdf文档
依赖jar包:iText-2.1.7.jar、iTextAsian.jar、itext-rtf-2.1.7.jar代码如下:packagecom.servlet;importjava.awt.Color;importjava.io.FileOutputStream;importjava.text.DecimalFormat;importjava.util.Arrays;importjava.uti 查看详情
无法使用 itext7 使用 Java 语言在仅 skia 生成的 pdf 上放置印章(显示倒置印章)
】无法使用itext7使用Java语言在仅skia生成的pdf上放置印章(显示倒置印章)【英文标题】:unabletoputstampusingitext7usingJavalanaguageononlyskiageneratedpdf(showsinvertedstamp)【发布时间】:2018-07-0505:46:48【问题描述】:我无法使用itext7使用Java语... 查看详情
无法正确计算 itext PdfPTable/PdfPCell 高度
...:33:55【问题描述】:我在尝试生成PdfPTable并在将其添加到文档之前计算其高度时遇到问题。PdfPTable的calculateHeights方法返回的高度比页面高度大很多(而表格大约是页面高度的1/4), 查看详情
作家无法解决itext
...时间】:2015-08-1207:23:11【问题描述】:大家好,我知道这可能是我面临的一个简单问题,但我现在被困了一段时间。我是使用itext的新手。基本上我正在做一个小项目,我试图使用现有的pdf来填充数据库中的数据。但在我这样做... 查看详情
使用 iText 7 和 C# 在可访问的 pdf 中将标题添加为 H1
...节和章节来添加标题和书签。然后标题将在可访问的PDF中显示为H1标签。我如何在iText7中做到这一点?【问题讨论】:【参考方案1】:在iText7中,你会这样做:@Testpubli 查看详情
使用 iText 合并不同宽度的 pdf 文档
】使用iText合并不同宽度的pdf文档【英文标题】:MergepdfdocumentsofdifferentwidthusingiText【发布时间】:2014-10-2514:33:58【问题描述】:我在使用iText合并不同宽度的文档时遇到问题。下面是我用来合并的代码。publicstaticvoiddoMerge(List<In... 查看详情
使用 iText 7 将 HTML 模板转换为 PDF:如何移动跨页打印的表格
...我正在使用一个html模板来生成一个带有动态数据的发票文档,这要归功于把手。使用iText7将生成的htm 查看详情
pdf文档:itext的基础知识
一、Itext简介1、API地址:javadoc/index.html如D:/MyJAR/原JAR包/PDF/itext-5.5.3/itextpdf-5.5.3-javadoc/index.html2、功能:aFreeJava-PDF3、中文支持:iTextAsian.jar,现在高版本Itext不支持语言包。4、使用的版本:iTextpdf-5.0.0.jar,iTextAsian-2.0.j 查看详情
使用饼图生成 PDF -iText7
...我们使用tlx-chart作为其最简单的代码。问题:PDF不呈现/显示饼图。日志中没有发现错误。HTML正在完 查看详情
使用 Itext 7 填写 acro-fields 后可编辑的 PDF 为不可编辑/只读
】使用Itext7填写acro-fields后可编辑的PDF为不可编辑/只读【英文标题】:editablePDFtoNon-Editable/ReadOnlyafterfillingintheacro-fieldsusingItext7【发布时间】:2018-06-1516:13:58【问题描述】:好的,我有这个PDF,它是一个可编辑的PDF,需要像这样... 查看详情