我想制作一个完全由图像文件夹组成的 PDF 文件,最好不要添加任何压缩或杂乱内容。是否有任何程序可以让我通过脚本或 API 手动创作 PDF 文件?重要的是 a) 我的 JPEG 不会被第二次压缩,并且 b) 它们以原始分辨率显示,没有边框。(换句话说,我希望我的 PDF 文件只包含每页以 0,0 为中心的纯 JPG 图像数据,大小正确。)据我所知,大多数创作程序都会重新压缩图像并添加自己的布局内容。
答案1
你说“手动”,我想这会让一些人感到困惑。你实际上并不是说你想写原始 PDF,对吧?下面是使用开源iTextSharp 库(5.1.1.0)。将变量设置FolderWithImages
为包含图像的文件夹和PdfFileName
要剔除的 PDF,它将获取文件夹中的所有 JPG 并创建 PDF。此代码非常简单,但您可以执行很多操作,例如调整大小、缩放等。iTextSharp 及其父项目 iText 有大量代码。
using System;
using System.ComponentModel;
using System.IO;
using System.Windows.Forms;
using iTextSharp.text;
using iTextSharp.text.pdf;
namespace WindowsFormsApplication2
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
//The folder containing our images
string FolderWithImages = Environment.GetFolderPath(Environment.SpecialFolder.Desktop);
//The PDF that we will output
string PdfFileName = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.Desktop), "ImagesCombined.pdf");
//Create a basic stream to write to
using (FileStream fs = new FileStream(PdfFileName, FileMode.Create, FileAccess.Write, FileShare.None))
{
//Create a new PDF document
using (Document doc = new Document())
{
//Bind a the document to the stream
using (PdfWriter w = PdfWriter.GetInstance(doc, fs))
{
//Open our document for writing
doc.Open();
//Will hold an instance of our image
iTextSharp.text.Image img;
//Grab all JPGs from the given folder and loop through them
string[] Images = Directory.GetFiles(FolderWithImages, "*.jpg", SearchOption.TopDirectoryOnly);
foreach (string i in Images)
{
//Get the JPG as an iTextSharp "image"
img = iTextSharp.text.Image.GetInstance(i);
//Tell the image that when placed we want it at (0,0)
img.SetAbsolutePosition(0, 0);
//Tell the system that the next "page" that we add should be the dimension of the image
doc.SetPageSize(new iTextSharp.text.Rectangle(0, 0, img.Width, img.Height));
//Add a new blank page
doc.NewPage();
//Put the image on the blank page
doc.Add(img);
}
//Close our output PDF
doc.Close();
}
}
}
this.Close();
}
}
}
答案2
不建议胆小的人手动创建 PDF 文件!如果您真的想尝试,我们在博客上写了一系列关于手动创建 PDF 文件的教程http://blog.idrsolutions.com/2010/09/grow-your-own-pdf-file-part-1-pdf-objects-and-data-types/