Tag: pdf

如何生成PDF?

对于我的Microsoft Surface应用程序,我想生成包含一些图像的PDF。 我应该怎么做呢? 编辑:我不想转换文本或HTML文档,但我想从头开始创建一个pdf。

如何确定线性化PDF文件中第1页的范围(以字节为单位)?

我知道我可以“线性化”PDF文件,例如使用Acrobat SDK或使用商业工具。 这也称为“针对网络优化”,它重新排列PDF,以便第1页可以尽快加载。 以这种方式提供的PDF显示得更快,因为PDF查看器不必等待下载整个PDF。 更新:基于下面的答案,我现在意识到线性化的PDF不仅重新排列,而且还包含有关其自身结构的元数据,以“线性化字典”的forms。 我有一个应用程序,我想预取几个PDF(查询的结果),以期用户希望看到其中一个。 如果我的客户端可以为每个搜索结果下载第1页,只有第1页,那将是非常棒的。 当用户选择其中一个时,可以立即显示第1页,其余部分可以在后台下载。 我正在寻找可以用于服务器端(Windows或Linux)来预处理我的PDF的通用解决方案,以便我可以分别存储和提供第1页和其余部分。 真的,我需要知道的是PDF中的哪一个是正确显示第1页所需的最后一个字节。如果我可以有这个数字,那么其他所有内容都是如此。 我已经浏览了PDF的ISO规范,但文件格式似乎太复杂,我无法简单地解析第1页结束的位置。 另一方面,线性化PDF的工具几乎肯定知道第1页的结束位置。 我对客户提供PDF文件的复杂性并不感兴趣; 这部分已经解决,因为客户端是一个应用程序,而不是一个浏览器,我完全控制。 我也认为它不会帮助我使用AP拆分工具将PDF 拆分为“第1页”PDF和完整的PDF。 如果我这样做,那么我将无法欺骗客户端查看器认为它是单个PDF文件,并且当我用完整的PDF替换“第1页”PDF时会有明显的闪烁。 任何帮助或指针赞赏。 解决方案 (基于Bobrovsky的答案): 正确线性化的PDF以标题行开头(在PDF规范的7.5.2节中定义),例如“%PDF-1.7”,后跟至少四个二进制字符的注释行(定义为128或更高的字节值) 。 例如: %PDF-1.7 %¤¤¤¤ 此标题后面紧跟着线性化字典(在PDF规范的附录F中定义)。 一个例子: 43 0 obj <> endobj 在这个例子中,第一页的末尾是字节偏移5437.这个数据结构很简单,可以使用几乎任何语言进行解析。 “43 0 obj”事物给出了该字典(43)的ID和世代号(线性化文件总是为零)。 字典本身被<>包围,其间是键值对(键有斜杠,如“/ E”)。 这是一个使用正则表达式查找相关数字的C#方法: public int GetPageOneLength(byte[] data) { // According to ISO PDF spec: “The linearization parameter dictionary shall […]

如何使用iTextSharp设置PDF段落的字体?

