나는 윈도우 응용 프로그램 8.1 (윈도우 전화가 아님)에서 pdf 파일을 생성하려고하는데, pdf를 생성하기위한 무료 패키지를 찾지 못하여 포스트 스크립트를 사용하여 시도했다. 있다면 알려주세요. 여기 PDF 생성 Windows 응용 프로그램에서 8.1
내가 포스트 스크립트를 사용하여 시도 샘플 코드,var file = await ApplicationData.Current.LocalFolder.CreateFileAsync("MyFirstPdf.pdf", Windows.Storage.CreationCollisionOption.ReplaceExisting);
using (var stream = await System.IO.WindowsRuntimeStorageExtensions.OpenStreamForWriteAsync(file))
{
using (var writer = new System.IO.StreamWriter(stream, System.Text.Encoding.UTF8))
{
List<long> xrefs = new List<long>();
writer.WriteLine("%PDF-1.7");
writer.Write("%");
writer.Flush();
byte[] bytes = { 0, 0, 0, 0 };
stream.Write(bytes, 0, 4);
stream.Flush();
writer.WriteLine("");
writer.Flush();
stream.Flush();
xrefs.Add(stream.Position);
writer.WriteLine("1 0 obj");
writer.WriteLine("<<");
writer.WriteLine(" /Type /Catalog");
writer.WriteLine(" /Pages 2 0 R");
writer.WriteLine(">>");
writer.WriteLine("endobj");
writer.Flush();
stream.Flush();
xrefs.Add(stream.Position);
writer.WriteLine("2 0 obj");
writer.WriteLine("<<");
writer.WriteLine(" /Type /Pages");
writer.WriteLine(" /Kids [3 0 R]");
writer.WriteLine(" /Count 1");
writer.WriteLine(">>");
writer.WriteLine("endobj");
writer.Flush();
stream.Flush();
xrefs.Add(stream.Position);
writer.WriteLine("3 0 obj");
writer.WriteLine("<<");
writer.WriteLine(" /Type /Page");
writer.WriteLine(" /Parent 2 0 R");
writer.WriteLine(" /MediaBox [0 0 612 792]");
// Default userspace units: 72/inch, origin at bottom left
writer.WriteLine(" /Resources");
writer.WriteLine(" <<");
writer.WriteLine(" /ProcSet [/PDF/Text]");
// This PDF uses only the Text ability
writer.WriteLine(" /Font");
writer.WriteLine(" <<");
writer.WriteLine(" /F0 4 0 R");
// I will define three fonts, #4, #5 and #6
writer.WriteLine(" /F1 5 0 R");
writer.WriteLine(" /F2 6 0 R");
writer.WriteLine(" >>");
writer.WriteLine(" >>");
writer.WriteLine(" /Contents 7 0 R");
writer.WriteLine(">>");
writer.WriteLine("endobj");
writer.Flush();
stream.Flush();
xrefs.Add(stream.Position);
writer.WriteLine("4 0 obj");
writer.WriteLine("<<");
writer.WriteLine(" /Type /Font");
writer.WriteLine(" /Subtype /Type1");
writer.WriteLine(" /Encoding /WinAnsiEncoding");
writer.WriteLine(" /BaseFont /Times-Roman");
writer.WriteLine(">>");
writer.Flush();
stream.Flush();
xrefs.Add(stream.Position);
writer.WriteLine("5 0 obj");
writer.WriteLine("<<");
writer.WriteLine(" /Type /Font");
writer.WriteLine(" /Subtype /Type1");
writer.WriteLine(" /Encoding /WinAnsiEncoding");
writer.WriteLine(" /BaseFont /Times-Bold");
writer.WriteLine(">>");
writer.Flush();
stream.Flush();
xrefs.Add(stream.Position);
writer.WriteLine("6 0 obj");
writer.WriteLine("<<");
writer.WriteLine(" /Type /Font");
writer.WriteLine(" /Subtype /Type1");
writer.WriteLine(" /Encoding /WinAnsiEncoding");
writer.WriteLine(" /BaseFont /Times-Italic");
writer.WriteLine(">>");
writer.Flush();
stream.Flush();
xrefs.Add(stream.Position);
System.Text.StringBuilder sb = new System.Text.StringBuilder();
//Lables
sb.AppendLine("BT");
sb.AppendLine("/F0 15 Tf");
sb.AppendLine("20 TL");
sb.AppendLine("30.0 760.0 Td");
sb.AppendLine("(testlist demo1)' Tj");
sb.AppendLine("ET");
writer.WriteLine("7 0 obj");
writer.WriteLine("<<");
writer.WriteLine(" /Length " + sb.Length);
writer.WriteLine(">>");
writer.WriteLine("stream");
writer.Write(sb.ToString());
writer.WriteLine(" q"); //added
writer.WriteLine(" 156 0 0 272 100 200 cm");
writer.WriteLine(" /Img1 Do");
writer.WriteLine(" Q");
writer.WriteLine("endstream");
writer.WriteLine("endobj");
writer.Flush();
stream.Flush();
dynamic xref_pos = stream.Position;
writer.WriteLine("xref");
writer.WriteLine("1 " + xrefs.Count);
long xref = 0;
foreach (long xref_loopVariable in xrefs)
{
xref = xref_loopVariable;
writer.WriteLine("{0:0000000000} {1:00000} n", xref, 0);
}
// PDF-TRAILER. Every PDF ends with this trailer.
writer.WriteLine("trailer");
writer.WriteLine("<<");
writer.WriteLine(" /Size " + xrefs.Count);
writer.WriteLine(" /Root 1 0 R");
writer.WriteLine(">>");
writer.WriteLine("startxref");
writer.WriteLine(xref_pos);
writer.WriteLine("%%EOF");
}
예, 그것은 잘 작동하고 마이크로 소프트 가장자리에서 제대로 작동하는 PDF 파일을 생성하지만, 어도비 리더와 같은 파일을 여는하면서주고있다이다 빈 출력 ..
또 다른 해결책 나는 PDFDocument를 사용하여 시도했지만 그 역시 동일한 문제가 발생합니다.
제발 도와주세요. 응답을 기다리고 있습니다.
감사의 말
으로 진행하는 [Rotativa] (https://github.com/webgio/Rotativa)가 도움이 될 수도에보고 한 것으로 충분히 의심! –
Itextsharp는 PDF 조작을위한 좋은 라이브러리입니다 – lyz
코드가 포스트 스크립트, PDF를 생성하지 않습니다. 중요한 차이점이 있습니다! PostScirpt (Windows 자체가 인쇄 시스템에서 할 수있는 PostScirpt)를 생성 할 수 있다면 Ghostscript는 그로부터 PDF 파일을 생성 할 수 있습니다. PDF 파일을 잘못 작성한 이유는 어디에도 적어 두지 않았기 때문입니다. 대중에게 어딘가에 게시하고 아마도 내가 그에게 잘못된 점을 말할 수 있습니다. – KenS