试着按照这里的例子,我添加了以下代码来创建PDF文档的标题: using (var doc = new Document(PageSize.A4, 50, 50, 25, 25)) { using (var writer = PdfWriter.GetInstance(doc, ms)) { doc.Open(); var docTitle = new Paragraph(“UCSC Direct – Direct Payment Form”); var titleFont = FontFactory.GetFont(“Lucida Sans”, 18, Font.Bold); doc.Add(docTitle); 但是,创建titleFont的尝试不会编译(“ ‘iTextSharp.text.FontFactory.GetFont(string,float,iTextSharp.text.BaseColor)’的最佳重载方法匹配’有一些无效的参数 ”),所以我让intellisenseless通过一次添加一个arg来“帮助”我。 因为对于第一个arg它说它是字体名称,一个字符串,我添加了“Segoe UI”; 下一个arg是字体大小,一个浮点数,所以我加了18.0; 最后,它调用了字体颜色,一个BaseColor类型,所以我添加了BaseColor.Black,最后得到: var titleFont = FontFactory.GetFont(“Segoe UI”, 18.0, BaseColor.BLACK); …但是也不会编译,说“ ‘iTextSharp.text.FontFactory.GetFont(string,string,bool)’的最佳重载方法匹配’有一些无效的参数 ” […]

如何在浏览器中流式传输Pdf时设置文件名?

不确定如何说出这个问题…欢迎编辑! 无论如何……这里去了。 我目前使用Crystal Reports生成Pdfs并将输出流式传输给用户。 我的代码如下所示: System.IO.MemoryStream stream = new System.IO.MemoryStream(); stream = (System.IO.MemoryStream)this.Report.ExportToStream(CrystalDecisions.Shared.ExportFormatType.PortableDocFormat); this.Response.Clear(); this.Response.Buffer = true; this.Response.ContentType = “application/pdf”; this.Response.BinaryWrite(stream.ToArray()); this.Response.End(); 此代码运行后,它将Pdf流式传输到浏览器,打开Acrobat Reader。 效果很好! 我的问题是当用户尝试保存文件时,默认为实际文件名…在这种情况下,它默认为CrystalReportPage.pdf。 无论如何我可以设置这个吗? 如果是这样,怎么样? 任何帮助,将不胜感激。

如何使用iTextSharp为页面添加边框?

是否可以使用iTextSharp为PDF文档中的页面添加边框? 我从头开始生成PDF文件,因此我不需要为现有文档添加边框。 这是我的代码示例: Document pdfDocument = new Document(PageSize.LETTER); Font headerFont = new Font(baseFont, 13); Font font = new Font(baseFont, 10); PdfWriter writer = PdfWriter.GetInstance(pdfDocument, new FileStream(fileName, FileMode.Create)); pdfDocument.Open(); //I add IElements here. pdfDocument.Close();

ITextSharp 4.1.6。 PDF表 – 如何删除每个单元格顶部的空格?

我遇到了ITextSharp表的问题。 我想要没有顶部和底部填充的单元格,以便它们彼此靠近放置。 虽然我已将填充和单元格的前导设置为0,但仍保留了空白区域。 有谁请知道如何删除空白? 编辑: Thanx提示Dylan回答,我设法解决了我的问题。 如果有人遇到类似的问题,这是源代码段 Document document = new Document(PageSize.A4, 5, 5, 10, 10); using (FileStream fs = new FileStream(“C:\\Users\\brum\\Desktop\\untitled.pdf”, FileMode.Create)) { iTextSharp.text.pdf.PdfWriter.GetInstance(document, fs); document.Open(); PdfPTable table = new PdfPTable(2); PdfPCell cell = new PdfPCell(new Phrase(“Spanning 2 cols”)); cell.Colspan = 2; cell.HorizontalAlignment = 1; cell.Padding = 0f; cell.UseAscender = true; table.AddCell(cell); table.AddCell(“Next row […]

使用免费软件库使用C#编程压缩现有PDF

我一直在谷歌上搜索如何压缩现有的pdf (大小)。 我的问题是 我不能使用任何应用程序,因为它需要由C#程序完成。 我不能使用任何付费图书馆,因为我的客户不想退出预算。 因此PAID库肯定是NO 我做了最近2天的家庭工作,并使用iTextSharp,BitMiracle找到了一个解决方案,但没有用,因为前者只减少了1%的文件,后来一个是付费的。 我也遇到了PDFcompressNET和pdftk,但我找不到他们的.dll。 实际上,pdf是保险单,有2-3张图片(黑白),大约70页,大小为5 MB。 我只需要pdf的输出(不能是任何其他格式)

如何知道浏览器是否有PDF查看器?

我正在将PDF视为iframe。 它工作正常。 但是一些客户端无法在IE中看到它。 他们将其作为下载选项。 如何识别浏览器是否具有pdf查看器并提示用户他没有pdf查看器? 注意:我使用的是asp.net mvc 5(c#)。 我试过这个 ,但是没有帮助我。 我的一些客户端的问题有Adobe PDF,所以下面的答案没有问题。 但那些有nitropdf或chrome pdf查看器的人,下面的回答并没有帮助我。 我想识别所有的pdf查看器。 否则如果客户端有某种pdf查看器,那么还会显示没有安装pdf查看器的警报。 那是错的。 我通过获得عبدالنورالتومي的答案来应用此代码,它适用于chrome和mozilla。 这是我修改过的js 。 但IE仍然没有回应它。 我不知道如何在IE中检查它是否有pdf查看器。 对于IE,虽然有pdf查看器,但我得到了以下错误:

在c#中无需预览即可打印pdf

我试图在Windows应用程序中使用C#打印.pdf和.tif文件。 打印成功完成,但我的问题是Adobe阅读器正在打开pdf文件的背景,并打开tif文件的Windows打印对话框。 实际上我将使用服务运行我的方法,因此这些过程应该以静默方式进行。 我该怎么做才能避免这种情况? 这是我的代码 public void PrintDocument(string filepath) { //PrintDialog pd = new PrintDialog(); printProcess.StartInfo.FileName = filepath; //Also tried usecellexcecution=false; //Redirect=true; something like this printProcess.StartInfo.WindowStyle = ProcessWindowStyle.Hidden; printProcess.StartInfo.Verb = “Print”; printProcess.StartInfo.CreateNoWindow = true; PrinterSettings setting = new PrinterSettings(); setting.DefaultPageSettings.Landscape = true; printProcess.Start(); printProcess.CloseMainWindow(); } 我曾尝试在MSDN中使用RawprinterHelper ,但它会打印垃圾字符。

如何检查PDF页面的嵌入图像的分辨率(DPI)?

有没有免费的库,可以用来获取PDF文件中包含的DPI图像的分辨率? 我尝试了以下代码,使用PDFSharp,但它返回的DPI不正确。 例如,它显示96dpi,而它应该是150dpi: using (PdfDocument pdf = PdfReader.Open(sourcePdf)) { for (int i = 0; i < pdf.Pages.Count; i++) { XGraphics xGraphics = XGraphics.FromPdfPage(pdf.Pages[i]); float dpi = xGraphics.Graphics.DpiX; } }